/[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.114 by jmc, Tue Mar 6 15:10:05 2012 UTC revision 1.127 by jmc, Mon Apr 22 02:38:07 2013 UTC
# Line 14  C $Name$ Line 14  C $Name$
14  # ifdef ALLOW_SEAICE  # ifdef ALLOW_SEAICE
15  #  include "SEAICE_OPTIONS.h"  #  include "SEAICE_OPTIONS.h"
16  # endif  # endif
17    # ifdef ALLOW_EXF
18    #  include "EXF_OPTIONS.h"
19    # endif
20  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
21    
22  CBOP  CBOP
# Line 41  C     == Global variables === Line 44  C     == Global variables ===
44  #ifdef ALLOW_TIMEAVE  #ifdef ALLOW_TIMEAVE
45  #include "TIMEAVE_STATV.h"  #include "TIMEAVE_STATV.h"
46  #endif  #endif
 #if defined (ALLOW_BALANCE_FLUXES) && !(defined ALLOW_AUTODIFF_TAMC)  
 #include "FFIELDS.h"  
 #endif  
47    
48  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
49  # include "AUTODIFF_MYFIELDS.h"  # include "AUTODIFF_MYFIELDS.h"
# Line 74  C     == Global variables === Line 74  C     == Global variables ===
74  # ifdef ALLOW_SEAICE  # ifdef ALLOW_SEAICE
75  #  include "SEAICE_SIZE.h"  #  include "SEAICE_SIZE.h"
76  #  include "SEAICE.h"  #  include "SEAICE.h"
77    #  include "SEAICE_PARAMS.h"
78  # endif  # endif
79  # ifdef ALLOW_THSICE  # ifdef ALLOW_THSICE
80  #  include "THSICE_VARS.h"  #  include "THSICE_VARS.h"
# Line 150  CADJ STORE salt  = comlev1, key=ikey_dyn Line 151  CADJ STORE salt  = comlev1, key=ikey_dyn
151  # ifdef ALLOW_DEBUG  # ifdef ALLOW_DEBUG
152         IF (debugMode) CALL DEBUG_CALL('OBCS_CALC',myThid)         IF (debugMode) CALL DEBUG_CALL('OBCS_CALC',myThid)
153  # endif  # endif
154         CALL OBCS_CALC( myTime+deltaTclock, myIter+1,         CALL OBCS_CALC( myTime+deltaTClock, myIter+1,
155       I                 uVel, vVel, wVel, theta, salt, myThid )       I                 uVel, vVel, wVel, theta, salt, myThid )
156        ENDIF        ENDIF
157  #endif  /* ALLOW_OBCS */  #endif  /* ALLOW_OBCS */
158    
 #ifdef ALLOW_ADDFLUID  
 c     IF ( fluidIsWater ) THEN  
       IF ( useICEFRONT ) THEN  
         DO bj=myByLo(myThid),myByHi(myThid)  
          DO bi=myBxLo(myThid),myBxHi(myThid)  
           DO k=1,Nr  
            DO j=1-OLy,sNy+OLy  
             DO i=1-OLx,sNx+OLx  
              addMass(i,j,k,bi,bj) =  0. _d 0  
             ENDDO  
            ENDDO  
           ENDDO  
          ENDDO  
         ENDDO  
       ENDIF  
 #endif /* ALLOW_ADDFLUID */  
   
159  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
160  # ifdef ALLOW_SALT_PLUME  # ifdef ALLOW_SALT_PLUME
161        DO bj=myByLo(myThid),myByHi(myThid)        DO bj=myByLo(myThid),myByHi(myThid)
# Line 194  C--   Freeze water in the ocean interior Line 178  C--   Freeze water in the ocean interior
178        ENDIF        ENDIF
179  #endif /* ALLOW_FRAZIL */  #endif /* ALLOW_FRAZIL */
180    
181    #ifndef OLD_THSICE_CALL_SEQUENCE
182    #if (defined ALLOW_THSICE) && !(defined ALLOW_ATM2D)
183          IF ( useThSIce .AND. fluidIsWater ) THEN
184    # ifdef ALLOW_AUTODIFF_TAMC
185    CADJ STORE uice,vice         = comlev1, key = ikey_dynamics,
186    CADJ &     kind = isbyte
187    CADJ STORE iceMask,iceHeight = comlev1, key = ikey_dynamics,
188    CADJ &     kind = isbyte
189    CADJ STORE snowHeight, Tsrf  = comlev1, key = ikey_dynamics,
190    CADJ &     kind = isbyte
191    CADJ STORE Qice1, Qice2      = comlev1, key = ikey_dynamics,
192    CADJ &     kind = isbyte
193    CADJ STORE sHeating, snowAge = comlev1, key = ikey_dynamics,
194    CADJ &     kind = isbyte
195    CADJ STORE hocemxl = comlev1, key = ikey_dynamics,
196    CADJ &     kind = isbyte
197    CADJ STORE icflxsw, snowprc  = comlev1, key = ikey_dynamics,
198    CADJ &     kind = isbyte
199    CADJ STORE salt,theta        = comlev1, key = ikey_dynamics,
200    CADJ &     kind = isbyte
201    CADJ STORE uvel,vvel         = comlev1, key = ikey_dynamics,
202    CADJ &     kind = isbyte
203    CADJ STORE qnet,qsw, empmr   = comlev1, key = ikey_dynamics,
204    CADJ &     kind = isbyte
205    CADJ STORE atemp,aqh,precip  = comlev1, key = ikey_dynamics,
206    CADJ &     kind = isbyte
207    CADJ STORE swdown,lwdown     = comlev1, key = ikey_dynamics,
208    CADJ &     kind = isbyte
209    #  ifdef NONLIN_FRSURF
210    CADJ STORE hFac_surfC       = comlev1, key = ikey_dynamics,
211    CADJ &     kind = isbyte
212    #  endif
213    # endif /* ALLOW_AUTODIFF_TAMC */
214    # ifdef ALLOW_DEBUG
215            IF (debugMode) CALL DEBUG_CALL('THSICE_MAIN',myThid)
216    # endif
217    C--     Step forward Therm.Sea-Ice variables
218    C       and modify forcing terms including effects from ice
219            CALL TIMER_START('THSICE_MAIN     [DO_OCEANIC_PHYS]', myThid)
220            CALL THSICE_MAIN( myTime, myIter, myThid )
221            CALL TIMER_STOP( 'THSICE_MAIN     [DO_OCEANIC_PHYS]', myThid)
222          ENDIF
223    #endif /* ALLOW_THSICE */
224    #endif /* ndef OLD_THSICE_CALL_SEQUENCE */
225    
226    #ifdef ALLOW_SEAICE
227    # ifdef ALLOW_AUTODIFF_TAMC
228    CADJ STORE area   = comlev1, key=ikey_dynamics, kind=isbyte
229    CADJ STORE fu,fv  = comlev1, key=ikey_dynamics, kind=isbyte
230    CADJ STORE qnet   = comlev1, key=ikey_dynamics, kind=isbyte
231    CADJ STORE qsw    = comlev1, key=ikey_dynamics, kind=isbyte
232    CADJ STORE theta  = comlev1, key=ikey_dynamics, kind=isbyte
233    CADJ STORE salt   = comlev1, key=ikey_dynamics, kind=isbyte
234    #if (defined ALLOW_EXF) && (defined ALLOW_ATM_TEMP)
235    CADJ STORE evap   = comlev1, key=ikey_dynamics, kind=isbyte
236    #endif
237          IF ( .NOT.useSEAICE ) THEN
238          IF ( SEAICEadjMODE .EQ. -1 ) THEN
239            CALL SEAICE_FAKE( myTime, myIter, myThid )
240          ENDIF
241          ENDIF
242    CADJ STORE area   = comlev1, key=ikey_dynamics, kind=isbyte
243    CADJ STORE fu,fv  = comlev1, key=ikey_dynamics, kind=isbyte
244    CADJ STORE qnet   = comlev1, key=ikey_dynamics, kind=isbyte
245    CADJ STORE qsw    = comlev1, key=ikey_dynamics, kind=isbyte
246    CADJ STORE theta  = comlev1, key=ikey_dynamics, kind=isbyte
247    CADJ STORE salt   = comlev1, key=ikey_dynamics, kind=isbyte
248    #if (defined ALLOW_EXF) && (defined ALLOW_ATM_TEMP)
249    CADJ STORE evap   = comlev1, key=ikey_dynamics, kind=isbyte
250    #endif
251    # endif /* ALLOW_AUTODIFF_TAMC */
252    #endif /* ALLOW_SEAICE */
253    
254  #ifdef ALLOW_SEAICE  #ifdef ALLOW_SEAICE
255        IF ( useSEAICE ) THEN        IF ( useSEAICE ) THEN
256  # ifdef ALLOW_AUTODIFF_TAMC  # ifdef ALLOW_AUTODIFF_TAMC
# Line 252  CADJ &     kind = isbyte Line 309  CADJ &     kind = isbyte
309  CADJ STORE balance_itcount     = comlev1, key = ikey_dynamics,  CADJ STORE balance_itcount     = comlev1, key = ikey_dynamics,
310  CADJ &     kind = isbyte  CADJ &     kind = isbyte
311  #  endif /* ANNUAL_BALANCE */  #  endif /* ANNUAL_BALANCE */
312  # endif  #  ifdef ALLOW_THSICE
313    CADJ STORE fu, fv              = comlev1, key = ikey_dynamics,
314    CADJ &     kind = isbyte
315    #  endif
316    # endif /* ALLOW_AUTODIFF_TAMC */
317  # ifdef ALLOW_DEBUG  # ifdef ALLOW_DEBUG
318          IF (debugMode) CALL DEBUG_CALL('SEAICE_MODEL',myThid)          IF (debugMode) CALL DEBUG_CALL('SEAICE_MODEL',myThid)
319  # endif  # endif
# Line 276  CADJ &     kind = isbyte Line 337  CADJ &     kind = isbyte
337  # endif  # endif
338  #endif  #endif
339    
340    #ifdef OLD_THSICE_CALL_SEQUENCE
341  #if (defined ALLOW_THSICE) && !(defined ALLOW_ATM2D)  #if (defined ALLOW_THSICE) && !(defined ALLOW_ATM2D)
342        IF ( useThSIce .AND. fluidIsWater ) THEN        IF ( useThSIce .AND. fluidIsWater ) THEN
343  # ifdef ALLOW_AUTODIFF_TAMC  # ifdef ALLOW_AUTODIFF_TAMC
# Line 301  C       and modify forcing terms includi Line 363  C       and modify forcing terms includi
363          CALL TIMER_STOP( 'THSICE_MAIN     [DO_OCEANIC_PHYS]', myThid)          CALL TIMER_STOP( 'THSICE_MAIN     [DO_OCEANIC_PHYS]', myThid)
364        ENDIF        ENDIF
365  #endif /* ALLOW_THSICE */  #endif /* ALLOW_THSICE */
366    #endif /* OLD_THSICE_CALL_SEQUENCE */
367    
368  #ifdef ALLOW_SHELFICE  #ifdef ALLOW_SHELFICE
369  # ifdef ALLOW_AUTODIFF_TAMC  # ifdef ALLOW_AUTODIFF_TAMC
# Line 359  C jmc: do not know precisely where to pu Line 422  C jmc: do not know precisely where to pu
422        ENDIF        ENDIF
423  #endif /* ALLOW_OCN_COMPON_INTERF */  #endif /* ALLOW_OCN_COMPON_INTERF */
424    
425  #ifdef ALLOW_BALANCE_FLUXES  C--   Balance and Apply exchanges to surface forcing
426  C     balance fluxes        IF ( fluidIsWater ) THEN
427        IF ( balanceEmPmR )          CALL EXTERNAL_FORCING_ADJUST( myTime, myIter, myThid )
428       &      CALL REMOVE_MEAN_RS( 1, EmPmR, maskInC, maskInC, rA, drF,        ENDIF
      &        'EmPmR', myTime, myThid )  
       IF ( balanceQnet )  
      &      CALL REMOVE_MEAN_RS( 1, Qnet,  maskInC, maskInC, rA, drF,  
      &        'Qnet ', myTime, myThid )  
 #endif /* ALLOW_BALANCE_FLUXES */  
429    
430  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
431  C--   HPF directive to help TAMC  C--   HPF directive to help TAMC
# Line 477  CADJ &     kind = isbyte Line 535  CADJ &     kind = isbyte
535  CADJ STORE vvel (:,:,:,bi,bj) = comlev1_bibj, key=itdkey,  CADJ STORE vvel (:,:,:,bi,bj) = comlev1_bibj, key=itdkey,
536  CADJ &     kind = isbyte  CADJ &     kind = isbyte
537  # endif  # endif
538    # ifdef ALLOW_SALT_PLUME
539    CADJ STORE saltplumedepth(:,:,bi,bj) = comlev1_bibj, key=itdkey,
540    CADJ &     kind = isbyte
541    # endif
542  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
543    
544  C--   Always compute density (stored in common block) here; even when it is not  C--   Always compute density (stored in common block) here; even when it is not
# Line 559  c#endif /* ALLOW_AUTODIFF_TAMC */ Line 621  c#endif /* ALLOW_AUTODIFF_TAMC */
621  C--       Calculate gradients of potential density for isoneutral  C--       Calculate gradients of potential density for isoneutral
622  C         slope terms (e.g. GM/Redi tensor or IVDC diffusivity)  C         slope terms (e.g. GM/Redi tensor or IVDC diffusivity)
623            IF ( useGMRedi .OR. (k.GT.1 .AND. ivdc_kappa.NE.0.)            IF ( useGMRedi .OR. (k.GT.1 .AND. ivdc_kappa.NE.0.)
624         &         .OR. usePP81 .OR. useMY82 .OR. useGGL90
625       &         .OR. useSALT_PLUME .OR. doDiagsRho.GE.1 ) THEN       &         .OR. useSALT_PLUME .OR. doDiagsRho.GE.1 ) THEN
626              IF (k.GT.1) THEN              IF (k.GT.1) THEN
627  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
# Line 738  C--     Compute PP81 mixing coefficients Line 801  C--     Compute PP81 mixing coefficients
801            IF (debugMode) CALL DEBUG_CALL('PP81_CALC',myThid)            IF (debugMode) CALL DEBUG_CALL('PP81_CALC',myThid)
802  #endif  #endif
803            CALL PP81_CALC(            CALL PP81_CALC(
804       I                  bi, bj, myTime, myThid )       I                     bi, bj, sigmaR, myTime, myIter, myThid )
805          ENDIF          ENDIF
806  #endif /* ALLOW_PP81 */  #endif /* ALLOW_PP81 */
807    
# Line 749  C--     Compute MY82 mixing coefficients Line 812  C--     Compute MY82 mixing coefficients
812            IF (debugMode) CALL DEBUG_CALL('MY82_CALC',myThid)            IF (debugMode) CALL DEBUG_CALL('MY82_CALC',myThid)
813  #endif  #endif
814            CALL MY82_CALC(            CALL MY82_CALC(
815       I                  bi, bj, myTime, myThid )       I                     bi, bj, sigmaR, myTime, myIter, myThid )
816          ENDIF          ENDIF
817  #endif /* ALLOW_MY82 */  #endif /* ALLOW_MY82 */
818    
# Line 765  C--     Compute GGL90 mixing coefficient Line 828  C--     Compute GGL90 mixing coefficient
828  #endif  #endif
829            CALL TIMER_START('GGL90_CALC [DO_OCEANIC_PHYS]', myThid)            CALL TIMER_START('GGL90_CALC [DO_OCEANIC_PHYS]', myThid)
830            CALL GGL90_CALC(            CALL GGL90_CALC(
831       I                  bi, bj, myTime, myIter, myThid )       I                     bi, bj, sigmaR, myTime, myIter, myThid )
832            CALL TIMER_STOP ('GGL90_CALC [DO_OCEANIC_PHYS]', myThid)            CALL TIMER_STOP ('GGL90_CALC [DO_OCEANIC_PHYS]', myThid)
833          ENDIF          ENDIF
834  #endif /* ALLOW_GGL90 */  #endif /* ALLOW_GGL90 */
# Line 776  C--     Compute GGL90 mixing coefficient Line 839  C--     Compute GGL90 mixing coefficient
839          ENDIF          ENDIF
840          IF (taveFreq.GT.0. .AND. ivdc_kappa.NE.0.) THEN          IF (taveFreq.GT.0. .AND. ivdc_kappa.NE.0.) THEN
841            CALL TIMEAVE_CUMULATE(ConvectCountTave, IVDConvCount,            CALL TIMEAVE_CUMULATE(ConvectCountTave, IVDConvCount,
842       I                           Nr, deltaTclock, bi, bj, myThid)       I                           Nr, deltaTClock, bi, bj, myThid)
843          ENDIF          ENDIF
844  #endif /* ALLOW_TIMEAVE */  #endif /* ALLOW_TIMEAVE */
845    
# Line 834  C--   end bi,bj loops. Line 897  C--   end bi,bj loops.
897         ENDDO         ENDDO
898        ENDDO        ENDDO
899    
900    #ifdef ALLOW_BALANCE_RELAX
901    # ifdef ALLOW_AUTODIFF_TAMC
902    CADJ STORE SSSrlx = comlev1, key=ikey_dynamics, kind=isbyte
903    CADJ STORE SSSrlxTile = comlev1, key=ikey_dynamics, kind=isbyte
904    CADJ STORE SSSrlxGlob = comlev1, key=ikey_dynamics, kind=isbyte
905    CADJ STORE SSTrlx = comlev1, key=ikey_dynamics, kind=isbyte
906    CADJ STORE SSTrlxTile = comlev1, key=ikey_dynamics, kind=isbyte
907    CADJ STORE SSTrlxGlob = comlev1, key=ikey_dynamics, kind=isbyte
908    # endif /* ALLOW_AUTODIFF_TAMC */
909           CALL BALANCE_RELAX( myTime, myIter, myThid )
910    #endif /* ALLOW_BALANCE_RELAX */
911    
912  #ifndef ALLOW_AUTODIFF_TAMC  #ifndef ALLOW_AUTODIFF_TAMC
913  C---  if fluid Is Water: end  C---  if fluid Is Water: end
914        ENDIF        ENDIF
# Line 878  C---  if fluid Is Water: end Line 953  C---  if fluid Is Water: end
953        ENDIF        ENDIF
954  #endif  #endif
955    
956    #ifdef ALLOW_ECCO
957          CALL ECCO_PHYS(mythid)
958    #endif
959    
960  #ifdef ALLOW_DEBUG  #ifdef ALLOW_DEBUG
961        IF (debugMode) CALL DEBUG_LEAVE('DO_OCEANIC_PHYS',myThid)        IF (debugMode) CALL DEBUG_LEAVE('DO_OCEANIC_PHYS',myThid)
962  #endif  #endif

Legend:
Removed from v.1.114  
changed lines
  Added in v.1.127

  ViewVC Help
Powered by ViewVC 1.1.22