107 |
# endif |
# endif |
108 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
109 |
|
|
|
#ifdef ALLOW_MATRIX |
|
|
# include "MATRIX.h" |
|
|
#endif /* ALLOW_MATRIX */ |
|
|
|
|
110 |
C !INPUT/OUTPUT PARAMETERS: |
C !INPUT/OUTPUT PARAMETERS: |
111 |
C == Routine arguments == |
C == Routine arguments == |
112 |
C myTime - Current time in simulation |
C myTime - Current time in simulation |
159 |
_RL kappaRTr(1-Olx:sNx+Olx,1-Oly:sNy+Oly,PTRACERS_num) |
_RL kappaRTr(1-Olx:sNx+Olx,1-Oly:sNy+Oly,PTRACERS_num) |
160 |
#endif |
#endif |
161 |
_RL kappaRk (1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr) |
_RL kappaRk (1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr) |
|
_RL kp1Msk |
|
|
LOGICAL useVariableK |
|
162 |
INTEGER iMin, iMax |
INTEGER iMin, iMax |
163 |
INTEGER jMin, jMax |
INTEGER jMin, jMax |
164 |
INTEGER bi, bj |
INTEGER bi, bj |
165 |
INTEGER i, j |
INTEGER i, j |
166 |
INTEGER k, km1, kup, kDown |
INTEGER k, km1, kup, kDown |
167 |
|
#ifdef ALLOW_ADAMSBASHFORTH_3 |
168 |
|
INTEGER iterNb, m1, m2 |
169 |
|
#endif |
170 |
|
#ifdef ALLOW_TIMEAVE |
171 |
|
LOGICAL useVariableK |
172 |
|
#endif |
173 |
|
#ifdef ALLOW_PTRACERS |
174 |
INTEGER iTracer, ip |
INTEGER iTracer, ip |
175 |
|
#endif |
176 |
|
|
177 |
CEOP |
CEOP |
178 |
|
|
264 |
ENDDO |
ENDDO |
265 |
ENDDO |
ENDDO |
266 |
|
|
267 |
|
#ifdef ALLOW_ADAMSBASHFORTH_3 |
268 |
|
C- Apply AB on T,S : |
269 |
|
iterNb = myIter |
270 |
|
IF (staggerTimeStep) iterNb = myIter - 1 |
271 |
|
m1 = 1 + MOD(iterNb+1,2) |
272 |
|
m2 = 1 + MOD( iterNb ,2) |
273 |
|
C compute T^n+1/2 (stored in gtNm) extrapolating T forward in time |
274 |
|
IF ( AdamsBashforth_T ) CALL ADAMS_BASHFORTH3( |
275 |
|
I bi, bj, 0, |
276 |
|
U theta, gtNm, |
277 |
|
I tempStartAB, iterNb, myThid ) |
278 |
|
C compute S^n+1/2 (stored in gsNm) extrapolating S forward in time |
279 |
|
IF ( AdamsBashforth_S ) CALL ADAMS_BASHFORTH3( |
280 |
|
I bi, bj, 0, |
281 |
|
U salt, gsNm, |
282 |
|
I saltStartAB, iterNb, myThid ) |
283 |
|
#endif /* ALLOW_ADAMSBASHFORTH_3 */ |
284 |
|
|
285 |
c iMin = 1-OLx |
c iMin = 1-OLx |
286 |
c iMax = sNx+OLx |
c iMax = sNx+OLx |
287 |
c jMin = 1-OLy |
c jMin = 1-OLy |
388 |
jMin = 1-OLy |
jMin = 1-OLy |
389 |
jMax = sNy+OLy |
jMax = sNy+OLy |
390 |
|
|
391 |
kp1Msk=1. |
IF (k.EQ.Nr) THEN |
|
IF (k.EQ.Nr) kp1Msk=0. |
|
392 |
DO j=1-Oly,sNy+Oly |
DO j=1-Oly,sNy+Oly |
393 |
DO i=1-Olx,sNx+Olx |
DO i=1-Olx,sNx+Olx |
394 |
rTransKp1(i,j) = kp1Msk*rTrans(i,j) |
rTransKp1(i,j) = 0. _d 0 |
395 |
ENDDO |
ENDDO |
396 |
ENDDO |
ENDDO |
397 |
|
ELSE |
398 |
|
DO j=1-Oly,sNy+Oly |
399 |
|
DO i=1-Olx,sNx+Olx |
400 |
|
rTransKp1(i,j) = rTrans(i,j) |
401 |
|
ENDDO |
402 |
|
ENDDO |
403 |
|
ENDIF |
404 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
405 |
CADJ STORE rTransKp1(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte |
CADJ STORE rTransKp1(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte |
406 |
#endif |
#endif |
477 |
I kappaRT, |
I kappaRT, |
478 |
U fVerT, |
U fVerT, |
479 |
I myTime,myIter,myThid) |
I myTime,myIter,myThid) |
480 |
|
#ifdef ALLOW_ADAMSBASHFORTH_3 |
481 |
|
IF ( AdamsBashforth_T ) THEN |
482 |
CALL TIMESTEP_TRACER( |
CALL TIMESTEP_TRACER( |
483 |
I bi,bj,iMin,iMax,jMin,jMax,k,tempAdvScheme, |
I bi,bj,iMin,iMax,jMin,jMax,k,tempAdvScheme, |
484 |
I theta, gT, |
I gtNm(1-Olx,1-Oly,1,1,1,m2), |
485 |
|
U gT, |
486 |
I myIter, myThid) |
I myIter, myThid) |
487 |
|
ELSE |
488 |
|
#endif |
489 |
|
CALL TIMESTEP_TRACER( |
490 |
|
I bi,bj,iMin,iMax,jMin,jMax,k,tempAdvScheme, |
491 |
|
I theta, |
492 |
|
U gT, |
493 |
|
I myIter, myThid) |
494 |
|
#ifdef ALLOW_ADAMSBASHFORTH_3 |
495 |
|
ENDIF |
496 |
|
#endif |
497 |
ENDIF |
ENDIF |
498 |
#endif |
#endif |
499 |
|
|
505 |
I kappaRS, |
I kappaRS, |
506 |
U fVerS, |
U fVerS, |
507 |
I myTime,myIter,myThid) |
I myTime,myIter,myThid) |
508 |
|
#ifdef ALLOW_ADAMSBASHFORTH_3 |
509 |
|
IF ( AdamsBashforth_S ) THEN |
510 |
CALL TIMESTEP_TRACER( |
CALL TIMESTEP_TRACER( |
511 |
I bi,bj,iMin,iMax,jMin,jMax,k,saltAdvScheme, |
I bi,bj,iMin,iMax,jMin,jMax,k,saltAdvScheme, |
512 |
I salt, gS, |
I gsNm(1-Olx,1-Oly,1,1,1,m2), |
513 |
|
U gS, |
514 |
I myIter, myThid) |
I myIter, myThid) |
515 |
|
ELSE |
516 |
|
#endif |
517 |
|
CALL TIMESTEP_TRACER( |
518 |
|
I bi,bj,iMin,iMax,jMin,jMax,k,saltAdvScheme, |
519 |
|
I salt, |
520 |
|
U gS, |
521 |
|
I myIter, myThid) |
522 |
|
#ifdef ALLOW_ADAMSBASHFORTH_3 |
523 |
|
ENDIF |
524 |
|
#endif |
525 |
ENDIF |
ENDIF |
526 |
#endif |
#endif |
527 |
#ifdef ALLOW_PTRACERS |
#ifdef ALLOW_PTRACERS |
683 |
ENDIF |
ENDIF |
684 |
#endif /* ALLOW_OBCS */ |
#endif /* ALLOW_OBCS */ |
685 |
|
|
|
#ifdef ALLOW_TIMEAVE |
|
|
IF ( taveFreq.GT. 0. _d 0 .AND. fluidIsWater ) THEN |
|
|
CALL TIMEAVE_SURF_FLUX( bi, bj, myTime, myIter, myThid) |
|
|
ENDIF |
|
|
IF (taveFreq.GT.0. .AND. ivdc_kappa.NE.0.) THEN |
|
|
CALL TIMEAVE_CUMULATE(ConvectCountTave, IVDConvCount, |
|
|
I Nr, deltaTclock, bi, bj, myThid) |
|
|
ENDIF |
|
|
#endif /* ALLOW_TIMEAVE */ |
|
|
|
|
686 |
#endif /* SINGLE_LAYER_MODE */ |
#endif /* SINGLE_LAYER_MODE */ |
687 |
|
|
688 |
C-- end bi,bj loops. |
C-- end bi,bj loops. |