Back to home page

MITgcm

 
 

    


File indexing completed on 2023-05-28 05:09:52 UTC

view on githubraw file Latest commit b4daa243 on 2023-05-28 03:53:22 UTC
a462ae7a37 Jean*0001 #include "PACKAGES_CONFIG.h"
                0002 #include "CPP_OPTIONS.h"
                0003 
                0004 CBOP
                0005 C     !ROUTINE: TRACERS_CORRECTION_STEP
                0006 C     !INTERFACE:
51575f66de Mart*0007       SUBROUTINE TRACERS_CORRECTION_STEP( myTime, myIter, myThid )
a462ae7a37 Jean*0008 C     !DESCRIPTION: \bv
                0009 C     *==========================================================*
f3ec658fc9 Jean*0010 C     | SUBROUTINE TRACERS_CORRECTION_STEP
a462ae7a37 Jean*0011 C     *==========================================================*
                0012 C     |1rst Part : Update T,S.
f3ec658fc9 Jean*0013 C     |part2: Adjustments & Diagnostics
a27159adf7 Jean*0014 C     |   o Filter  T,S (Shapiro Filter, Zonal_Filter)
                0015 C     |   o Convective Adjustment
                0016 C     |   o Diagmnostic of state variables (Time average)
a462ae7a37 Jean*0017 C     *==========================================================*
                0018 C     \ev
                0019 
                0020 C     !USES:
                0021       IMPLICIT NONE
                0022 C     == Global variables ===
                0023 #include "SIZE.h"
                0024 #include "EEPARAMS.h"
                0025 #include "PARAMS.h"
                0026 #include "DYNVARS.h"
972c0130ec Jean*0027 #ifdef ALLOW_GENERIC_ADVDIFF
                0028 # include "GAD.h"
                0029 #endif
b4daa24319 Shre*0030 #ifdef ALLOW_TAPENADE
                0031 # ifdef ALLOW_PTRACERS
                0032 #  include "PTRACERS_SIZE.h"
                0033 #  include "PTRACERS_FIELDS.h"
                0034 # endif
                0035 #endif /* ALLOW_TAPENADE */
a462ae7a37 Jean*0036 
                0037 C     !INPUT/OUTPUT PARAMETERS:
972c0130ec Jean*0038 C     myTime :: Current time in simulation
                0039 C     myIter :: Current iteration number in simulation
                0040 C     myThid :: my Thread Id number
a462ae7a37 Jean*0041       _RL myTime
                0042       INTEGER myIter
                0043       INTEGER myThid
                0044 
9e80b0bd5d Jean*0045 #ifdef ALLOW_GENERIC_ADVDIFF
a462ae7a37 Jean*0046 C     !LOCAL VARIABLES:
51575f66de Mart*0047       INTEGER bi, bj
                0048 #ifdef ALLOW_OPPS
a462ae7a37 Jean*0049       INTEGER iMin,iMax
                0050       INTEGER jMin,jMax
51575f66de Mart*0051 #endif
a462ae7a37 Jean*0052 CEOP
                0053 
cb7fa97db9 Jean*0054 #ifdef ALLOW_NONHYDROSTATIC
bd27360393 Jean*0055       IF ( implicitIntGravWave ) THEN
                0056        DO bj=myByLo(myThid),myByHi(myThid)
                0057         DO bi=myBxLo(myThid),myBxHi(myThid)
cb7fa97db9 Jean*0058           CALL TRACERS_IIGW_CORRECTION(bi,bj, myTime,myIter,myThid)
bd27360393 Jean*0059         ENDDO
a462ae7a37 Jean*0060        ENDDO
bd27360393 Jean*0061       ENDIF
                0062 #endif /* ALLOW_NONHYDROSTATIC */
a462ae7a37 Jean*0063 
                0064 C--- 2nd Part : Adjustment.
                0065 C
                0066 C       Static stability is calculated and the tracers are
                0067 C       convective adjusted where statically unstable.
                0068 
                0069 C--   Filter (and exchange)
                0070 #ifdef ALLOW_SHAP_FILT
                0071       IF (useSHAP_FILT) THEN
f3ec658fc9 Jean*0072         CALL TIMER_START('SHAP_FILT_TS       [TRC_CORR_STEP]',myThid)
a462ae7a37 Jean*0073         CALL SHAP_FILT_APPLY_TS( theta,salt, myTime, myIter, myThid )
f3ec658fc9 Jean*0074         CALL TIMER_STOP ('SHAP_FILT_TS       [TRC_CORR_STEP]',myThid)
a462ae7a37 Jean*0075       ENDIF
f3ec658fc9 Jean*0076 #endif
a462ae7a37 Jean*0077 #ifdef ALLOW_ZONAL_FILT
                0078       IF (useZONAL_FILT) THEN
f3ec658fc9 Jean*0079         CALL TIMER_START('ZONAL_FILT_TS      [TRC_CORR_STEP]',myThid)
                0080         CALL ZONAL_FILT_APPLY_TS( theta, salt, myThid )
                0081         CALL TIMER_STOP ('ZONAL_FILT_TS      [TRC_CORR_STEP]',myThid)
7744ec9132 Jean*0082 # ifdef ALLOW_PTRACERS
                0083 C-      apply to passive tracer fields
                0084         IF (usePTRACERS) THEN
                0085           CALL PTRACERS_ZONAL_FILT_APPLY( myThid )
                0086         ENDIF
                0087 # endif
a462ae7a37 Jean*0088       ENDIF
7744ec9132 Jean*0089 #endif /* ALLOW_ZONAL_FILT */
2738ab07b5 Andr*0090 C -- Fill negative tracer values (for now, only if Fizhi is running)
                0091 #ifdef ALLOW_FIZHI
                0092       IF (useFIZHI .and. saltAdvScheme.eq.2) THEN
                0093         CALL TIMER_START('SALT_FILL       [TRC_CORR_STEP]',myThid)
                0094         CALL SALT_FILL( uVel,vVel,salt,1,myTime,myIter,myThid )
                0095         CALL TIMER_STOP ('SALT_FILL       [TRC_CORR_STEP]',myThid)
                0096       ENDIF
                0097 #endif
a462ae7a37 Jean*0098 
                0099       DO bj=myByLo(myThid),myByHi(myThid)
                0100        DO bi=myBxLo(myThid),myBxHi(myThid)
                0101 
                0102 C--     Convectively adjust new fields to be statically stable
69a7b27187 Mart*0103 #ifdef ALLOW_OPPS
                0104         IF ( useOPPS ) THEN
51575f66de Mart*0105          iMin = 1
                0106          iMax = sNx
                0107          jMin = 1
                0108          jMax = sNy
69a7b27187 Mart*0109          CALL OPPS_INTERFACE(
                0110      I        bi, bj, iMin, iMax, jMin, jMax,
                0111      I        myTime, myIter, myThid )
51575f66de Mart*0112         ENDIF
69a7b27187 Mart*0113 #endif /* ALLOW_OPPS */
51575f66de Mart*0114 #ifdef INCLUDE_CONVECT_CALL
                0115         IF ( .NOT. useOPPS .AND. cAdjFreq .NE. 0. ) THEN
69a7b27187 Mart*0116          CALL CONVECTIVE_ADJUSTMENT(
6b53957f14 Jean*0117      I        bi, bj, myTime, myIter, myThid )
69a7b27187 Mart*0118         ENDIF
51575f66de Mart*0119 #endif /* INCLUDE_CONVECT_CALL */
a462ae7a37 Jean*0120 
5644a0ed41 Sama*0121 #ifdef ALLOW_MATRIX
a27159adf7 Jean*0122         IF (useMATRIX)
5644a0ed41 Sama*0123      &  CALL MATRIX_STORE_TENDENCY_IMP( bi, bj, myTime, myIter, myThid )
                0124 #endif
                0125 
a462ae7a37 Jean*0126 C--    End of 2nd bi,bj loop
                0127        ENDDO
                0128       ENDDO
9e80b0bd5d Jean*0129 
                0130 #endif /* ALLOW_GENERIC_ADVDIFF */
a462ae7a37 Jean*0131 
                0132       RETURN
                0133       END