/[MITgcm]/MITgcm/model/src/do_oceanic_phys.F
ViewVC logotype

Diff of /MITgcm/model/src/do_oceanic_phys.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.133 by jmc, Tue Sep 24 01:42:29 2013 UTC revision 1.134 by jmc, Fri Apr 4 20:54:11 2014 UTC
# Line 3  C $Name$ Line 3  C $Name$
3    
4  #include "PACKAGES_CONFIG.h"  #include "PACKAGES_CONFIG.h"
5  #include "CPP_OPTIONS.h"  #include "CPP_OPTIONS.h"
6    #ifdef ALLOW_AUTODIFF
7    # include "AUTODIFF_OPTIONS.h"
8    #endif
9    #ifdef ALLOW_CTRL
10    # include "CTRL_OPTIONS.h"
11    #endif
12    
13  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF
14  # ifdef ALLOW_GMREDI  # ifdef ALLOW_GMREDI
15  #  include "GMREDI_OPTIONS.h"  #  include "GMREDI_OPTIONS.h"
16  # endif  # endif
# Line 17  C $Name$ Line 23  C $Name$
23  # ifdef ALLOW_EXF  # ifdef ALLOW_EXF
24  #  include "EXF_OPTIONS.h"  #  include "EXF_OPTIONS.h"
25  # endif  # endif
26  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF */
27    
28  CBOP  CBOP
29  C     !ROUTINE: DO_OCEANIC_PHYS  C     !ROUTINE: DO_OCEANIC_PHYS
# Line 48  C     == Global variables === Line 54  C     == Global variables ===
54  # include "OFFLINE_SWITCH.h"  # include "OFFLINE_SWITCH.h"
55  #endif  #endif
56    
57  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF
58  # include "AUTODIFF_MYFIELDS.h"  # include "AUTODIFF_MYFIELDS.h"
59  # include "tamc.h"  # include "tamc.h"
60  # include "tamc_keys.h"  # include "tamc_keys.h"
# Line 85  C     == Global variables === Line 91  C     == Global variables ===
91  # ifdef ALLOW_SALT_PLUME  # ifdef ALLOW_SALT_PLUME
92  #  include "SALT_PLUME.h"  #  include "SALT_PLUME.h"
93  # endif  # endif
94  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF */
95    
96  C     !INPUT/OUTPUT PARAMETERS:  C     !INPUT/OUTPUT PARAMETERS:
97  C     == Routine arguments ==  C     == Routine arguments ==
# Line 171  CADJ STORE salt  = comlev1, key=ikey_dyn Line 177  CADJ STORE salt  = comlev1, key=ikey_dyn
177        ENDIF        ENDIF
178  #endif  /* ALLOW_OBCS */  #endif  /* ALLOW_OBCS */
179    
180  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF
181  # ifdef ALLOW_SALT_PLUME  # ifdef ALLOW_SALT_PLUME
182        DO bj=myByLo(myThid),myByHi(myThid)        DO bj=myByLo(myThid),myByHi(myThid)
183         DO bi=myBxLo(myThid),myBxHi(myThid)         DO bi=myBxLo(myThid),myBxHi(myThid)
# Line 184  CADJ STORE salt  = comlev1, key=ikey_dyn Line 190  CADJ STORE salt  = comlev1, key=ikey_dyn
190         ENDDO         ENDDO
191        ENDDO        ENDDO
192  # endif  # endif
193  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF */
194    
195  #ifdef ALLOW_FRAZIL  #ifdef ALLOW_FRAZIL
196        IF ( useFRAZIL ) THEN        IF ( useFRAZIL ) THEN
# Line 239  C       and modify forcing terms includi Line 245  C       and modify forcing terms includi
245  #endif /* ndef OLD_THSICE_CALL_SEQUENCE */  #endif /* ndef OLD_THSICE_CALL_SEQUENCE */
246    
247  #ifdef ALLOW_SEAICE  #ifdef ALLOW_SEAICE
248  # ifdef ALLOW_AUTODIFF_TAMC  # ifdef ALLOW_AUTODIFF
249  CADJ STORE area   = comlev1, key=ikey_dynamics, kind=isbyte  CADJ STORE area   = comlev1, key=ikey_dynamics, kind=isbyte
250  CADJ STORE fu,fv  = comlev1, key=ikey_dynamics, kind=isbyte  CADJ STORE fu,fv  = comlev1, key=ikey_dynamics, kind=isbyte
251  CADJ STORE qnet   = comlev1, key=ikey_dynamics, kind=isbyte  CADJ STORE qnet   = comlev1, key=ikey_dynamics, kind=isbyte
# Line 249  CADJ STORE salt   = comlev1, key=ikey_dy Line 255  CADJ STORE salt   = comlev1, key=ikey_dy
255  #if (defined ALLOW_EXF) && (defined ALLOW_ATM_TEMP)  #if (defined ALLOW_EXF) && (defined ALLOW_ATM_TEMP)
256  CADJ STORE evap   = comlev1, key=ikey_dynamics, kind=isbyte  CADJ STORE evap   = comlev1, key=ikey_dynamics, kind=isbyte
257  #endif  #endif
258        IF ( .NOT.useSEAICE ) THEN        IF ( .NOT.useSEAICE .AND. SEAICEadjMODE .EQ. -1 ) THEN
       IF ( SEAICEadjMODE .EQ. -1 ) THEN  
259          CALL SEAICE_FAKE( myTime, myIter, myThid )          CALL SEAICE_FAKE( myTime, myIter, myThid )
260        ENDIF        ENDIF
       ENDIF  
261  CADJ STORE area   = comlev1, key=ikey_dynamics, kind=isbyte  CADJ STORE area   = comlev1, key=ikey_dynamics, kind=isbyte
262  CADJ STORE fu,fv  = comlev1, key=ikey_dynamics, kind=isbyte  CADJ STORE fu,fv  = comlev1, key=ikey_dynamics, kind=isbyte
263  CADJ STORE qnet   = comlev1, key=ikey_dynamics, kind=isbyte  CADJ STORE qnet   = comlev1, key=ikey_dynamics, kind=isbyte
# Line 263  CADJ STORE salt   = comlev1, key=ikey_dy Line 267  CADJ STORE salt   = comlev1, key=ikey_dy
267  #if (defined ALLOW_EXF) && (defined ALLOW_ATM_TEMP)  #if (defined ALLOW_EXF) && (defined ALLOW_ATM_TEMP)
268  CADJ STORE evap   = comlev1, key=ikey_dynamics, kind=isbyte  CADJ STORE evap   = comlev1, key=ikey_dynamics, kind=isbyte
269  #endif  #endif
270  # endif /* ALLOW_AUTODIFF_TAMC */  # endif /* ALLOW_AUTODIFF */
271  #endif /* ALLOW_SEAICE */  #endif /* ALLOW_SEAICE */
272    
273  #ifdef ALLOW_SEAICE  #ifdef ALLOW_SEAICE
# Line 460  C     relaxation terms, etc. Line 464  C     relaxation terms, etc.
464  #ifdef ALLOW_DEBUG  #ifdef ALLOW_DEBUG
465        IF (debugMode) CALL DEBUG_CALL('EXTERNAL_FORCING_SURF',myThid)        IF (debugMode) CALL DEBUG_CALL('EXTERNAL_FORCING_SURF',myThid)
466  #endif  #endif
467  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF
468  CADJ STORE salt, theta = comlev1, key = ikey_dynamics,  CADJ STORE salt, theta = comlev1, key = ikey_dynamics,
469  CADJ &     kind = isbyte  CADJ &     kind = isbyte
470  #else  /* ALLOW_AUTODIFF_TAMC */  #else  /* ALLOW_AUTODIFF */
471  C--   if fluid is not water, by-pass surfaceForcing, find_rho, gmredi  C--   if fluid is not water, by-pass surfaceForcing, find_rho, gmredi
472  C     and all vertical mixing schemes, but keep OBCS_CALC  C     and all vertical mixing schemes, but keep OBCS_CALC
473        IF ( fluidIsWater ) THEN        IF ( fluidIsWater ) THEN
474  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF */
475          CALL EXTERNAL_FORCING_SURF(          CALL EXTERNAL_FORCING_SURF(
476       I             iMin, iMax, jMin, jMax,       I             iMin, iMax, jMin, jMax,
477       I             myTime, myIter, myThid )       I             myTime, myIter, myThid )
# Line 512  C This is currently used by GMRedi, IVDC Line 516  C This is currently used by GMRedi, IVDC
516           ENDDO           ENDDO
517          ENDDO          ENDDO
518    
519  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF
520          DO j=1-OLy,sNy+OLy          DO j=1-OLy,sNy+OLy
521           DO i=1-OLx,sNx+OLx           DO i=1-OLx,sNx+OLx
522            rhoKm1 (i,j)   = 0. _d 0            rhoKm1 (i,j)   = 0. _d 0
# Line 590  cph although some of these are re-initia Line 594  cph although some of these are re-initia
594  #ifdef ALLOW_OFFLINE  #ifdef ALLOW_OFFLINE
595         ENDIF         ENDIF
596  #endif  #endif
597  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF */
598    
599  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
600  CADJ STORE theta(:,:,:,bi,bj) = comlev1_bibj, key=itdkey,  CADJ STORE theta(:,:,:,bi,bj) = comlev1_bibj, key=itdkey,
# Line 617  C     needed here, will be used anyway i Line 621  C     needed here, will be used anyway i
621  #ifdef ALLOW_DEBUG  #ifdef ALLOW_DEBUG
622          IF (debugMode) CALL DEBUG_CALL('FIND_RHO_2D (xNr)',myThid)          IF (debugMode) CALL DEBUG_CALL('FIND_RHO_2D (xNr)',myThid)
623  #endif  #endif
624  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF
625          IF ( fluidIsWater ) THEN          IF ( fluidIsWater ) THEN
626  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF */
627  #ifdef ALLOW_DOWN_SLOPE  #ifdef ALLOW_DOWN_SLOPE
628           IF ( useDOWN_SLOPE ) THEN           IF ( useDOWN_SLOPE ) THEN
629             DO k=1,Nr             DO k=1,Nr
# Line 654  C     dry grid boxes of rhoInSitu.  See Line 658  C     dry grid boxes of rhoInSitu.  See
658       I                k, bi, bj, myThid )       I                k, bi, bj, myThid )
659             ENDDO             ENDDO
660           ENDIF           ENDIF
661  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF
662          ELSE          ELSE
663  C-        fluid is not water:  C-        fluid is not water:
664            DO k=1,Nr            DO k=1,Nr
# Line 665  C-        fluid is not water: Line 669  C-        fluid is not water:
669             ENDDO             ENDDO
670            ENDDO            ENDDO
671          ENDIF          ENDIF
672  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF */
673    
674  #ifdef ALLOW_DEBUG  #ifdef ALLOW_DEBUG
675          IF (debugMode) CALL DEBUG_MSG('ENTERING UPWARD K LOOP',myThid)          IF (debugMode) CALL DEBUG_MSG('ENTERING UPWARD K LOOP',myThid)
# Line 724  cph Avoid variable aliasing for adjoint Line 728  cph Avoid variable aliasing for adjoint
728       I             rhoInSitu(1-OLx,1-OLy,k,bi,bj), rhoKm1, rhoKp1,       I             rhoInSitu(1-OLx,1-OLy,k,bi,bj), rhoKm1, rhoKp1,
729       O             sigmaX, sigmaY, sigmaR,       O             sigmaX, sigmaY, sigmaR,
730       I             myThid )       I             myThid )
731  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF
732  #ifdef GMREDI_WITH_STABLE_ADJOINT  #ifdef GMREDI_WITH_STABLE_ADJOINT
733  cgf zero out adjoint fields to stabilize pkg/gmredi adjoint  cgf zero out adjoint fields to stabilize pkg/gmredi adjoint
734  cgf -> cuts adjoint dependency from slope to state  cgf -> cuts adjoint dependency from slope to state
# Line 732  cgf -> cuts adjoint dependency from slop Line 736  cgf -> cuts adjoint dependency from slop
736              CALL ZERO_ADJ_LOC( Nr, sigmaY, myThid)              CALL ZERO_ADJ_LOC( Nr, sigmaY, myThid)
737              CALL ZERO_ADJ_LOC( Nr, sigmaR, myThid)              CALL ZERO_ADJ_LOC( Nr, sigmaR, myThid)
738  #endif  #endif
739  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF */
740            ENDIF            ENDIF
741    
742  C--       Implicit Vertical Diffusion for Convection  C--       Implicit Vertical Diffusion for Convection
# Line 818  C--     Compute KPP mixing coefficients Line 822  C--     Compute KPP mixing coefficients
822            CALL KPP_CALC(            CALL KPP_CALC(
823       I                  bi, bj, myTime, myIter, myThid )       I                  bi, bj, myTime, myIter, myThid )
824            CALL TIMER_STOP ('KPP_CALC [DO_OCEANIC_PHYS]', myThid)            CALL TIMER_STOP ('KPP_CALC [DO_OCEANIC_PHYS]', myThid)
825  #if (defined ALLOW_AUTODIFF_TAMC) && !(defined ALLOW_OFFLINE)  #if (defined ALLOW_AUTODIFF) && !(defined ALLOW_OFFLINE)
826          ELSE          ELSE
827            CALL KPP_CALC_DUMMY(            CALL KPP_CALC_DUMMY(
828       I                  bi, bj, myTime, myIter, myThid )       I                  bi, bj, myTime, myIter, myThid )
829  #endif /* ALLOW_AUTODIFF_TAMC and not ALLOW_OFFLINE */  #endif /* ALLOW_AUTODIFF and not ALLOW_OFFLINE */
830          ENDIF          ENDIF
831  #endif  /* ALLOW_KPP */  #endif  /* ALLOW_KPP */
832    
# Line 900  C--     Calculate iso-neutral slopes for Line 904  C--     Calculate iso-neutral slopes for
904       I             iMin, iMax, jMin, jMax,       I             iMin, iMax, jMin, jMax,
905       I             sigmaX, sigmaY, sigmaR,       I             sigmaX, sigmaY, sigmaR,
906       I             bi, bj, myTime, myIter, myThid )       I             bi, bj, myTime, myIter, myThid )
907  #if (defined ALLOW_AUTODIFF_TAMC) && !(defined ALLOW_OFFLINE)  #if (defined ALLOW_AUTODIFF) && !(defined ALLOW_OFFLINE)
908          ELSE          ELSE
909            CALL GMREDI_CALC_TENSOR_DUMMY(            CALL GMREDI_CALC_TENSOR_DUMMY(
910       I             iMin, iMax, jMin, jMax,       I             iMin, iMax, jMin, jMax,
911       I             sigmaX, sigmaY, sigmaR,       I             sigmaX, sigmaY, sigmaR,
912       I             bi, bj, myTime, myIter, myThid )       I             bi, bj, myTime, myIter, myThid )
913  #endif /* ALLOW_AUTODIFF_TAMC and not ALLOW_OFFLINE */  #endif /* ALLOW_AUTODIFF and not ALLOW_OFFLINE */
914          ENDIF          ENDIF
915  #endif /* ALLOW_GMREDI */  #endif /* ALLOW_GMREDI */
916    
# Line 929  C--   end bi,bj loops. Line 933  C--   end bi,bj loops.
933         ENDDO         ENDDO
934        ENDDO        ENDDO
935    
936  #ifndef ALLOW_AUTODIFF_TAMC  #ifndef ALLOW_AUTODIFF
937  C---  if fluid Is Water: end  C---  if fluid Is Water: end
938        ENDIF        ENDIF
939  #endif  #endif

Legend:
Removed from v.1.133  
changed lines
  Added in v.1.134

  ViewVC Help
Powered by ViewVC 1.1.22