83 |
# ifdef ALLOW_KPP |
# ifdef ALLOW_KPP |
84 |
# include "KPP.h" |
# include "KPP.h" |
85 |
# endif |
# endif |
|
# ifdef ALLOW_GMREDI |
|
|
# include "GMREDI.h" |
|
|
# endif |
|
86 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
87 |
#ifdef ALLOW_TIMEAVE |
#ifdef ALLOW_TIMEAVE |
88 |
#include "TIMEAVE_STATV.h" |
#include "TIMEAVE_STATV.h" |
97 |
C | |
C | |
98 |
C |-- CALC_PHI_HYD |
C |-- CALC_PHI_HYD |
99 |
C | |
C | |
100 |
|
C |-- STORE_PRESSURE |
101 |
|
C | |
102 |
C |-- MOM_FLUXFORM |
C |-- MOM_FLUXFORM |
103 |
C | |
C | |
104 |
C |-- MOM_VECINV |
C |-- MOM_VECINV |
152 |
_RL phiSurfY(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
_RL phiSurfY(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
153 |
_RL KappaRU (1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr) |
_RL KappaRU (1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr) |
154 |
_RL KappaRV (1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr) |
_RL KappaRV (1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr) |
|
_RL sigmaX (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
|
|
_RL sigmaY (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
|
|
_RL sigmaR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
|
155 |
|
|
156 |
INTEGER iMin, iMax |
INTEGER iMin, iMax |
157 |
INTEGER jMin, jMax |
INTEGER jMin, jMax |
217 |
C uninitialised but inert locations. |
C uninitialised but inert locations. |
218 |
DO j=1-OLy,sNy+OLy |
DO j=1-OLy,sNy+OLy |
219 |
DO i=1-OLx,sNx+OLx |
DO i=1-OLx,sNx+OLx |
|
DO k=1,Nr |
|
|
phiHyd(i,j,k) = 0. _d 0 |
|
|
KappaRU(i,j,k) = 0. _d 0 |
|
|
KappaRV(i,j,k) = 0. _d 0 |
|
|
sigmaX(i,j,k) = 0. _d 0 |
|
|
sigmaY(i,j,k) = 0. _d 0 |
|
|
sigmaR(i,j,k) = 0. _d 0 |
|
|
ENDDO |
|
220 |
rhoKM1 (i,j) = 0. _d 0 |
rhoKM1 (i,j) = 0. _d 0 |
221 |
rhok (i,j) = 0. _d 0 |
rhok (i,j) = 0. _d 0 |
222 |
phiSurfX(i,j) = 0. _d 0 |
phiSurfX(i,j) = 0. _d 0 |
224 |
ENDDO |
ENDDO |
225 |
ENDDO |
ENDDO |
226 |
|
|
227 |
|
C-- Call to routine for calculation of |
228 |
|
C Eliassen-Palm-flux-forced U-tendency, |
229 |
|
C if desired: |
230 |
|
#ifdef INCLUDE_EP_FORCING_CODE |
231 |
|
CALL CALC_EP_FORCING(myThid) |
232 |
|
#endif |
233 |
|
|
234 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
235 |
C-- HPF directive to help TAMC |
C-- HPF directive to help TAMC |
236 |
CHPF$ INDEPENDENT |
CHPF$ INDEPENDENT |
264 |
C-- Set up work arrays that need valid initial values |
C-- Set up work arrays that need valid initial values |
265 |
DO j=1-OLy,sNy+OLy |
DO j=1-OLy,sNy+OLy |
266 |
DO i=1-OLx,sNx+OLx |
DO i=1-OLx,sNx+OLx |
267 |
|
DO k=1,Nr |
268 |
|
phiHyd(i,j,k) = 0. _d 0 |
269 |
|
KappaRU(i,j,k) = 0. _d 0 |
270 |
|
KappaRV(i,j,k) = 0. _d 0 |
271 |
|
ENDDO |
272 |
fVerU (i,j,1) = 0. _d 0 |
fVerU (i,j,1) = 0. _d 0 |
273 |
fVerU (i,j,2) = 0. _d 0 |
fVerU (i,j,2) = 0. _d 0 |
274 |
fVerV (i,j,1) = 0. _d 0 |
fVerV (i,j,1) = 0. _d 0 |
348 |
I myThid ) |
I myThid ) |
349 |
ENDIF |
ENDIF |
350 |
|
|
351 |
|
C calculate pressure from phiHyd and store it on common block |
352 |
|
C variable pressure |
353 |
|
CALL STORE_PRESSURE( bi, bj, k, phiHyd, myThid ) |
354 |
|
|
355 |
|
|
356 |
C-- Calculate accelerations in the momentum equations (gU, gV, ...) |
C-- Calculate accelerations in the momentum equations (gU, gV, ...) |
357 |
C and step forward storing the result in gUnm1, gVnm1, etc... |
C and step forward storing the result in gUnm1, gVnm1, etc... |
358 |
IF ( momStepping ) THEN |
IF ( momStepping ) THEN |
399 |
C-- end of dynamics k loop (1:Nr) |
C-- end of dynamics k loop (1:Nr) |
400 |
ENDDO |
ENDDO |
401 |
|
|
|
|
|
|
|
|
402 |
C-- Implicit viscosity |
C-- Implicit viscosity |
403 |
IF (implicitViscosity.AND.momStepping) THEN |
IF (implicitViscosity.AND.momStepping) THEN |
404 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
|
idkey = iikey + 3 |
|
405 |
CADJ STORE gUNm1(:,:,:,bi,bj) = comlev1_bibj , key=ikey, byte=isbyte |
CADJ STORE gUNm1(:,:,:,bi,bj) = comlev1_bibj , key=ikey, byte=isbyte |
406 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
407 |
CALL IMPLDIFF( |
CALL IMPLDIFF( |
410 |
U gUNm1, |
U gUNm1, |
411 |
I myThid ) |
I myThid ) |
412 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
|
idkey = iikey + 4 |
|
413 |
CADJ STORE gVNm1(:,:,:,bi,bj) = comlev1_bibj , key=ikey, byte=isbyte |
CADJ STORE gVNm1(:,:,:,bi,bj) = comlev1_bibj , key=ikey, byte=isbyte |
414 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
415 |
CALL IMPLDIFF( |
CALL IMPLDIFF( |
429 |
|
|
430 |
#ifdef INCLUDE_CD_CODE |
#ifdef INCLUDE_CD_CODE |
431 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
|
idkey = iikey + 5 |
|
432 |
CADJ STORE vVelD(:,:,:,bi,bj) = comlev1_bibj , key=ikey, byte=isbyte |
CADJ STORE vVelD(:,:,:,bi,bj) = comlev1_bibj , key=ikey, byte=isbyte |
433 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
434 |
CALL IMPLDIFF( |
CALL IMPLDIFF( |
437 |
U vVelD, |
U vVelD, |
438 |
I myThid ) |
I myThid ) |
439 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
|
idkey = iikey + 6 |
|
440 |
CADJ STORE uVelD(:,:,:,bi,bj) = comlev1_bibj , key=ikey, byte=isbyte |
CADJ STORE uVelD(:,:,:,bi,bj) = comlev1_bibj , key=ikey, byte=isbyte |
441 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
442 |
CALL IMPLDIFF( |
CALL IMPLDIFF( |