197 |
IF ( debugLevel .GE. debLevB ) |
IF ( debugLevel .GE. debLevB ) |
198 |
& CALL DEBUG_CALL('LOAD_FIELDS_DRIVER',myThid) |
& CALL DEBUG_CALL('LOAD_FIELDS_DRIVER',myThid) |
199 |
#endif |
#endif |
200 |
|
#ifdef ALLOW_AUTODIFF_TAMC |
201 |
|
cph Important STORE that avoids hidden recomp. of load_fields_driver |
202 |
|
CADJ STORE theta = comlev1, key = ikey_dynamics |
203 |
|
#endif |
204 |
CALL TIMER_START('LOAD_FIELDS_DRIVER [FORWARD_STEP]',myThid) |
CALL TIMER_START('LOAD_FIELDS_DRIVER [FORWARD_STEP]',myThid) |
205 |
CALL LOAD_FIELDS_DRIVER( myTime, myIter, myThid ) |
CALL LOAD_FIELDS_DRIVER( myTime, myIter, myThid ) |
206 |
CALL TIMER_STOP ('LOAD_FIELDS_DRIVER [FORWARD_STEP]',myThid) |
CALL TIMER_STOP ('LOAD_FIELDS_DRIVER [FORWARD_STEP]',myThid) |
322 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
323 |
|
|
324 |
#ifdef ALLOW_GCHEM |
#ifdef ALLOW_GCHEM |
|
C GCHEM package is an interface for any bio-geochemical or |
|
|
C ecosystem model you would like to include. |
|
|
C If GCHEM_SEPARATE_FORCING is not defined, you are |
|
|
C responsible for computing tendency terms for passive |
|
|
C tracers and storing them on a 3DxNumPtracers-array called |
|
|
C gchemTendency in GCHEM_CALC_TENDENCY. This tendency is then added |
|
|
C to gPtr in ptracers_forcing later-on. |
|
|
C If GCHEM_SEPARATE_FORCING is defined, you are reponsible for |
|
|
C UPDATING ptracers directly in GCHEM_FORCING_SEP. This amounts |
|
|
C to a completely separate time step that you have to implement |
|
|
C yourself (Eulerian seems to be fine in most cases). |
|
|
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC |
|
|
C CAVEAT: Up to now, when GCHEM is turned on the field ptracerForcingSurf, |
|
|
C which is needed for KPP is not set properly. ptracerForcingSurf must |
|
|
C be treated differently depending on whether GCHEM_SEPARATE_FORCING |
|
|
C is define or not. TBD. |
|
|
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC |
|
325 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
326 |
CADJ STORE ptracer = comlev1, key = ikey_dynamics |
CADJ STORE ptracer = comlev1, key = ikey_dynamics |
327 |
CADJ STORE theta = comlev1, key = ikey_dynamics |
CADJ STORE theta = comlev1, key = ikey_dynamics |
370 |
# endif |
# endif |
371 |
c |
c |
372 |
# if (defined NONLIN_FRSURF) || (defined ALLOW_DEPTH_CONTROL) |
# if (defined NONLIN_FRSURF) || (defined ALLOW_DEPTH_CONTROL) |
373 |
|
cph-adj-test( |
374 |
|
CADJ STORE theta,salt,wvel = comlev1, key = ikey_dynamics |
375 |
|
cph-adj-test) |
376 |
CADJ STORE etaH = comlev1, key = ikey_dynamics |
CADJ STORE etaH = comlev1, key = ikey_dynamics |
377 |
# ifdef ALLOW_CD_CODE |
# ifdef ALLOW_CD_CODE |
378 |
CADJ STORE etanm1 = comlev1, key = ikey_dynamics |
CADJ STORE etanm1 = comlev1, key = ikey_dynamics |
389 |
IF ( debugLevel .GE. debLevB ) |
IF ( debugLevel .GE. debLevB ) |
390 |
& CALL DEBUG_CALL('THERMODYNAMICS',myThid) |
& CALL DEBUG_CALL('THERMODYNAMICS',myThid) |
391 |
#endif |
#endif |
392 |
|
cph-adj-test( |
393 |
|
CADJ STORE salt,wvel = comlev1, key = ikey_dynamics |
394 |
|
cph-adj-test) |
395 |
CALL TIMER_START('THERMODYNAMICS [FORWARD_STEP]',myThid) |
CALL TIMER_START('THERMODYNAMICS [FORWARD_STEP]',myThid) |
396 |
CALL THERMODYNAMICS( myTime, myIter, myThid ) |
CALL THERMODYNAMICS( myTime, myIter, myThid ) |
397 |
CALL TIMER_STOP ('THERMODYNAMICS [FORWARD_STEP]',myThid) |
CALL TIMER_STOP ('THERMODYNAMICS [FORWARD_STEP]',myThid) |
653 |
CALL TIMER_STOP ('CALC_SURF_DR [FORWARD_STEP]',myThid) |
CALL TIMER_STOP ('CALC_SURF_DR [FORWARD_STEP]',myThid) |
654 |
ENDIF |
ENDIF |
655 |
# ifdef ALLOW_AUTODIFF_TAMC |
# ifdef ALLOW_AUTODIFF_TAMC |
|
cph-test |
|
656 |
CADJ STORE hFac_surfC = comlev1, key = ikey_dynamics |
CADJ STORE hFac_surfC = comlev1, key = ikey_dynamics |
657 |
|
cph-adj-test( |
658 |
|
CADJ STORE salt,theta,vvel = comlev1, key = ikey_dynamics |
659 |
|
cph-adj-test) |
660 |
# endif |
# endif |
661 |
#endif /* NONLIN_FRSURF */ |
#endif /* NONLIN_FRSURF */ |
662 |
|
|