Back to home page

MITgcm

 
 

    


File indexing completed on 2025-06-13 05:08:41 UTC

view on githubraw file Latest commit b26a461d on 2025-06-12 20:15:47 UTC
6d54cf9ca1 Ed H*0001 #include "DIC_OPTIONS.h"
b26a461de7 Mart*0002 #ifdef ALLOW_AUTODIFF
                0003 # include "AUTODIFF_OPTIONS.h"
                0004 #endif
daab022f42 Step*0005 
08536d17ba Step*0006 CBOP
                0007 C !ROUTINE: DIC_BIOTIC_FORCING
                0008 
                0009 C !INTERFACE: ==========================================================
da9555d02d Jean*0010       SUBROUTINE DIC_BIOTIC_FORCING(
                0011      U                      PTR_DIC, PTR_ALK, PTR_PO4, PTR_DOP,
25bac1e456 Step*0012 #ifdef ALLOW_O2
da9555d02d Jean*0013      U                      PTR_O2,
25bac1e456 Step*0014 #endif
daab022f42 Step*0015 #ifdef ALLOW_FE
da9555d02d Jean*0016      U                      PTR_FE,
daab022f42 Step*0017 #endif
da9555d02d Jean*0018      I                      bi, bj, iMin, iMax, jMin, jMax,
2e3e8c330d Jona*0019      I                      myTime, myIter, myThid )
daab022f42 Step*0020 
08536d17ba Step*0021 C !DESCRIPTION:
                0022 C updates all the tracers for the effects of air-sea exchange, biological
                0023 c activity and remineralization
daab022f42 Step*0024 
08536d17ba Step*0025 C !USES: ===============================================================
                0026       IMPLICIT NONE
daab022f42 Step*0027 #include "SIZE.h"
                0028 #include "EEPARAMS.h"
                0029 #include "PARAMS.h"
                0030 #include "GRID.h"
da9555d02d Jean*0031 #include "DYNVARS.h"
2ef8966791 Davi*0032 #include "DIC_VARS.h"
c3ce348a09 Davi*0033 #include "PTRACERS_SIZE.h"
                0034 #include "PTRACERS_PARAMS.h"
b26a461de7 Mart*0035 #ifdef ALLOW_AUTODIFF_TAMC
                0036 # include "tamc.h"
                0037 #endif
daab022f42 Step*0038 
da9555d02d Jean*0039 C !INPUT/OUTPUT PARAMETERS: ===================================================
08536d17ba Step*0040 C  PTR_DIC              :: dissolced inorganic carbon
                0041 C  PTR_ALK              :: alkalinity
                0042 C  PTR_PO4              :: phosphate
                0043 c  PTR_DOP              :: dissolve organic phosphurous
                0044 c  PTR_O2               :: oxygen
                0045 C  PTR_FE               :: iron
da9555d02d Jean*0046 c  bi, bj               :: current tile indices
                0047 C  myTime               :: current time
2e3e8c330d Jona*0048 C  myIter               :: current timestep
da9555d02d Jean*0049 C  myThid               :: thread number
daab022f42 Step*0050       _RL  PTR_DIC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
                0051       _RL  PTR_ALK(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
                0052       _RL  PTR_PO4(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
                0053       _RL  PTR_DOP(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
25bac1e456 Step*0054 #ifdef ALLOW_O2
daab022f42 Step*0055       _RL  PTR_O2(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
25bac1e456 Step*0056 #endif
daab022f42 Step*0057 #ifdef ALLOW_FE
                0058       _RL  PTR_FE(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
                0059 #endif
da9555d02d Jean*0060       INTEGER bi, bj, iMin, iMax, jMin, jMax
                0061       _RL myTime
2e3e8c330d Jona*0062       INTEGER myIter
da9555d02d Jean*0063       INTEGER myThid
daab022f42 Step*0064 
                0065 #ifdef DIC_BIOTIC
2e3e8c330d Jona*0066 C !FUNCTIONS:       ====================================================
                0067       LOGICAL  DIFFERENT_MULTIPLE
                0068       EXTERNAL DIFFERENT_MULTIPLE
08536d17ba Step*0069 
                0070 C !LOCAL VARIABLES: ====================================================
                0071 C  i,j,k                  :: loop indices
                0072 C  G*                     :: tendency term for the tracers
                0073 C  SURA                   :: tendency of alkalinity due to freshwater
                0074 C  SURC                   :: tendency of DIC due to air-sea exchange
                0075 C                            and virtual flux
                0076 C  SURO                   :: tendency of O2 due to air-sea exchange
ac7a11a12a Davi*0077 C  GPO4                   :: tendency of PO4 due to biological productivity,
08536d17ba Step*0078 C                            exchange with DOP pool and reminerization
3c9c51750e Jean*0079 C  CAR                    :: carbonate changes due to biological
e18333c42b Davi*0080 C                             productivity and remineralization
bcb0b0f435 Davi*0081 C  BIOac                  :: biological productivity
e18333c42b Davi*0082 C  RDOP                   :: DOP sink due to remineralization
                0083 C  pflux                  :: changes to PO4 due to flux and remineralization
3c9c51750e Jean*0084 C  CAR_S                  :: carbonate sink
e18333c42b Davi*0085 C  cflux                  :: carbonate changes due to flux and remineralization
                0086 C  freefe                 :: iron not bound to ligand
daab022f42 Step*0087       _RL  GDIC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
                0088       _RL  GALK(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
                0089       _RL  GPO4(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
                0090       _RL  GDOP(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
                0091       _RL  SURA(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
                0092       _RL  SURC(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
                0093       _RL  SURO(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
                0094       _RL  CAR(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
bcb0b0f435 Davi*0095       _RL  BIOac(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
e18333c42b Davi*0096       _RL  RDOP(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
daab022f42 Step*0097       _RL  pflux(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
65132eb687 Step*0098       _RL  exportflux(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
e18333c42b Davi*0099       _RL  CAR_S(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
daab022f42 Step*0100       _RL  cflux(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
25bac1e456 Step*0101 #ifdef ALLOW_O2
                0102       _RL  GO2(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
                0103 #endif
daab022f42 Step*0104 #ifdef ALLOW_FE
                0105       _RL  GFE(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
                0106       _RL  freefe(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
                0107 #endif
5979b35251 Jean*0108       INTEGER i,j,k
9b2642687a Jean*0109 #ifdef ALLOW_FE
                0110 # ifdef SEDFE
5979b35251 Jean*0111       INTEGER kBottom
9b2642687a Jean*0112 # endif
                0113 #endif
b26a461de7 Mart*0114 #ifdef ALLOW_AUTODIFF_TAMC
                0115 C     tkey :: tape key TAF-AD simulations (depends on tiles)
                0116       INTEGER tkey
                0117 #endif
08536d17ba Step*0118 CEOP
daab022f42 Step*0119 
5979b35251 Jean*0120 #ifdef ALLOW_DEBUG
                0121       IF (debugMode) CALL DEBUG_ENTER('DIC_BIOTIC_FORCING',myThid)
                0122 #endif
                0123 
b26a461de7 Mart*0124 #ifdef ALLOW_AUTODIFF_TAMC
                0125       tkey = bi + (bj-1)*nSx + (ikey_dynamics-1)*nSx*nSy
                0126 #endif
f18a542536 Jean*0127       IF ( useThSIce .OR. useSEAICE .OR. useCoupler ) THEN
                0128 #ifdef ALLOW_DEBUG
                0129         IF (debugMode) CALL DEBUG_CALL('DIC_FIELDS_UPDATE',myThid)
                0130 #endif
                0131         CALL DIC_FIELDS_UPDATE(
                0132      I                    bi, bj, myTime, myIter, myThid )
                0133       ENDIF
                0134 
daab022f42 Step*0135        DO k=1,Nr
                0136          DO j=1-OLy,sNy+OLy
                0137           DO i=1-OLx,sNx+OLx
e18333c42b Davi*0138            RDOP(i,j,k) =0. _d 0
bcb0b0f435 Davi*0139            GDIC(i,j,k) =0. _d 0
                0140            GALK(i,j,k) =0. _d 0
                0141            GPO4(i,j,k) =0. _d 0
                0142            GDOP(i,j,k) =0. _d 0
                0143            CAR(i,j,k)  =0. _d 0
                0144            BIOac(i,j,k)   =0. _d 0
                0145            pflux(i,j,k)   =0. _d 0
                0146            exportflux(i,j,k)=0. _d 0
                0147            cflux(i,j,k)   =0. _d 0
e18333c42b Davi*0148            CAR_S(i,j,k)   =0. _d 0
25bac1e456 Step*0149 #ifdef ALLOW_O2
bcb0b0f435 Davi*0150            GO2(i,j,k)     =0. _d 0
25bac1e456 Step*0151 #endif
daab022f42 Step*0152 #ifdef ALLOW_FE
bcb0b0f435 Davi*0153            GFE(i,j,k)     =0. _d 0
85d94247b5 Jean*0154 C  no longer needed after adding full initialisation of freefe in S/R FE_CHEM
                0155 c          freefe(i,j,k)  =0. _d 0
daab022f42 Step*0156 #endif
                0157           ENDDO
                0158          ENDDO
                0159        ENDDO
da9555d02d Jean*0160        DO j=1-OLy,sNy+OLy
                0161          DO i=1-OLx,sNx+OLx
ac7a11a12a Davi*0162            SURA(i,j)   =0. _d 0
                0163            SURC(i,j)   =0. _d 0
                0164            SURO(i,j)   =0. _d 0
                0165          ENDDO
da9555d02d Jean*0166        ENDDO
daab022f42 Step*0167 
6bf15b6a7c Jean*0168 C carbon air-sea interaction
5979b35251 Jean*0169 #ifdef ALLOW_DEBUG
                0170        IF (debugMode) CALL DEBUG_CALL('DIC_SURFFORCING',myThid)
                0171 #endif
da9555d02d Jean*0172        CALL DIC_SURFFORCING(
                0173      I                    PTR_DIC, PTR_ALK, PTR_PO4,
                0174      O                    SURC,
                0175      I                    bi, bj, iMin, iMax, jMin, jMax,
2e3e8c330d Jona*0176      I                    myTime, myIter, myThid )
daab022f42 Step*0177 
b26a461de7 Mart*0178 #ifdef ALLOW_AUTODIFF_TAMC
                0179 CADJ STORE Kwexch_pre(:,:,bi,bj) = comlev1_bibj, key=tkey, kind=isbyte
                0180 #endif
                0181 
6bf15b6a7c Jean*0182 C alkalinity air-sea interaction
5979b35251 Jean*0183 #ifdef ALLOW_DEBUG
                0184        IF (debugMode) CALL DEBUG_CALL('ALK_SURFFORCING',myThid)
                0185 #endif
da9555d02d Jean*0186        CALL ALK_SURFFORCING(
                0187      I                    PTR_ALK,
                0188      O                    SURA,
                0189      I                    bi, bj, iMin, iMax, jMin, jMax,
2e3e8c330d Jona*0190      I                    myTime, myIter, myThid )
daab022f42 Step*0191 
25bac1e456 Step*0192 #ifdef ALLOW_O2
6bf15b6a7c Jean*0193 C oxygen air-sea interaction
5979b35251 Jean*0194 #ifdef ALLOW_DEBUG
                0195        IF (debugMode) CALL DEBUG_CALL('O2_SURFFORCING',myThid)
                0196 #endif
da9555d02d Jean*0197        CALL O2_SURFFORCING(
                0198      I                    PTR_O2,
                0199      O                    SURO,
                0200      I                    bi, bj, iMin, iMax, jMin, jMax,
2e3e8c330d Jona*0201      I                    myTime, myIter, myThid )
25bac1e456 Step*0202 #endif
daab022f42 Step*0203 
                0204 #ifdef ALLOW_FE
6bf15b6a7c Jean*0205 C find free iron
5979b35251 Jean*0206 #ifdef ALLOW_DEBUG
                0207        IF (debugMode) CALL DEBUG_CALL('FE_CHEM',myThid)
                0208 #endif
da9555d02d Jean*0209        CALL FE_CHEM( bi, bj, iMin, iMax, jMin, jMax,
                0210      U               PTR_FE,
                0211      O               freefe,
                0212      I               myIter, myThid )
daab022f42 Step*0213 #endif
                0214 
6bf15b6a7c Jean*0215 C biological activity
5979b35251 Jean*0216 #ifdef ALLOW_DEBUG
                0217        IF (debugMode) CALL DEBUG_CALL('BIO_EXPORT',myThid)
                0218 #endif
da9555d02d Jean*0219        CALL BIO_EXPORT(
2e3e8c330d Jona*0220      I                    PTR_PO4,
daab022f42 Step*0221 #ifdef ALLOW_FE
2e3e8c330d Jona*0222      I                    PTR_FE,
3c9c51750e Jean*0223 #endif
2e3e8c330d Jona*0224      O                    BIOac,
                0225      I                    bi, bj, iMin, iMax, jMin, jMax,
                0226      I                    myTime, myIter, myThid )
b26a461de7 Mart*0227 #ifdef ALLOW_AUTODIFF_TAMC
                0228 CADJ STORE BIOac = comlev1_bibj, key = tkey, kind = isbyte
                0229 #endif
daab022f42 Step*0230 
6bf15b6a7c Jean*0231 C flux of po4 from layers with biological activity
5979b35251 Jean*0232 #ifdef ALLOW_DEBUG
                0233        IF (debugMode) CALL DEBUG_CALL('PHOS_FLUX',myThid)
                0234 #endif
da9555d02d Jean*0235        CALL PHOS_FLUX(
2e3e8c330d Jona*0236      I                    BIOac,
                0237      U                    pflux, exportflux,
                0238      I                    bi, bj, iMin, iMax, jMin, jMax,
                0239      I                    myTime, myIter, myThid )
daab022f42 Step*0240 
e18333c42b Davi*0241 C- Carbonate sink
                0242        DO k=1,Nr
da9555d02d Jean*0243          DO j=jMin,jMax
                0244           DO i=iMin,iMax
e18333c42b Davi*0245              CAR_S(i,j,k)=BIOac(i,j,k)*R_CP*rain_ratio(i,j,bi,bj)*
3c9c51750e Jean*0246      &                    (1. _d 0-DOPfraction)
e18333c42b Davi*0247           ENDDO
                0248          ENDDO
                0249        ENDDO
                0250 
6bf15b6a7c Jean*0251 C carbonate
2e3e8c330d Jona*0252 #ifdef DIC_CALCITE_SAT
                0253        IF ( useCalciteSaturation ) THEN
                0254 C calcite dissolution occurs only below saturation horizon
                0255 C    code following method by Karsten Friis
                0256 C could be expensive, so find out if it is time to update the omega calcite
                0257 C    field (requires 3-d computation of pH).
ae2be6150b Jona*0258         IF ( myIter.EQ.(nIter0 + 1) .OR.
                0259      &       DIFFERENT_MULTIPLE( calcOmegaCalciteFreq,
                0260      &                           myTime, deltaTClock ) ) THEN
5979b35251 Jean*0261 #ifdef ALLOW_DEBUG
                0262           IF (debugMode) CALL DEBUG_CALL('CALCITE_SATURATION',myThid)
                0263 #endif
                0264           CALL CALCITE_SATURATION(
da9555d02d Jean*0265      I                    PTR_DIC, PTR_ALK, PTR_PO4,
                0266      I                    bi, bj, iMin, iMax, jMin, jMax,
2e3e8c330d Jona*0267      I                    myTime, myIter, myThid )
4e9f2133df Step*0268         ENDIF
5979b35251 Jean*0269 #ifdef ALLOW_DEBUG
                0270         IF (debugMode) CALL DEBUG_CALL('CAR_FLUX_OMEGA_TOP',myThid)
                0271 #endif
da9555d02d Jean*0272         CALL CAR_FLUX_OMEGA_TOP(
                0273      I                    BIOac,
                0274      O                    cflux,
                0275      I                    bi, bj, iMin, iMax, jMin, jMax,
2e3e8c330d Jona*0276      I                    myTime, myIter, myThid )
                0277        ELSE
                0278 #endif /* DIC_CALCITE_SAT */
                0279 C calcite dissolution occurs according to a power law scaled by zca
                0280 C    code follwing the old OCMIP way
5979b35251 Jean*0281 #ifdef ALLOW_DEBUG
                0282         IF (debugMode) CALL DEBUG_CALL('CAR_FLUX',myThid)
                0283 #endif
2e3e8c330d Jona*0284          CALL CAR_FLUX(
da9555d02d Jean*0285      I                    CAR_S,
                0286      U                    cflux,
                0287      I                    bi, bj, iMin, iMax, jMin, jMax,
2e3e8c330d Jona*0288      I                    myTime, myIter, myThid )
                0289 #ifdef DIC_CALCITE_SAT
                0290        ENDIF
                0291 #endif /* DIC_CALCITE_SAT */
daab022f42 Step*0292 
6bf15b6a7c Jean*0293 C add all tendencies for PO4, DOP, ALK, DIC
daab022f42 Step*0294        DO k=1,Nr
da9555d02d Jean*0295          DO j=jMin,jMax
                0296           DO i=iMin,iMax
7e2ce5eae8 Davi*0297 #ifdef DIC_NO_NEG
                0298            RDOP(i,j,k)= MAX(maskC(i,j,k,bi,bj)*KDOPRemin*PTR_DOP(i,j,k)
                0299      &                     ,0. _d 0)
                0300 #else
                0301            RDOP(i,j,k)= maskC(i,j,k,bi,bj)*KDOPRemin*PTR_DOP(i,j,k)
                0302 #endif
e18333c42b Davi*0303            GPO4(i,j,k)=-BIOac(i,j,k)+pflux(i,j,k) + RDOP(i,j,k)
ac7a11a12a Davi*0304 
e18333c42b Davi*0305            car(i,j,k) = cflux(i,j,k) - CAR_S(i,j,k)
ac7a11a12a Davi*0306 
e18333c42b Davi*0307            GDOP(i,j,k)=+BIOac(i,j,k)*DOPfraction - RDOP(i,j,k)
ac7a11a12a Davi*0308 
                0309            GALK(i,j,k)=+2. _d 0 *car(i,j,k)-R_NP*GPO4(i,j,k)
                0310 
                0311            GDIC(i,j,k)=car(i,j,k)+R_CP*GPO4(i,j,k)
                0312 
25bac1e456 Step*0313 #ifdef ALLOW_O2
ac7a11a12a Davi*0314            if (PTR_O2(i,j,k).GT.O2crit) then
                0315              GO2(i,j,k)= R_OP*GPO4(i,j,k)
daab022f42 Step*0316            else
ac7a11a12a Davi*0317              GO2(i,j,k)= 0. _d 0
daab022f42 Step*0318            endif
25bac1e456 Step*0319 #endif
daab022f42 Step*0320 #ifdef ALLOW_FE
e18333c42b Davi*0321            GFE(i,j,k) = R_FeP*GPO4(i,j,k)
                0322      &                 -Kscav*freefe(i,j,k)
daab022f42 Step*0323 #endif
ac7a11a12a Davi*0324           ENDDO
                0325          ENDDO
                0326        ENDDO
                0327 
da9555d02d Jean*0328        DO j=jMin,jMax
                0329          DO i=iMin,iMax
daab022f42 Step*0330                GALK(i,j,1)=GALK(i,j,1)+SURA(i,j)
                0331                GDIC(i,j,1)=GDIC(i,j,1)+SURC(i,j)
25bac1e456 Step*0332 #ifdef ALLOW_O2
ac7a11a12a Davi*0333                GO2(i,j,1) =GO2(i,j,1)+SURO(i,j)
25bac1e456 Step*0334 #endif
daab022f42 Step*0335 #ifdef ALLOW_FE
                0336                GFE(i,j,1)=GFE(i,j,1)+alpfe*
55d8dbd247 Step*0337      &                    InputFe(i,j,bi,bj)*recip_drF(1)
                0338      &                       *recip_hFacC(i,j,1,bi,bj)
9b2642687a Jean*0339 # ifdef SEDFE
                0340 C include iron sediment source using the flux of po4 into bottom layer
                0341                kBottom   = MAX(kLowC(i,j,bi,bj),1)
                0342                GFE(i,j,kBottom)=GFE(i,j,kBottom)
                0343      &              +( fesedflux_pcm*pflux(i,j,kBottom) + FeIntSec )
                0344      &              *recip_drF(kBottom)*recip_hFacC(i,j,kBottom,bi,bj)
                0345 # endif
daab022f42 Step*0346 #endif
                0347          ENDDO
da9555d02d Jean*0348        ENDDO
daab022f42 Step*0349 
da9555d02d Jean*0350        IF ( useOBCS ) THEN
                0351         DO k=1,Nr
                0352          DO j=jMin,jMax
                0353           DO i=iMin,iMax
                0354             GDIC(i,j,k) = GDIC(i,j,k)*maskInC(i,j,bi,bj)
                0355             GALK(i,j,k) = GALK(i,j,k)*maskInC(i,j,bi,bj)
                0356             GPO4(i,j,k) = GPO4(i,j,k)*maskInC(i,j,bi,bj)
                0357             GDOP(i,j,k) = GDOP(i,j,k)*maskInC(i,j,bi,bj)
                0358 #ifdef ALLOW_O2
                0359             GO2(i,j,k)  =  GO2(i,j,k)*maskInC(i,j,bi,bj)
                0360 #endif
                0361 #ifdef ALLOW_FE
                0362             GFE(i,j,k)  =  GFE(i,j,k)*maskInC(i,j,bi,bj)
                0363 #endif
                0364           ENDDO
                0365          ENDDO
                0366         ENDDO
                0367        ENDIF
daab022f42 Step*0368 
                0369 C update
                0370        DO k=1,Nr
da9555d02d Jean*0371          DO j=jMin,jMax
                0372           DO i=iMin,iMax
daab022f42 Step*0373            PTR_DIC(i,j,k)=
c3ce348a09 Davi*0374      &      PTR_DIC(i,j,k)+GDIC(i,j,k)*PTRACERS_dTLev(k)
daab022f42 Step*0375            PTR_ALK(i,j,k)=
c3ce348a09 Davi*0376      &      PTR_ALK(i,j,k)+GALK(i,j,k)*PTRACERS_dTLev(k)
daab022f42 Step*0377            PTR_PO4(i,j,k)=
c3ce348a09 Davi*0378      &      PTR_PO4(i,j,k)+GPO4(i,j,k)*PTRACERS_dTLev(k)
daab022f42 Step*0379            PTR_DOP(i,j,k)=
c3ce348a09 Davi*0380      &      PTR_DOP(i,j,k)+GDOP(i,j,k)*PTRACERS_dTLev(k)
25bac1e456 Step*0381 #ifdef ALLOW_O2
daab022f42 Step*0382            PTR_O2(i,j,k)=
c3ce348a09 Davi*0383      &      PTR_O2(i,j,k)+GO2(i,j,k)*PTRACERS_dTLev(k)
25bac1e456 Step*0384 #endif
daab022f42 Step*0385 #ifdef ALLOW_FE
                0386            PTR_FE(i,j,k)=
c3ce348a09 Davi*0387      &      PTR_FE(i,j,k)+GFE(i,j,k)*PTRACERS_dTLev(k)
daab022f42 Step*0388 #endif
                0389           ENDDO
                0390          ENDDO
                0391        ENDDO
                0392 
9b8a71f139 Step*0393 #ifdef ALLOW_FE
                0394 #ifdef MINFE
                0395 c find free iron and get rid of insoluble part
5979b35251 Jean*0396 #ifdef ALLOW_DEBUG
                0397        IF (debugMode) CALL DEBUG_CALL('FE_CHEM',myThid)
                0398 #endif
da9555d02d Jean*0399        CALL FE_CHEM( bi, bj, iMin, iMax, jMin, jMax,
                0400      U               PTR_FE,
                0401      O               freefe,
                0402      I               myIter, myThid )
3c9c51750e Jean*0403 #endif
9b8a71f139 Step*0404 #endif
                0405 
3c9c51750e Jean*0406 #ifdef ALLOW_TIMEAVE
6bf15b6a7c Jean*0407 C save averages
0955b89c88 Davi*0408        IF ( PTRACERS_taveFreq.GT.0. ) THEN
3c9c51750e Jean*0409         DO k=1,Nr
da9555d02d Jean*0410          DO j=jMin,jMax
                0411           DO i=iMin,iMax
bcb0b0f435 Davi*0412             BIOave(i,j,k,bi,bj)   =BIOave(i,j,k,bi,bj)+
85d94247b5 Jean*0413      &                             BIOac(i,j,k)*deltaTClock
bcb0b0f435 Davi*0414             CARave(i,j,k,bi,bj)   =CARave(i,j,k,bi,bj)+
85d94247b5 Jean*0415      &                             CAR(i,j,k)*deltaTClock
bcb0b0f435 Davi*0416             pfluxave(i,j,k,bi,bj) =pfluxave(i,j,k,bi,bj) +
85d94247b5 Jean*0417      &                             pflux(i,j,k)*deltaTClock
bcb0b0f435 Davi*0418             epfluxave(i,j,k,bi,bj)=epfluxave(i,j,k,bi,bj) +
85d94247b5 Jean*0419      &                             exportflux(i,j,k)*deltaTClock
bcb0b0f435 Davi*0420             cfluxave(i,j,k,bi,bj) =cfluxave(i,j,k,bi,bj) +
85d94247b5 Jean*0421      &                             cflux(i,j,k)*deltaTClock
bcb0b0f435 Davi*0422           ENDDO
                0423          ENDDO
3c9c51750e Jean*0424         ENDDO
da9555d02d Jean*0425          DO j=jMin,jMax
                0426           DO i=iMin,iMax
bcb0b0f435 Davi*0427               SURave(i,j,bi,bj)    =SURave(i,j,bi,bj)+
85d94247b5 Jean*0428      &                              SURC(i,j)*deltaTClock
25bac1e456 Step*0429 #ifdef ALLOW_O2
bcb0b0f435 Davi*0430               SUROave(i,j,bi,bj)   =SUROave(i,j,bi,bj)+
85d94247b5 Jean*0431      &                              SURO(i,j)*deltaTClock
25bac1e456 Step*0432 #endif
bcb0b0f435 Davi*0433               pCO2ave(i,j,bi,bj)   =pCO2ave(i,j,bi,bj)+
85d94247b5 Jean*0434      &                              pCO2(i,j,bi,bj)*deltaTClock
bcb0b0f435 Davi*0435               pHave(i,j,bi,bj)     =pHave(i,j,bi,bj)+
85d94247b5 Jean*0436      &                              pH(i,j,bi,bj)*deltaTClock
6891e8b81c Step*0437               fluxCO2ave(i,j,bi,bj)=fluxCO2ave(i,j,bi,bj)+
85d94247b5 Jean*0438      &                           fluxCO2(i,j,bi,bj)*deltaTClock
daab022f42 Step*0439           ENDDO
                0440          ENDDO
85d94247b5 Jean*0441          DIC_timeAve(bi,bj) = DIC_timeAve(bi,bj)+deltaTClock
3c9c51750e Jean*0442        ENDIF
bcb0b0f435 Davi*0443 #endif /* ALLOW_TIMEAVE*/
daab022f42 Step*0444 
bcb0b0f435 Davi*0445 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0446 
                0447 #ifdef ALLOW_DIAGNOSTICS
                0448       IF ( useDiagnostics ) THEN
                0449         CALL DIAGNOSTICS_FILL(BIOac  ,'DICBIOA ',0,Nr,2,bi,bj,myThid)
                0450         CALL DIAGNOSTICS_FILL(CAR    ,'DICCARB ',0,Nr,2,bi,bj,myThid)
                0451         CALL DIAGNOSTICS_FILL(pCO2   ,'DICPCO2 ',0,1 ,1,bi,bj,myThid)
                0452         CALL DIAGNOSTICS_FILL(fluxCO2,'DICCFLX ',0,1 ,1,bi,bj,myThid)
                0453         CALL DIAGNOSTICS_FILL(pH     ,'DICPHAV ',0,1 ,1,bi,bj,myThid)
                0454         CALL DIAGNOSTICS_FILL(SURC   ,'DICTFLX ',0,1 ,2,bi,bj,myThid)
                0455 #ifdef ALLOW_O2
                0456         CALL DIAGNOSTICS_FILL(SURO   ,'DICOFLX ',0,1 ,2,bi,bj,myThid)
daab022f42 Step*0457 #endif
bcb0b0f435 Davi*0458       ENDIF
                0459 #endif /* ALLOW_DIAGNOSTICS */
                0460 
5979b35251 Jean*0461 #ifdef ALLOW_DEBUG
                0462       IF (debugMode) CALL DEBUG_LEAVE('DIC_BIOTIC_FORCING',myThid)
                0463 #endif
                0464 
bcb0b0f435 Davi*0465 #endif /* DIC_BIOTIC */
daab022f42 Step*0466 
                0467        RETURN
                0468        END