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 |
160 |
INTEGER k, km1, kp1, kup, kDown |
INTEGER k, km1, kp1, kup, kDown |
161 |
|
|
162 |
Cjmc : add for phiHyd output <- but not working if multi tile per CPU |
Cjmc : add for phiHyd output <- but not working if multi tile per CPU |
163 |
c CHARACTER*(MAX_LEN_MBUF) suff |
c CHARACTER*(MAX_LEN_MBUF) suff |
164 |
c LOGICAL DIFFERENT_MULTIPLE |
c LOGICAL DIFFERENT_MULTIPLE |
165 |
c EXTERNAL DIFFERENT_MULTIPLE |
c EXTERNAL DIFFERENT_MULTIPLE |
166 |
Cjmc(end) |
Cjmc(end) |
167 |
|
|
168 |
C--- The algorithm... |
C--- The algorithm... |
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 |
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( |
449 |
ENDIF |
ENDIF |
450 |
|
|
451 |
Cjmc : add for phiHyd output <- but not working if multi tile per CPU |
Cjmc : add for phiHyd output <- but not working if multi tile per CPU |
452 |
c IF ( DIFFERENT_MULTIPLE(dumpFreq,myTime+deltaTClock,myTime) |
c IF ( DIFFERENT_MULTIPLE(dumpFreq,myTime+deltaTClock,myTime) |
453 |
c & .AND. buoyancyRelation .eq. 'ATMOSPHERIC' ) THEN |
c & .AND. buoyancyRelation .ne. 'OCEANIC' ) THEN |
454 |
c WRITE(suff,'(I10.10)') myIter+1 |
c WRITE(suff,'(I10.10)') myIter+1 |
455 |
c CALL WRITE_FLD_XYZ_RL('PH.',suff,phiHyd,myIter+1,myThid) |
c CALL WRITE_FLD_XYZ_RL('PH.',suff,phiHyd,myIter+1,myThid) |
456 |
c ENDIF |
c ENDIF |
457 |
Cjmc(end) |
Cjmc(end) |
458 |
|
|
459 |
#ifdef ALLOW_TIMEAVE |
#ifdef ALLOW_TIMEAVE |
466 |
ENDDO |
ENDDO |
467 |
ENDDO |
ENDDO |
468 |
|
|
469 |
|
Cml( |
470 |
|
C In order to compare the variance of phiHydLow of a p/z-coordinate |
471 |
|
C run with etaH of a z/p-coordinate run the drift of phiHydLow |
472 |
|
C has to be removed by something like the following subroutine: |
473 |
|
C CALL REMOVE_MEAN_RL( 1, phiHydLow, maskH, maskH, rA, drF, |
474 |
|
C & 'phiHydLow', myThid ) |
475 |
|
Cml) |
476 |
|
|
477 |
#ifndef DISABLE_DEBUGMODE |
#ifndef DISABLE_DEBUGMODE |
478 |
If (debugMode) THEN |
If (debugMode) THEN |
479 |
CALL DEBUG_STATS_RL(1,EtaN,'EtaN (DYNAMICS)',myThid) |
CALL DEBUG_STATS_RL(1,EtaN,'EtaN (DYNAMICS)',myThid) |