28 |
C \end{itemize} |
C \end{itemize} |
29 |
CEOI |
CEOI |
30 |
|
|
|
#include "PACKAGES_CONFIG.h" |
|
31 |
#include "GAD_OPTIONS.h" |
#include "GAD_OPTIONS.h" |
|
#ifdef ALLOW_AUTODIFF |
|
|
# include "CPP_OPTIONS.h" |
|
|
#endif |
|
32 |
|
|
33 |
CBOP |
CBOP |
34 |
C !ROUTINE: GAD_ADVECTION |
C !ROUTINE: GAD_ADVECTION |
35 |
|
|
36 |
C !INTERFACE: ========================================================== |
C !INTERFACE: ========================================================== |
37 |
SUBROUTINE GAD_ADVECTION(bi,bj,advectionScheme,tracerIdentity, |
SUBROUTINE GAD_ADVECTION( |
38 |
U Tracer,Gtracer, |
I implicitAdvection, advectionScheme, tracerIdentity, |
39 |
I myTime,myIter,myThid) |
I uVel, vVel, wVel, tracer, |
40 |
|
O gTracer, |
41 |
|
I bi,bj, myTime,myIter,myThid) |
42 |
|
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
43 |
|
|
44 |
C !DESCRIPTION: |
C !DESCRIPTION: |
45 |
C Calculates the tendancy of a tracer due to advection. |
C Calculates the tendancy of a tracer due to advection. |
65 |
#include "SIZE.h" |
#include "SIZE.h" |
66 |
#include "EEPARAMS.h" |
#include "EEPARAMS.h" |
67 |
#include "PARAMS.h" |
#include "PARAMS.h" |
|
#include "DYNVARS.h" |
|
68 |
#include "GRID.h" |
#include "GRID.h" |
69 |
#include "GAD.h" |
#include "GAD.h" |
70 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
73 |
#endif |
#endif |
74 |
|
|
75 |
C !INPUT PARAMETERS: =================================================== |
C !INPUT PARAMETERS: =================================================== |
76 |
C bi,bj :: tile indices |
C implicitAdvection :: vertical advection treated implicitly (later on) |
77 |
C advectionScheme :: advection scheme to use |
C advectionScheme :: advection scheme to use |
78 |
C tracerIdentity :: identifier for the tracer (required only for OBCS) |
C tracerIdentity :: identifier for the tracer (required only for OBCS) |
79 |
C Tracer :: tracer field |
C uVel :: velocity, zonal component |
80 |
|
C vVel :: velocity, meridional component |
81 |
|
C wVel :: velocity, vertical component |
82 |
|
C tracer :: tracer field |
83 |
|
C bi,bj :: tile indices |
84 |
C myTime :: current time |
C myTime :: current time |
85 |
C myIter :: iteration number |
C myIter :: iteration number |
86 |
C myThid :: thread number |
C myThid :: thread number |
87 |
INTEGER bi,bj |
LOGICAL implicitAdvection |
88 |
INTEGER advectionScheme |
INTEGER advectionScheme |
89 |
INTEGER tracerIdentity |
INTEGER tracerIdentity |
90 |
_RL Tracer(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr,nSx,nSy) |
_RL uVel (1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr,nSx,nSy) |
91 |
|
_RL vVel (1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr,nSx,nSy) |
92 |
|
_RL wVel (1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr,nSx,nSy) |
93 |
|
_RL tracer(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr,nSx,nSy) |
94 |
|
INTEGER bi,bj |
95 |
_RL myTime |
_RL myTime |
96 |
INTEGER myIter |
INTEGER myIter |
97 |
INTEGER myThid |
INTEGER myThid |
451 |
CADJ & = comlev1_bibj_k_gad, key=kkey, byte=isbyte |
CADJ & = comlev1_bibj_k_gad, key=kkey, byte=isbyte |
452 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
453 |
|
|
454 |
|
IF ( .NOT.implicitAdvection ) THEN |
455 |
C- Compute vertical advective flux in the interior: |
C- Compute vertical advective flux in the interior: |
456 |
IF (advectionScheme.EQ.ENUM_FLUX_LIMIT) THEN |
IF (advectionScheme.EQ.ENUM_FLUX_LIMIT) THEN |
457 |
CALL GAD_FLUXLIMIT_ADV_R( |
CALL GAD_FLUXLIMIT_ADV_R( |
458 |
& bi,bj,k,deltaTtracer,rTrans,wVel,localTijk,af,myThid) |
& bi,bj,k,deltaTtracer,rTrans,wVel,localTijk,af,myThid) |
459 |
ELSEIF (advectionScheme.EQ.ENUM_DST3 ) THEN |
ELSEIF (advectionScheme.EQ.ENUM_DST3 ) THEN |
460 |
CALL GAD_DST3_ADV_R( |
CALL GAD_DST3_ADV_R( |
461 |
& bi,bj,k,deltaTtracer,rTrans,wVel,localTijk,af,myThid) |
& bi,bj,k,deltaTtracer,rTrans,wVel,localTijk,af,myThid) |
462 |
ELSEIF (advectionScheme.EQ.ENUM_DST3_FLUX_LIMIT ) THEN |
ELSEIF (advectionScheme.EQ.ENUM_DST3_FLUX_LIMIT ) THEN |
463 |
CALL GAD_DST3FL_ADV_R( |
CALL GAD_DST3FL_ADV_R( |
464 |
& bi,bj,k,deltaTtracer,rTrans,wVel,localTijk,af,myThid) |
& bi,bj,k,deltaTtracer,rTrans,wVel,localTijk,af,myThid) |
465 |
ELSE |
ELSE |
466 |
STOP 'GAD_ADVECTION: adv. scheme incompatibale with mutli-dim' |
STOP 'GAD_ADVECTION: adv. scheme incompatibale with mutli-dim' |
467 |
|
ENDIF |
468 |
ENDIF |
ENDIF |
469 |
C- add the advective flux to fVerT |
C- add the advective flux to fVerT |
470 |
DO j=1-Oly,sNy+Oly |
DO j=1-Oly,sNy+Oly |