181 |
& + act4*max1*max2*max3 |
& + act4*max1*max2*max3 |
182 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
183 |
|
|
184 |
|
C- Apply AB on T : |
185 |
|
IF ( AdamsBashforth_T ) THEN |
186 |
|
C compute T^n+1/2 (stored in gtNm) extrapolating T forward in time |
187 |
|
#ifdef ALLOW_ADAMSBASHFORTH_3 |
188 |
|
c m1 = 1 + MOD(iterNb+1,2) |
189 |
|
c m2 = 1 + MOD( iterNb ,2) |
190 |
|
CALL ADAMS_BASHFORTH3( |
191 |
|
I bi, bj, 0, Nr, |
192 |
|
I theta(1-OLx,1-OLy,1,bi,bj), |
193 |
|
U gtNm, gt_AB, |
194 |
|
I tempStartAB, iterNb, myThid ) |
195 |
|
#else /* ALLOW_ADAMSBASHFORTH_3 */ |
196 |
|
CALL ADAMS_BASHFORTH2( |
197 |
|
I bi, bj, 0, Nr, |
198 |
|
I theta(1-OLx,1-OLy,1,bi,bj), |
199 |
|
U gtNm1(1-OLx,1-OLy,1,bi,bj), gt_AB, |
200 |
|
I tempStartAB, iterNb, myThid ) |
201 |
|
#endif /* ALLOW_ADAMSBASHFORTH_3 */ |
202 |
|
ENDIF |
203 |
|
|
204 |
C- Tracer tendency needs to be set to zero (moved here from gad_calc_rhs): |
C- Tracer tendency needs to be set to zero (moved here from gad_calc_rhs): |
205 |
DO k=1,Nr |
DO k=1,Nr |
206 |
DO j=1-OLy,sNy+OLy |
DO j=1-OLy,sNy+OLy |
223 |
ENDDO |
ENDDO |
224 |
ENDDO |
ENDDO |
225 |
ENDDO |
ENDDO |
226 |
CADJ STORE theta(:,:,:,bi,bj) = comlev1_bibj , key=itdkey, byte=isbyte |
CADJ STORE wFld(:,:,:) = comlev1_bibj , key=itdkey, byte=isbyte |
227 |
CADJ STORE wFld(:,:,:) = comlev1_bibj , key=itdkey, byte=isbyte |
CADJ STORE theta(:,:,:,bi,bj) = comlev1_bibj , key=itdkey, byte=isbyte |
228 |
|
# ifdef ALLOW_ADAMSBASHFORTH_3 |
229 |
|
CADJ STORE gtNm(:,:,:,bi,bj,1) = comlev1_bibj, key=itdkey, byte=isbyte |
230 |
|
CADJ STORE gtNm(:,:,:,bi,bj,2) = comlev1_bibj, key=itdkey, byte=isbyte |
231 |
|
# else |
232 |
|
CADJ STORE gtNm1(:,:,:,bi,bj) = comlev1_bibj, key=itdkey, byte=isbyte |
233 |
|
# endif |
234 |
#endif /* ALLOW_AUTODIFF */ |
#endif /* ALLOW_AUTODIFF */ |
235 |
|
|
236 |
#ifdef INCLUDE_CALC_DIFFUSIVITY_CALL |
#ifdef INCLUDE_CALC_DIFFUSIVITY_CALL |
518 |
ENDIF |
ENDIF |
519 |
#endif /* ALLOW_TIMEAVE */ |
#endif /* ALLOW_TIMEAVE */ |
520 |
|
|
|
#ifdef ALLOW_ADAMSBASHFORTH_3 |
|
521 |
IF ( AdamsBashforth_T ) THEN |
IF ( AdamsBashforth_T ) THEN |
522 |
C- Save current tracer field (for AB on tracer) and then update tracer |
C- Save current tracer field (for AB on tracer) and then update tracer |
523 |
|
#ifdef ALLOW_ADAMSBASHFORTH_3 |
524 |
CALL CYCLE_AB_TRACER( |
CALL CYCLE_AB_TRACER( |
525 |
I bi, bj, gT_loc, |
I bi, bj, gT_loc, |
526 |
U theta(1-OLx,1-OLy,1,bi,bj), |
U theta(1-OLx,1-OLy,1,bi,bj), |
527 |
O gtNm(1-OLx,1-OLy,1,bi,bj,m2), |
O gtNm(1-OLx,1-OLy,1,bi,bj,m2), |
528 |
I myTime, myIter, myThid ) |
I myTime, myIter, myThid ) |
|
ELSEIF ( tempStepping ) THEN |
|
529 |
#else /* ALLOW_ADAMSBASHFORTH_3 */ |
#else /* ALLOW_ADAMSBASHFORTH_3 */ |
530 |
IF ( tempStepping ) THEN |
CALL CYCLE_AB_TRACER( |
531 |
|
I bi, bj, gT_loc, |
532 |
|
U theta(1-OLx,1-OLy,1,bi,bj), |
533 |
|
O gtNm1(1-OLx,1-OLy,1,bi,bj), |
534 |
|
I myTime, myIter, myThid ) |
535 |
#endif /* ALLOW_ADAMSBASHFORTH_3 */ |
#endif /* ALLOW_ADAMSBASHFORTH_3 */ |
536 |
|
ELSE |
537 |
C- Update tracer fields: T(n) = T** |
C- Update tracer fields: T(n) = T** |
538 |
CALL CYCLE_TRACER( |
CALL CYCLE_TRACER( |
539 |
I bi, bj, |
I bi, bj, |