** Warning **

Issuing rollback() due to DESTROY without explicit disconnect() of DBD::mysql::db handle dbname=MITgcm at /usr/local/share/lxr/lib/LXR/Common.pm line 1224.

Last-Modified: Fri, 16 May 2024 05:11:24 GMT Content-Type: text/html; charset=utf-8 MITgcm/MITgcm/model/src/do_statevars_diags.F
Back to home page

MITgcm

 
 

    


File indexing completed on 2018-03-02 18:36:38 UTC

view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
c8e3a3b543 Jean*0001 #include "PACKAGES_CONFIG.h"
                0002 #include "CPP_OPTIONS.h"
                0003 
                0004 
                0005 CBOP
                0006 C     !ROUTINE: DO_STATEVARS_DIAGS
                0007 C     !INTERFACE:
b5c2f2589c Jean*0008       SUBROUTINE DO_STATEVARS_DIAGS( myTime, seqFlag, myIter, myThid )
c8e3a3b543 Jean*0009 C     !DESCRIPTION: \bv
                0010 C     *==========================================================*
ef48eeec7f Jean*0011 C     | SUBROUTINE DO_STATEVARS_DIAGS
c8e3a3b543 Jean*0012 C     | o Controlling routine for state variables diagnostics
                0013 C     *==========================================================*
ef48eeec7f Jean*0014 C     | Computing diagnostics of the model state (state-variables)
                0015 C     | is done at this level ;
                0016 C     | by contrast, other diagnostics (fluxes, tendencies)
                0017 C     | remain within the computation sequence.
c8e3a3b543 Jean*0018 C     *==========================================================*
                0019 C     \ev
                0020 
                0021 C     !USES:
                0022       IMPLICIT NONE
                0023 C     == Global variables ===
                0024 #include "SIZE.h"
                0025 #include "EEPARAMS.h"
                0026 #include "PARAMS.h"
                0027 
                0028 C     !INPUT/OUTPUT PARAMETERS:
                0029 C     == Routine arguments ==
b5c2f2589c Jean*0030 C     myTime  :: Current time of simulation ( s )
                0031 C     seqFlag :: flag that indicate where this S/R is called from:
                0032 C             :: =0 called from the beginning of forward_step
                0033 C             :: =1 called from the middle of forward_step
cf44a6a231 Andr*0034 C             :: =2 called from the end of forward_step
b5c2f2589c Jean*0035 C     myIter  :: Iteration number
9eb0272674 Jean*0036 C     myThid  :: my Thread Id number
c8e3a3b543 Jean*0037       _RL     myTime
b5c2f2589c Jean*0038       INTEGER seqFlag
c8e3a3b543 Jean*0039       INTEGER myIter
                0040       INTEGER myThid
                0041 CEOP
                0042 
b5c2f2589c Jean*0043 #ifdef ALLOW_DIAGNOSTICS
c8e3a3b543 Jean*0044 C     !LOCAL VARIABLES:
b5c2f2589c Jean*0045 C     == Local variables ==
                0046 C     selectVars :: select which group of dianostics variables to fill-in
                0047 C            = 1 :: fill-in diagnostics for tracer   variables only
                0048 C            = 2 :: fill-in diagnostics for momentum variables only
                0049 C            = 3 :: fill-in diagnostics for momentum & tracer variables
ef48eeec7f Jean*0050 C            = 4 :: fill-in state variable tendency diagnostics the second time
b5c2f2589c Jean*0051       INTEGER selectVars
c8e3a3b543 Jean*0052 
b5c2f2589c Jean*0053 C--   Fill-in Diagnostics pkg storage array (for state-variables)
                0054       IF ( usediagnostics ) THEN
c8e3a3b543 Jean*0055 
ef48eeec7f Jean*0056 C-    select which group of state-var diagnostics to fill-in,
                0057 C      depending on: where this S/R is called from (seqFlag)
b5c2f2589c Jean*0058 C                    and stagger/synchronous TimeStep
                0059         selectVars = 0
ef48eeec7f Jean*0060         IF ( staggerTimeStep ) THEN
b5c2f2589c Jean*0061           IF ( seqFlag.EQ.0 ) selectVars = 2
                0062           IF ( seqFlag.EQ.1 ) selectVars = 1
                0063         ELSE
                0064           IF ( seqFlag.EQ.0 ) selectVars = 3
c8e3a3b543 Jean*0065         ENDIF
cf44a6a231 Andr*0066         IF ( seqFlag.EQ.2 ) selectVars = 4
9eb0272674 Jean*0067         CALL DIAGNOSTICS_FILL_STATE( selectVars, myIter, myThid )
c8e3a3b543 Jean*0068 
bf7c007532 Jean*0069 #ifdef ALLOW_GENERIC_ADVDIFF
                0070         IF ( seqFlag.EQ.0 .AND. useGAD ) THEN
                0071           CALL GAD_DIAGNOSTICS_STATE( myTime, myIter, myThid )
                0072         ENDIF
                0073 #endif /* ALLOW_GENERIC_ADVDIFF */
                0074 
b5c2f2589c Jean*0075 #ifdef ALLOW_PTRACERS
                0076         IF ( (selectVars.EQ.1 .OR. selectVars.EQ.3)
ef48eeec7f Jean*0077      &      .AND. usePTRACERS ) THEN
4e66ab0b67 Oliv*0078           CALL PTRACERS_DIAGNOSTICS_STATE( myTime, myIter, myThid )
b5c2f2589c Jean*0079         ENDIF
9eb0272674 Jean*0080 #endif /* ALLOW_PTRACERS */
c8e3a3b543 Jean*0081 
52f02b9d88 Jean*0082 #ifdef ALLOW_GMREDI
                0083        IF ( seqFlag.EQ.2 .AND. useGMRedi ) THEN
                0084          CALL GMREDI_DIAGNOSTICS_IMPL( myTime, myIter, myThid )
                0085        ENDIF
                0086 #endif /* ALLOW_GMREDI */
                0087 
15338fa568 Dimi*0088 #ifdef ALLOW_BBL
                0089        IF ( seqFlag.EQ.0 .AND. useBBL ) THEN
                0090          CALL BBL_DIAGNOSTICS_STATE( myTime, myIter, myThid )
                0091        ENDIF
9eb0272674 Jean*0092 #endif /* ALLOW_BBL */
15338fa568 Dimi*0093 
b11f4bb613 Mart*0094 #ifdef ALLOW_SEAICE
                0095        IF ( seqFlag.EQ.0 .AND. useSEAICE ) THEN
4e94619c84 Jean*0096          CALL SEAICE_DIAGNOSTICS_STATE( myTime, myIter, myThid )
b11f4bb613 Mart*0097        ENDIF
                0098 #endif /* ALLOW_SEAICE */
                0099 
1b39d33844 Jean*0100 #ifdef ALLOW_THSICE
                0101        IF ( seqFlag.EQ.0 .AND. useThSIce ) THEN
4e94619c84 Jean*0102          CALL THSICE_DIAGNOSTICS_STATE( myTime, myIter, myThid )
1b39d33844 Jean*0103        ENDIF
                0104 #endif /* ALLOW_THSICE */
                0105 
4405d67500 Patr*0106 #ifdef ALLOW_STREAMICE
                0107        IF ( seqFlag.EQ.2 .AND. useStreamIce ) THEN
4e94619c84 Jean*0108          CALL STREAMICE_DIAGNOSTICS_STATE( myTime, myIter, myThid )
4405d67500 Patr*0109        ENDIF
                0110 #endif /* ALLOW_SEAICE */
                0111 
1185acf1b6 Jean*0112 #ifdef ALLOW_LAND
                0113        IF ( seqFlag.EQ.0 .AND. useLand ) THEN
4e94619c84 Jean*0114          CALL LAND_DIAGNOSTICS_STATE( myTime, myIter, myThid )
1185acf1b6 Jean*0115        ENDIF
                0116 #endif /* ALLOW_LAND */
                0117 
ea5f62bbfd Jean*0118 #ifdef ALLOW_MYPACKAGE
                0119        IF ( seqFlag.EQ.0 .AND. useMYPACKAGE ) THEN
                0120          CALL MYPACKAGE_DIAGNOSTICS_STATE( myTime, myIter, myThid )
                0121        ENDIF
                0122 #endif /* ALLOW_MYPACKAGE */
                0123 
c8e3a3b543 Jean*0124       ENDIf
                0125 #endif /* ALLOW_DIAGNOSTICS */
                0126 
                0127       RETURN
                0128       END