Back to home page

MITgcm

 
 

    


File indexing completed on 2021-05-08 05:11:50 UTC

view on githubraw file Latest commit 9c41af81 on 2021-05-07 16:55:09 UTC
dbd0cb352f Mart*0001 #include "GCHEM_OPTIONS.h"
                0002 
                0003 CBOP
                0004 C !ROUTINE: GCHEM_CALC_TENDENCY
                0005 
                0006 C !INTERFACE: ==========================================================
                0007       SUBROUTINE GCHEM_CALC_TENDENCY(
                0008      I     myTime, myIter, myThid )
                0009 
                0010 C !DESCRIPTION:
                0011 C In the case of GCHEM_SEPARATE_FORCING not defined,
                0012 C this subroutine computes the tracer tendencies due to a
                0013 C bio-geogchemistry or ecosystem model and stores them on an array
                0014 C gchemTendency, that will be incorporated into regular timestepping in
                0015 C in ptracers_intergrate.F
847df67610 Jean*0016 C The current example uses the CFC package, but his is meant to
dbd0cb352f Mart*0017 C be replaced by anything that the user provides.
                0018 
                0019 C !USES: ===============================================================
                0020       IMPLICIT NONE
                0021 #include "SIZE.h"
                0022 #include "GRID.h"
                0023 #include "DYNVARS.h"
                0024 #include "EEPARAMS.h"
                0025 #include "PARAMS.h"
                0026 #include "PTRACERS_SIZE.h"
847df67610 Jean*0027 #include "PTRACERS_PARAMS.h"
                0028 #include "PTRACERS_FIELDS.h"
dbd0cb352f Mart*0029 #include "GCHEM.h"
2305125f7e Jean*0030 #ifdef ALLOW_CFC
                0031 # include "CFC_SIZE.h"
                0032 #endif
                0033 #ifdef ALLOW_SPOIL
                0034 # include "SPOIL_SIZE.h"
                0035 #endif
                0036 #include "GCHEM_SIZE.h"
dbd0cb352f Mart*0037 #include "GCHEM_FIELDS.h"
                0038 
                0039 C !INPUT PARAMETERS: ===================================================
                0040 C  myTime               :: current time
e1fb02e8f0 Jean*0041 C  myIter               :: current timestep
                0042 C  myThid               :: thread number
dbd0cb352f Mart*0043       _RL myTime
e1fb02e8f0 Jean*0044       INTEGER myIter, myThid
                0045 CEOP
dbd0cb352f Mart*0046 
2305125f7e Jean*0047 #ifdef GCHEM_ADD2TR_TENDENCY
dbd0cb352f Mart*0048 C !LOCAL VARIABLES: ====================================================
                0049 C  i,j                  :: loop indices
2305125f7e Jean*0050 C  iTr                  :: ptracer number
                0051 C  jTr                  :: corresponding tracer tendency number
dbd0cb352f Mart*0052 C  bi,bj                :: tile indices
                0053 C  k                    :: vertical level
                0054       INTEGER i,j
2305125f7e Jean*0055       INTEGER iTr, jTr
e1fb02e8f0 Jean*0056       INTEGER bi,bj,iMin,iMax,jMin,jMax,k
dbd0cb352f Mart*0057 
                0058 C     gchemTendency is re-initialized here
2305125f7e Jean*0059       DO jTr = 1, GCHEM_tendTr_num
dbd0cb352f Mart*0060        DO bj=myByLo(myThid),myByHi(myThid)
                0061         DO bi=myBxLo(myThid),myBxHi(myThid)
e1fb02e8f0 Jean*0062          DO k = 1, Nr
                0063           DO j = 1-OLy, sNy+OLy
                0064            DO i = 1-OLx, sNx+OLx
2305125f7e Jean*0065             gchemTendency(i,j,k,bi,bj,jTr) = 0. _d 0
dbd0cb352f Mart*0066            ENDDO
                0067           ENDDO
847df67610 Jean*0068          ENDDO
dbd0cb352f Mart*0069         ENDDO
                0070        ENDDO
                0071       ENDDO
9c41af81f6 Timo*0072 
                0073 #ifdef ALLOW_AUTODIFF
                0074       IF ( useGCHEM ) THEN
                0075 #endif
dbd0cb352f Mart*0076 C     Here is the place for code to compute bio-geochemical
                0077 C     tendency terms (sometimes referred to as source-minus-sink
                0078 C     terms). The tendencies are stored on gchemTendency, as show
                0079 C     in the CFC-example.
                0080 C
                0081 C     loop over tiles
                0082       DO bj=myByLo(myThid),myByHi(myThid)
                0083        DO bi=myBxLo(myThid),myBxHi(myThid)
                0084 C     define horizontal loop ranges
                0085         iMin = 1
                0086         iMax = sNx
                0087         jMin = 1
                0088         jMax = sNy
2305125f7e Jean*0089 c       DO jTr = 1, GCHEM_tendTr_num
                0090 c        iTr = jTr + gchem_sepFTr_num
b47b5cf35c Jean*0091 c        DO k = 1, Nr
                0092 c         DO j = 1-OLy, sNy+OLy
                0093 c          DO i = 1-OLx, sNx+OLx
2305125f7e Jean*0094 c           gchemTendency(i,j,k,bi,bj,jTr) = your specific model
b47b5cf35c Jean*0095 c          ENDDO
                0096 c         ENDDO
                0097 c        ENDDO
                0098 c       ENDDO
847df67610 Jean*0099 
b47b5cf35c Jean*0100 C------------------------
                0101 C chemical forcing      |
                0102 C------------------------
d4e767fb31 Jean*0103 #ifdef ALLOW_SPOIL
                0104         IF ( useSPOIL ) THEN
                0105           CALL SPOIL_CALC_TENDENCY( bi, bj,
                0106      I                              myTime, myIter, myThid )
                0107         ENDIF
                0108 #endif /* ALLOW_SPOIL */
                0109 
dbd0cb352f Mart*0110 #ifdef ALLOW_CFC
b47b5cf35c Jean*0111         IF ( useCFC ) THEN
2305125f7e Jean*0112          iTr = CFC_pTr_i1
                0113          jTr = iTr - gchem_sepFTr_num
b47b5cf35c Jean*0114          CALL CFC11_FORCING(
2305125f7e Jean*0115      I                       pTracer     (1-OLx,1-OLy,1,bi,bj,iTr),
                0116      U                       gchemTendency(1-OLx,1-OLy,1,bi,bj,jTr),
b47b5cf35c Jean*0117      I                       bi, bj, iMin, iMax, jMin, jMax,
                0118      I                       myTime, myIter, myThid )
2305125f7e Jean*0119          iTr = CFC_pTr_i1 + 1
                0120          jTr = iTr - gchem_sepFTr_num
b47b5cf35c Jean*0121          CALL CFC12_FORCING(
2305125f7e Jean*0122      I                       pTracer     (1-OLx,1-OLy,1,bi,bj,iTr),
                0123      U                       gchemTendency(1-OLx,1-OLy,1,bi,bj,jTr),
b47b5cf35c Jean*0124      I                       bi, bj, iMin, iMax, jMin, jMax,
                0125      I                       myTime, myIter, myThid )
                0126         ENDIF
dbd0cb352f Mart*0127 #endif /* ALLOW_CFC */
b47b5cf35c Jean*0128 
dbd0cb352f Mart*0129 C     end of tile-loops
                0130        ENDDO
                0131       ENDDO
9c41af81f6 Timo*0132 #ifdef ALLOW_AUTODIFF
                0133       ENDIF
                0134 #endif
2305125f7e Jean*0135 #endif /* GCHEM_ADD2TR_TENDENCY */
dbd0cb352f Mart*0136 
                0137       RETURN
                0138       END