422 |
ENDIF |
ENDIF |
423 |
#endif /* ALLOW_OCN_COMPON_INTERF */ |
#endif /* ALLOW_OCN_COMPON_INTERF */ |
424 |
|
|
425 |
C-- Balance and Apply exchanges to surface forcing |
iMin = 1-OLx |
426 |
|
iMax = sNx+OLx |
427 |
|
jMin = 1-OLy |
428 |
|
jMax = sNy+OLy |
429 |
|
|
430 |
|
C--- Determines forcing terms based on external fields |
431 |
|
C relaxation terms, etc. |
432 |
|
#ifdef ALLOW_DEBUG |
433 |
|
IF (debugMode) CALL DEBUG_CALL('EXTERNAL_FORCING_SURF',myThid) |
434 |
|
#endif |
435 |
|
#ifdef ALLOW_AUTODIFF_TAMC |
436 |
|
CADJ STORE salt, theta = comlev1, key = ikey_dynamics, |
437 |
|
CADJ & kind = isbyte |
438 |
|
#else /* ALLOW_AUTODIFF_TAMC */ |
439 |
|
C-- if fluid is not water, by-pass surfaceForcing, find_rho, gmredi |
440 |
|
C and all vertical mixing schemes, but keep OBCS_CALC |
441 |
IF ( fluidIsWater ) THEN |
IF ( fluidIsWater ) THEN |
442 |
CALL EXTERNAL_FORCING_ADJUST( myTime, myIter, myThid ) |
#endif /* ALLOW_AUTODIFF_TAMC */ |
443 |
ENDIF |
CALL EXTERNAL_FORCING_SURF( |
444 |
|
I iMin, iMax, jMin, jMax, |
445 |
|
I myTime, myIter, myThid ) |
446 |
|
|
447 |
#ifdef ALLOW_OFFLINE |
#ifdef ALLOW_OFFLINE |
448 |
IF ( .NOT. useOffLine ) THEN |
IF ( .NOT. useOffLine ) THEN |
451 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
452 |
C-- HPF directive to help TAMC |
C-- HPF directive to help TAMC |
453 |
CHPF$ INDEPENDENT |
CHPF$ INDEPENDENT |
|
#else /* ALLOW_AUTODIFF_TAMC */ |
|
|
C if fluid is not water, by-pass find_rho, gmredi, surfaceForcing |
|
|
C and all vertical mixing schemes, but keep OBCS_CALC |
|
|
IF ( fluidIsWater ) THEN |
|
454 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
455 |
DO bj=myByLo(myThid),myByHi(myThid) |
DO bj=myByLo(myThid),myByHi(myThid) |
456 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
533 |
ENDDO |
ENDDO |
534 |
ENDDO |
ENDDO |
535 |
|
|
|
iMin = 1-OLx |
|
|
iMax = sNx+OLx |
|
|
jMin = 1-OLy |
|
|
jMax = sNy+OLy |
|
|
|
|
536 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
537 |
CADJ STORE theta(:,:,:,bi,bj) = comlev1_bibj, key=itdkey, |
CADJ STORE theta(:,:,:,bi,bj) = comlev1_bibj, key=itdkey, |
538 |
CADJ & kind = isbyte |
CADJ & kind = isbyte |
727 |
ENDIF |
ENDIF |
728 |
#endif /* ALLOW_DIAGNOSTICS */ |
#endif /* ALLOW_DIAGNOSTICS */ |
729 |
|
|
730 |
C-- Determines forcing terms based on external fields |
C-- This is where EXTERNAL_FORCING_SURF(bi,bj) used to be called; |
731 |
C relaxation terms, etc. |
C now called earlier, before bi,bj loop. |
|
#ifdef ALLOW_DEBUG |
|
|
IF (debugMode) CALL DEBUG_CALL('EXTERNAL_FORCING_SURF',myThid) |
|
|
#endif |
|
|
#ifdef ALLOW_AUTODIFF_TAMC |
|
|
CADJ STORE EmPmR(:,:,bi,bj) |
|
|
CADJ & = comlev1_bibj, key=itdkey, |
|
|
CADJ & kind = isbyte |
|
|
# ifdef EXACT_CONSERV |
|
|
CADJ STORE PmEpR(:,:,bi,bj) |
|
|
CADJ & = comlev1_bibj, key=itdkey, |
|
|
CADJ & kind = isbyte |
|
|
# endif |
|
|
# ifdef NONLIN_FRSURF |
|
|
CADJ STORE hFac_surfC(:,:,bi,bj) |
|
|
CADJ & = comlev1_bibj, key=itdkey, |
|
|
CADJ & kind = isbyte |
|
|
CADJ STORE recip_hFacC(:,:,:,bi,bj) |
|
|
CADJ & = comlev1_bibj, key=itdkey, |
|
|
CADJ & kind = isbyte |
|
|
# if (defined (ALLOW_PTRACERS)) |
|
|
CADJ STORE surfaceForcingS(:,:,bi,bj) = comlev1_bibj, key=itdkey, |
|
|
CADJ & kind = isbyte |
|
|
CADJ STORE surfaceForcingT(:,:,bi,bj) = comlev1_bibj, key=itdkey, |
|
|
CADJ & kind = isbyte |
|
|
# endif /* ALLOW_PTRACERS */ |
|
|
# endif /* NONLIN_FRSURF */ |
|
|
#endif |
|
|
CALL EXTERNAL_FORCING_SURF( |
|
|
I bi, bj, iMin, iMax, jMin, jMax, |
|
|
I myTime, myIter, myThid ) |
|
|
#ifdef ALLOW_AUTODIFF_TAMC |
|
|
# ifdef EXACT_CONSERV |
|
|
cph-test |
|
|
cphCADJ STORE PmEpR(:,:,bi,bj) |
|
|
cphCADJ & = comlev1_bibj, key=itdkey, |
|
|
cphCADJ & kind = isbyte |
|
|
# endif |
|
|
#endif |
|
732 |
|
|
733 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
734 |
cph needed for KPP |
cph needed for KPP |
871 |
ENDDO |
ENDDO |
872 |
ENDDO |
ENDDO |
873 |
|
|
874 |
#ifdef ALLOW_BALANCE_RELAX |
#ifdef ALLOW_OFFLINE |
|
# ifdef ALLOW_AUTODIFF_TAMC |
|
|
CADJ STORE SSSrlx = comlev1, key=ikey_dynamics, kind=isbyte |
|
|
CADJ STORE SSSrlxTile = comlev1, key=ikey_dynamics, kind=isbyte |
|
|
CADJ STORE SSSrlxGlob = comlev1, key=ikey_dynamics, kind=isbyte |
|
|
CADJ STORE SSTrlx = comlev1, key=ikey_dynamics, kind=isbyte |
|
|
CADJ STORE SSTrlxTile = comlev1, key=ikey_dynamics, kind=isbyte |
|
|
CADJ STORE SSTrlxGlob = comlev1, key=ikey_dynamics, kind=isbyte |
|
|
# endif /* ALLOW_AUTODIFF_TAMC */ |
|
|
CALL BALANCE_RELAX( myTime, myIter, myThid ) |
|
|
#endif /* ALLOW_BALANCE_RELAX */ |
|
|
|
|
|
#ifndef ALLOW_AUTODIFF_TAMC |
|
|
C--- if fluid Is Water: end |
|
875 |
ENDIF |
ENDIF |
876 |
#endif |
#endif |
877 |
|
|
878 |
#ifdef ALLOW_OFFLINE |
#ifndef ALLOW_AUTODIFF_TAMC |
879 |
|
C--- if fluid Is Water: end |
880 |
ENDIF |
ENDIF |
881 |
#endif |
#endif |
882 |
|
|