Back to home page

darwin3

 
 

    


File indexing completed on 2025-09-13 12:07:39 UTC

view on githubraw file Latest commit 11d365ac on 2025-06-05 16:41:12 UTC
8fbfd1f382 Oliv*0001 #include "DARWIN_OPTIONS.h"
                0002 
b1c723aa53 Oliv*0003 CBOP
                0004 C !ROUTINE: DARWIN_CONS
                0005 C !INTERFACE: ==========================================================
                0006       SUBROUTINE DARWIN_CONS(stage,myTime,myIter,myThid)
                0007 
                0008 C !DESCRIPTION:
                0009 C     Check conservation in the model
                0010 
                0011 C !USES: ===============================================================
                0012       IMPLICIT NONE
8fbfd1f382 Oliv*0013 #include "SIZE.h"
                0014 #include "EEPARAMS.h"
                0015 #include "PARAMS.h"
                0016 #include "GRID.h"
16faaabac2 Oliv*0017 #include "FFIELDS.h"
407760706f Oliv*0018 #include "SURFACE.h"
16faaabac2 Oliv*0019 #include "DYNVARS.h"
8fbfd1f382 Oliv*0020 #include "PTRACERS_SIZE.h"
5e411acc9e Oliv*0021 #include "PTRACERS_PARAMS.h"
8fbfd1f382 Oliv*0022 #include "PTRACERS_FIELDS.h"
                0023 #include "DARWIN_SIZE.h"
                0024 #include "DARWIN_INDICES.h"
                0025 #include "DARWIN_PARAMS.h"
                0026 #include "DARWIN_TRAITS.h"
                0027 #include "DARWIN_FIELDS.h"
d63a4681e3 Oliv*0028 #include "DARWIN_EXF_PARAMS.h"
a59ebcf0a3 Oliv*0029 #include "DARWIN_EXF_FIELDS.h"
8fbfd1f382 Oliv*0030 
b1c723aa53 Oliv*0031 C !INPUT PARAMETERS: ===================================================
                0032       INTEGER stage
8fbfd1f382 Oliv*0033       _RL myTime
                0034       INTEGER myIter
                0035       INTEGER myThid
b1c723aa53 Oliv*0036 CEOP
8fbfd1f382 Oliv*0037 
                0038 #ifdef DARWIN_ALLOW_CONS
                0039 
16faaabac2 Oliv*0040 C !FUNCTIONS: ==========================================================
                0041       LOGICAL  DIAGNOSTICS_IS_ON
                0042       EXTERNAL DIAGNOSTICS_IS_ON
                0043 
b1c723aa53 Oliv*0044 C !LOCAL VARIABLES: ====================================================
5e411acc9e Oliv*0045       _RL tilevol(nSx,nSy)
                0046       _RL tiletotC(nSx,nSy)
                0047       _RL tiletotN(nSx,nSy)
                0048       _RL tiletotP(nSx,nSy)
                0049       _RL tiletotFe(nSx,nSy)
                0050       _RL tiletotSi(nSx,nSy)
                0051       _RL tiletotNfix(nSx,nSy)
                0052       _RL tiletotNdenit(nSx,nSy)
                0053       _RL tiletotscavFe(nSx,nSy)
                0054       _RL tileminFeLoss(nSx,nSy)
                0055       _RL tilesfcflxFe(nSx,nSy)
                0056       _RL tilesedflxFe(nSx,nSy)
2c93eb88ef Oliv*0057       _RL tileventflxFe(nSx,nSy)
5e411acc9e Oliv*0058       _RL tilesfcflxC(nSx,nSy)
                0059       _RL tilevirflxC(nSx,nSy)
248275f1c4 Oliv*0060 #ifdef DARWIN_BOTTOM_SINK
                0061       _RL tileBotSnkC(nSx,nSy)
                0062       _RL tileBotSnkN(nSx,nSy)
                0063       _RL tileBotSnkP(nSx,nSy)
                0064       _RL tileBotSnkFe(nSx,nSy)
                0065       _RL tileBotSnkSi(nSx,nSy)
                0066 #endif
d63a4681e3 Oliv*0067 #ifdef DARWIN_NUTRIENT_RUNOFF
                0068       _RL tilerunoffC(nSx,nSy)
                0069       _RL tilerunoffN(nSx,nSy)
                0070       _RL tilerunoffP(nSx,nSy)
                0071       _RL tilerunoffFe(nSx,nSy)
                0072       _RL tilerunoffSi(nSx,nSy)
                0073 #ifdef DARWIN_ALLOW_CARBON
                0074       _RL tilerunoffA(nSx,nSy)
                0075 #endif
                0076 #endif
16faaabac2 Oliv*0077       _RL tileFSC(nSx,nSy)
                0078       _RL tileFSN(nSx,nSy)
                0079       _RL tileFSP(nSx,nSy)
                0080       _RL tileFSFe(nSx,nSy)
                0081       _RL tileFSSi(nSx,nSy)
                0082       _RL tilePER(nSx,nSy)
407760706f Oliv*0083       _RL tileEPRC(nSx,nSy)
                0084       _RL tileEPRN(nSx,nSy)
                0085       _RL tileEPRP(nSx,nSy)
                0086       _RL tileEPRFe(nSx,nSy)
                0087       _RL tileEPRSi(nSx,nSy)
5e411acc9e Oliv*0088 #ifdef DARWIN_ALLOW_CARBON
                0089       _RL tiletotA(nSx,nSy)
                0090       _RL tileAlkSrc(nSx,nSy)
                0091       _RL tiletotO(nSx,nSy)
                0092       _RL tileO2prod(nSx,nSy)
                0093       _RL tileO2cons(nSx,nSy)
                0094       _RL tilesfcflxO(nSx,nSy)
                0095       _RL tilevirflxA(nSx,nSy)
2a97638e3d Oliv*0096       _RL tilesedflxC(nSx,nSy)
                0097       _RL tilesedflxA(nSx,nSy)
                0098       _RL tilesedflxO(nSx,nSy)
8a10163480 Oliv*0099       _RL tilesedflxP(nSx,nSy)
                0100       _RL tilesedflxN(nSx,nSy)
16faaabac2 Oliv*0101       _RL tileFSA(nSx,nSy)
                0102       _RL tileFSO(nSx,nSy)
407760706f Oliv*0103       _RL tileEPRA(nSx,nSy)
                0104       _RL tileEPRO(nSx,nSy)
5e411acc9e Oliv*0105 #endif
8fbfd1f382 Oliv*0106       _RL tmptotC
                0107       _RL tmptotN
5e411acc9e Oliv*0108       _RL tmptotP
8fbfd1f382 Oliv*0109       _RL tmptotFe
5e411acc9e Oliv*0110       _RL tmptotSi
a59ebcf0a3 Oliv*0111       _RL tmptotNfix
                0112       _RL tmptotNdenit
                0113       _RL tmptotscavFe
                0114       _RL tmpminFeLoss
5e411acc9e Oliv*0115       _RL tmpsfcflxFe
                0116       _RL tmpsedflxFe
2c93eb88ef Oliv*0117       _RL tmpventflxFe
5e411acc9e Oliv*0118       _RL tmpsfcflxC
                0119       _RL tmpvirflxC
2a97638e3d Oliv*0120       _RL tmpsedflxC
                0121       _RL tmpsedflxA
                0122       _RL tmpsedflxO
0f48d9a81b Oliv*0123       _RL tmpsedflxN
                0124       _RL tmpsedflxP
248275f1c4 Oliv*0125       _RL tmpBotSnkC
                0126       _RL tmpBotSnkN
                0127       _RL tmpBotSnkP
                0128       _RL tmpBotSnkFe
                0129       _RL tmpBotSnkSi
d63a4681e3 Oliv*0130       _RL tmprunoffC
                0131       _RL tmprunoffN
                0132       _RL tmprunoffP
                0133       _RL tmprunoffFe
                0134       _RL tmprunoffSi
                0135       _RL tmprunoffA
16faaabac2 Oliv*0136       _RL tmpFSC
                0137       _RL tmpFSN
                0138       _RL tmpFSP
                0139       _RL tmpFSFe
                0140       _RL tmpFSSi
407760706f Oliv*0141       _RL tmpEPRC
                0142       _RL tmpEPRN
                0143       _RL tmpEPRP
                0144       _RL tmpEPRFe
                0145       _RL tmpEPRSi
8fbfd1f382 Oliv*0146 #ifdef DARWIN_ALLOW_CARBON
                0147       _RL tmptotA
5e411acc9e Oliv*0148       _RL tmpAlkSrc
8fbfd1f382 Oliv*0149       _RL tmptotO
5e411acc9e Oliv*0150       _RL tmpO2prod
                0151       _RL tmpO2cons
a59ebcf0a3 Oliv*0152       _RL tmpsfcflxO
5e411acc9e Oliv*0153       _RL tmpvirflxA
16faaabac2 Oliv*0154       _RL tmpFSA
                0155       _RL tmpFSO
407760706f Oliv*0156       _RL tmpEPRA
                0157       _RL tmpEPRO
8fbfd1f382 Oliv*0158 #endif
407760706f Oliv*0159       _RL vol, voltot, dvol
16faaabac2 Oliv*0160       _RL area, areadt, fac
8fbfd1f382 Oliv*0161 
5e411acc9e Oliv*0162       INTEGER i,j,k,bi,bj,ks
8fbfd1f382 Oliv*0163       INTEGER np, iTr
5e411acc9e Oliv*0164 
                0165       ks = 1
                0166 
                0167       tmptotC = 0 _d 0
                0168       tmptotN = 0 _d 0
                0169       tmptotP = 0 _d 0
                0170       tmptotFe = 0 _d 0
                0171       tmptotSi = 0 _d 0
                0172       tmptotNfix = 0 _d 0
                0173       tmptotNdenit = 0 _d 0
                0174       tmptotscavFe = 0 _d 0
                0175       tmpminFeLoss = 0 _d 0
                0176       tmpsfcflxFe = 0 _d 0
                0177       tmpsedflxFe = 0 _d 0
2c93eb88ef Oliv*0178       tmpventflxFe = 0 _d 0
5e411acc9e Oliv*0179       tmpsfcflxC = 0 _d 0
                0180       tmpvirflxC = 0 _d 0
2a97638e3d Oliv*0181       tmpsedflxC = 0 _d 0
                0182       tmpsedflxA = 0 _d 0
                0183       tmpsedflxO = 0 _d 0
0f48d9a81b Oliv*0184       tmpsedflxN = 0 _d 0
                0185       tmpsedflxP = 0 _d 0
248275f1c4 Oliv*0186       tmpBotSnkC = 0 _d 0
                0187       tmpBotSnkN = 0 _d 0
                0188       tmpBotSnkP = 0 _d 0
                0189       tmpBotSnkFe = 0 _d 0
                0190       tmpBotSnkSi = 0 _d 0
d63a4681e3 Oliv*0191       tmprunoffC = 0 _d 0
                0192       tmprunoffN = 0 _d 0
                0193       tmprunoffP = 0 _d 0
                0194       tmprunoffFe = 0 _d 0
                0195       tmprunoffSi = 0 _d 0
                0196       tmprunoffA = 0 _d 0
16faaabac2 Oliv*0197       tmpFSC = 0 _d 0
                0198       tmpFSN = 0 _d 0
                0199       tmpFSP = 0 _d 0
                0200       tmpFSFe = 0 _d 0
                0201       tmpFSSi = 0 _d 0
407760706f Oliv*0202       tmpEPRC = 0 _d 0
                0203       tmpEPRN = 0 _d 0
                0204       tmpEPRP = 0 _d 0
                0205       tmpEPRFe = 0 _d 0
                0206       tmpEPRSi = 0 _d 0
8fbfd1f382 Oliv*0207 #ifdef DARWIN_ALLOW_CARBON
5e411acc9e Oliv*0208       tmptotA = 0 _d 0
                0209       tmpAlkSrc = 0 _d 0
                0210       tmptotO = 0 _d 0
                0211       tmpO2prod = 0 _d 0
                0212       tmpO2cons = 0 _d 0
                0213       tmpsfcflxO = 0 _d 0
                0214       tmpvirflxA = 0 _d 0
16faaabac2 Oliv*0215       tmpFSA = 0 _d 0
                0216       tmpFSO = 0 _d 0
407760706f Oliv*0217       tmpEPRA = 0 _d 0
                0218       tmpEPRO = 0 _d 0
8fbfd1f382 Oliv*0219 #endif
                0220 
                0221       DO bj=myByLo(myThid),myByHi(myThid)
                0222       DO bi=myBxLo(myThid),myBxHi(myThid)
                0223  
5e411acc9e Oliv*0224        tilevol(bi,bj) = 0. _d 0
                0225        tiletotC(bi,bj) = 0. _d 0
                0226        tiletotN(bi,bj) = 0. _d 0
                0227        tiletotP(bi,bj) = 0. _d 0
                0228        tiletotFe(bi,bj) = 0. _d 0
                0229        tiletotSi(bi,bj) = 0. _d 0
                0230        tiletotNfix(bi,bj) = 0. _d 0
                0231        tiletotNdenit(bi,bj) = 0. _d 0
                0232        tiletotscavFe(bi,bj) = 0. _d 0
                0233        tileminFeLoss(bi,bj) = 0. _d 0
                0234        tilesfcflxFe(bi,bj) = 0. _d 0
                0235        tilesedflxFe(bi,bj) = 0. _d 0
2c93eb88ef Oliv*0236        tileventflxFe(bi,bj) = 0. _d 0
5e411acc9e Oliv*0237        tilesfcflxC(bi,bj) = 0. _d 0
                0238        tilevirflxC(bi,bj) = 0. _d 0
248275f1c4 Oliv*0239 #ifdef DARWIN_BOTTOM_SINK
                0240        tileBotSnkC(bi,bj) = 0. _d 0
                0241        tileBotSnkN(bi,bj) = 0. _d 0
                0242        tileBotSnkP(bi,bj) = 0. _d 0
                0243        tileBotSnkFe(bi,bj) = 0. _d 0
                0244        tileBotSnkSi(bi,bj) = 0. _d 0
                0245 #endif
d63a4681e3 Oliv*0246 #ifdef DARWIN_NUTRIENT_RUNOFF
                0247        tilerunoffC(bi,bj) = 0. _d 0
                0248        tilerunoffN(bi,bj) = 0. _d 0
                0249        tilerunoffP(bi,bj) = 0. _d 0
                0250        tilerunoffFe(bi,bj) = 0. _d 0
                0251        tilerunoffSi(bi,bj) = 0. _d 0
                0252 #ifdef DARWIN_ALLOW_CARBON
                0253        tilerunoffA(bi,bj) = 0. _d 0
                0254 #endif
                0255 #endif
16faaabac2 Oliv*0256        tileFSC(bi,bj) = 0. _d 0
                0257        tileFSN(bi,bj) = 0. _d 0
                0258        tileFSP(bi,bj) = 0. _d 0
                0259        tileFSFe(bi,bj) = 0. _d 0
                0260        tileFSSi(bi,bj) = 0. _d 0
                0261        tilePER(bi,bj) = 0. _d 0
407760706f Oliv*0262        tileEPRC(bi,bj) = 0. _d 0
                0263        tileEPRN(bi,bj) = 0. _d 0
                0264        tileEPRP(bi,bj) = 0. _d 0
                0265        tileEPRFe(bi,bj) = 0. _d 0
                0266        tileEPRSi(bi,bj) = 0. _d 0
5e411acc9e Oliv*0267 #ifdef DARWIN_ALLOW_CARBON
                0268        tiletotA(bi,bj) = 0. _d 0
                0269        tileAlkSrc(bi,bj) = 0. _d 0
                0270        tiletotO(bi,bj) = 0. _d 0
                0271        tileO2prod(bi,bj) = 0. _d 0
                0272        tileO2cons(bi,bj) = 0. _d 0
                0273        tilesfcflxO(bi,bj) = 0. _d 0
                0274        tilevirflxA(bi,bj) = 0. _d 0
2a97638e3d Oliv*0275        tilesedflxC(bi,bj) = 0. _d 0
                0276        tilesedflxA(bi,bj) = 0. _d 0
                0277        tilesedflxO(bi,bj) = 0. _d 0
0f48d9a81b Oliv*0278        tilesedflxN(bi,bj) = 0. _d 0
                0279        tilesedflxP(bi,bj) = 0. _d 0
16faaabac2 Oliv*0280        tileFSA(bi,bj) = 0. _d 0
                0281        tileFSO(bi,bj) = 0. _d 0
407760706f Oliv*0282        tileEPRA(bi,bj) = 0. _d 0
                0283        tileEPRO(bi,bj) = 0. _d 0
5e411acc9e Oliv*0284 #endif
                0285 
                0286        DO k=1,Nr
                0287        DO j=1,sNy
                0288        DO i=1,sNx
16faaabac2 Oliv*0289 C ======================================================================
                0290 C Compute totals for each chemical element
                0291 
5e411acc9e Oliv*0292         vol=rA(i,j,bi,bj)*drF(k)*hFacC(i,j,k,bi,bj)
                0293         tilevol(bi,bj)=tilevol(bi,bj)+vol
8fbfd1f382 Oliv*0294 
16faaabac2 Oliv*0295 C Carbon budget
5e411acc9e Oliv*0296         tiletotC(bi,bj)=tiletotC(bi,bj)+Ptracer(i,j,k,bi,bj,iDIC)*vol
                0297         tiletotC(bi,bj)=tiletotC(bi,bj)+Ptracer(i,j,k,bi,bj,iDOC)*vol
                0298         tiletotC(bi,bj)=tiletotC(bi,bj)+Ptracer(i,j,k,bi,bj,iPOC)*vol
                0299         tiletotC(bi,bj)=tiletotC(bi,bj)+Ptracer(i,j,k,bi,bj,iPIC)*vol
                0300         DO np=1,nplank
                0301          iTr=ic+np-1
                0302          tiletotC(bi,bj)=tiletotC(bi,bj)+Ptracer(i,j,k,bi,bj,iTr)
                0303      &                                  *(1+R_PICPOC(np))*vol
                0304         ENDDO
c7b6c66d45 Oliv*0305 #ifdef DARWIN_ALLOW_CSTORE
5e411acc9e Oliv*0306         DO np=1,nPhoto
                0307          iTr=ich+np-1
                0308          tiletotC(bi,bj)=tiletotC(bi,bj)+Ptracer(i,j,k,bi,bj,iTr)*vol
                0309         ENDDO
c7b6c66d45 Oliv*0310 #endif
8fbfd1f382 Oliv*0311 #ifdef DARWIN_ALLOW_CDOM
1c72adde5c Oliv*0312 # ifdef DARWIN_CDOM_UNITS_CARBON
5e411acc9e Oliv*0313         tiletotC(bi,bj)=tiletotC(bi,bj)+Ptracer(i,j,k,bi,bj,iCDOM)
                0314      &                                 *vol
1c72adde5c Oliv*0315 # else
5e411acc9e Oliv*0316         tiletotC(bi,bj)=tiletotC(bi,bj)+Ptracer(i,j,k,bi,bj,iCDOM)
                0317      &                                 *R_CP_CDOM*vol
1c72adde5c Oliv*0318 # endif
8fbfd1f382 Oliv*0319 #endif
                0320 
5e411acc9e Oliv*0321 c Nitrogen budget
                0322         tiletotN(bi,bj)=tiletotN(bi,bj)+Ptracer(i,j,k,bi,bj,iNO3)*vol
                0323         tiletotN(bi,bj)=tiletotN(bi,bj)+Ptracer(i,j,k,bi,bj,iNH4)*vol
                0324         tiletotN(bi,bj)=tiletotN(bi,bj)+Ptracer(i,j,k,bi,bj,iNO2)*vol
                0325         tiletotN(bi,bj)=tiletotN(bi,bj)+Ptracer(i,j,k,bi,bj,iDON)*vol
                0326         tiletotN(bi,bj)=tiletotN(bi,bj)+Ptracer(i,j,k,bi,bj,iPON)*vol
                0327         DO np=1,nplank
                0328 #ifdef DARWIN_ALLOW_NQUOTA
                0329          iTr=in+np-1
                0330          tiletotN(bi,bj)=tiletotN(bi,bj)+Ptracer(i,j,k,bi,bj,iTr)*vol
8fbfd1f382 Oliv*0331 #else
5e411acc9e Oliv*0332          iTr=ic+np-1
                0333          tiletotN(bi,bj)=tiletotN(bi,bj)+Ptracer(i,j,k,bi,bj,iTr)
                0334      &                                  *R_NC(np)*vol
8fbfd1f382 Oliv*0335 #endif
5e411acc9e Oliv*0336         ENDDO
8fbfd1f382 Oliv*0337 #ifdef DARWIN_ALLOW_CDOM
1c72adde5c Oliv*0338 # ifdef DARWIN_CDOM_UNITS_CARBON
5e411acc9e Oliv*0339         tiletotN(bi,bj)=tiletotN(bi,bj)+Ptracer(i,j,k,bi,bj,iCDOM)
                0340      &                                 *R_NC_CDOM*vol
1c72adde5c Oliv*0341 # else
5e411acc9e Oliv*0342         tiletotN(bi,bj)=tiletotN(bi,bj)+Ptracer(i,j,k,bi,bj,iCDOM)
                0343      &                                 *R_NP_CDOM*vol
1c72adde5c Oliv*0344 # endif
8fbfd1f382 Oliv*0345 #endif
                0346 
5e411acc9e Oliv*0347 c Phosphorus budget
                0348         tiletotP(bi,bj)=tiletotP(bi,bj)+Ptracer(i,j,k,bi,bj,iPO4)*vol
                0349         tiletotP(bi,bj)=tiletotP(bi,bj)+Ptracer(i,j,k,bi,bj,iDOP)*vol
                0350         tiletotP(bi,bj)=tiletotP(bi,bj)+Ptracer(i,j,k,bi,bj,iPOP)*vol
                0351         DO np=1,nplank
                0352 #ifdef DARWIN_ALLOW_PQUOTA
                0353          iTr=ip+np-1
                0354          tiletotP(bi,bj)=tiletotP(bi,bj)+Ptracer(i,j,k,bi,bj,iTr)*vol
8fbfd1f382 Oliv*0355 #else
5e411acc9e Oliv*0356          iTr=ic+np-1
                0357          tiletotP(bi,bj)=tiletotP(bi,bj)+Ptracer(i,j,k,bi,bj,iTr)
                0358      &                                  *R_PC(np)*vol
8fbfd1f382 Oliv*0359 #endif
5e411acc9e Oliv*0360         ENDDO
8fbfd1f382 Oliv*0361 #ifdef DARWIN_ALLOW_CDOM
1c72adde5c Oliv*0362 # ifdef DARWIN_CDOM_UNITS_CARBON
5e411acc9e Oliv*0363         tiletotP(bi,bj)=tiletotP(bi,bj)+Ptracer(i,j,k,bi,bj,iCDOM)
                0364      &                                 *R_PC_CDOM*vol
1c72adde5c Oliv*0365 # else
5e411acc9e Oliv*0366         tiletotP(bi,bj)=tiletotP(bi,bj)+Ptracer(i,j,k,bi,bj,iCDOM)*vol
                0367 
1c72adde5c Oliv*0368 # endif
8fbfd1f382 Oliv*0369 #endif
                0370 
                0371 c Iron budget
5e411acc9e Oliv*0372         tiletotFe(bi,bj)=tiletotFe(bi,bj)+Ptracer(i,j,k,bi,bj,iFeT)*vol
                0373         tiletotFe(bi,bj)=tiletotFe(bi,bj)+Ptracer(i,j,k,bi,bj,iDOFe)*vol
                0374         tiletotFe(bi,bj)=tiletotFe(bi,bj)+Ptracer(i,j,k,bi,bj,iPOFe)*vol
                0375         DO np=1,nplank
8fbfd1f382 Oliv*0376 #ifdef DARWIN_ALLOW_FEQUOTA
5e411acc9e Oliv*0377          iTr=ife+np-1
                0378          tiletotFe(bi,bj)=tiletotFe(bi,bj)+Ptracer(i,j,k,bi,bj,iTr)*vol
8fbfd1f382 Oliv*0379 #else
5e411acc9e Oliv*0380          iTr=ic+np-1
                0381          tiletotFe(bi,bj)=tiletotFe(bi,bj)+Ptracer(i,j,k,bi,bj,iTr)
                0382      &                                    *R_FeC(np)*vol
8fbfd1f382 Oliv*0383 #endif
5e411acc9e Oliv*0384         ENDDO
8fbfd1f382 Oliv*0385 #ifdef DARWIN_ALLOW_CDOM
1c72adde5c Oliv*0386 # ifdef DARWIN_CDOM_UNITS_CARBON
5e411acc9e Oliv*0387         tiletotFe(bi,bj)=tiletotFe(bi,bj)+Ptracer(i,j,k,bi,bj,iCDOM)
                0388      &                                   *R_FeC_CDOM*vol
1c72adde5c Oliv*0389 # else
5e411acc9e Oliv*0390         tiletotFe(bi,bj)=tiletotFe(bi,bj)+Ptracer(i,j,k,bi,bj,iCDOM)
                0391      &                                   *R_FeP_CDOM*vol
1c72adde5c Oliv*0392 # endif
8fbfd1f382 Oliv*0393 #endif
                0394 
                0395 c Silica budget
5e411acc9e Oliv*0396         tiletotSi(bi,bj)=tiletotSi(bi,bj)+Ptracer(i,j,k,bi,bj,iSiO2)*vol
                0397         tiletotSi(bi,bj)=tiletotSi(bi,bj)+Ptracer(i,j,k,bi,bj,iPOSi)*vol
                0398         DO np=1,nplank
8fbfd1f382 Oliv*0399 #ifdef DARWIN_ALLOW_SIQUOTA
5e411acc9e Oliv*0400          iTr=isi+np-1
                0401          tiletotSi(bi,bj)=tiletotSi(bi,bj)+Ptracer(i,j,k,bi,bj,iTr)*vol
8fbfd1f382 Oliv*0402 #else
5e411acc9e Oliv*0403          iTr=ic+np-1
                0404          tiletotSi(bi,bj)=tiletotSi(bi,bj)+Ptracer(i,j,k,bi,bj,iTr)
                0405      &                                    *R_SiC(np)*vol
8fbfd1f382 Oliv*0406 #endif
5e411acc9e Oliv*0407         ENDDO
16faaabac2 Oliv*0408 
8fbfd1f382 Oliv*0409 #ifdef DARWIN_ALLOW_CARBON
5e411acc9e Oliv*0410 c alkalinity budget
                0411         tiletotA(bi,bj)=tiletotA(bi,bj)+Ptracer(i,j,k,bi,bj,iALK)*vol
                0412 c oxygem budget
                0413         tiletotO(bi,bj)=tiletotO(bi,bj)+Ptracer(i,j,k,bi,bj,iO2)*vol
                0414 c corrections
                0415         IF (stage .EQ. 0) THEN
                0416          tileAlkSrc(bi,bj)=tileAlkSrc(bi,bj)+DARWIN_AlkSrc(i,j,k,bi,bj)
                0417      &                                      *vol
                0418          tileO2prod(bi,bj)=tileO2prod(bi,bj)+DARWIN_O2prod(i,j,k,bi,bj)
                0419      &                                      *vol
                0420          tileO2cons(bi,bj)=tileO2cons(bi,bj)+DARWIN_O2cons(i,j,k,bi,bj)
                0421      &                                      *vol
                0422         ENDIF
8fbfd1f382 Oliv*0423 #endif
                0424 
16faaabac2 Oliv*0425 C ======================================================================
                0426 C 3-d conservation corrections
                0427 C       accumulate cons corrections only once per time step
5e411acc9e Oliv*0428         IF (stage .EQ. 0) THEN
                0429          tiletotNfix(bi,bj)=tiletotNfix(bi,bj)+DARWIN_Nfix(i,j,k,bi,bj)
                0430      &                                        *vol
                0431          tiletotNdenit(bi,bj)=tiletotNdenit(bi,bj)
                0432      &                       +DARWIN_Ndenit(i,j,k,bi,bj)*vol
                0433          tiletotscavFe(bi,bj)=tiletotScavFe(bi,bj)
                0434      &                       +DARWIN_partScav(i,j,k,bi,bj)*vol
                0435          tileminFeLoss(bi,bj)=tileminFeLoss(bi,bj)
                0436      &                       +DARWIN_minFeLoss(i,j,k,bi,bj)*vol
                0437         ENDIF
                0438 
16faaabac2 Oliv*0439 C      enddo i,j,k
5e411acc9e Oliv*0440        ENDDO
                0441        ENDDO
                0442        ENDDO
a59ebcf0a3 Oliv*0443 
16faaabac2 Oliv*0444 C ======================================================================
                0445 C 2-d conservation corrections
5e411acc9e Oliv*0446        DO j=1,sNy
                0447        DO i=1,sNx
                0448         area=rA(i,j,bi,bj)*maskInC(i,j,bi,bj)
                0449         IF (stage .EQ. 0) THEN
                0450         tilesedflxFe(bi,bj)=tilesedflxFe(bi,bj)+ironSedFlx(i,j,bi,bj)
                0451      &                                         *area
2c93eb88ef Oliv*0452 #ifdef DARWIN_ALLOW_HYDROTHERMAL_VENTS
                0453         tileventflxFe(bi,bj)=tileventflxFe(bi,bj)+ironVentFlx(i,j,bi,bj)
                0454      &                                           *area
                0455 #endif
a59ebcf0a3 Oliv*0456 #ifdef DARWIN_ALLOW_CARBON
5e411acc9e Oliv*0457         tilesfcflxC(bi,bj)=tilesfcflxC(bi,bj)+carbSfcFlx(i,j,bi,bj)*area
                0458         tilesfcflxO(bi,bj)=tilesfcflxO(bi,bj)+oxySfcFlx(i,j,bi,bj)*area
8a10163480 Oliv*0459 # ifdef ALLOW_OLD_VIRTUALFLUX
5e411acc9e Oliv*0460         tilevirflxC(bi,bj)=tilevirflxC(bi,bj)+carbVirFlx(i,j,bi,bj)*area
                0461         tilevirflxA(bi,bj)=tilevirflxA(bi,bj)+alkVirFlx(i,j,bi,bj)*area
8a10163480 Oliv*0462 # endif
                0463 # ifdef DARWIN_ALLOW_RADIv1
2a97638e3d Oliv*0464         tilesedflxC(bi,bj)=tilesedflxC(bi,bj)+radiFluxC(i,j,bi,bj)*area
                0465         tilesedflxA(bi,bj)=tilesedflxA(bi,bj)+radiFluxA(i,j,bi,bj)*area
                0466         tilesedflxO(bi,bj)=tilesedflxO(bi,bj)+radiFLuxO(i,j,bi,bj)*area
8a10163480 Oliv*0467 # endif
                0468 # ifdef DARWIN_ALLOW_RADIv2
                0469         tilesedflxC(bi,bj)=tilesedflxC(bi,bj)+radiFluxC(i,j,bi,bj)*area
                0470         tilesedflxA(bi,bj)=tilesedflxA(bi,bj)+radiFluxA(i,j,bi,bj)*area
                0471         tilesedflxO(bi,bj)=tilesedflxO(bi,bj)+radiFLuxO(i,j,bi,bj)*area
                0472         tilesedflxP(bi,bj)=tilesedflxP(bi,bj)+radiFLuxP(i,j,bi,bj)*area
                0473         tilesedflxN(bi,bj)=tilesedflxN(bi,bj)+radiFLuxN(i,j,bi,bj)*area
                0474 # endif
248275f1c4 Oliv*0475 #endif
                0476 #ifdef DARWIN_BOTTOM_SINK
                0477         tileBotSnkC(bi,bj)=tilebotsnkC(bi,bj)+botSnkC(i,j,bi,bj)*area
                0478         tileBotSnkN(bi,bj)=tilebotsnkN(bi,bj)+botSnkN(i,j,bi,bj)*area
                0479         tileBotSnkP(bi,bj)=tilebotsnkP(bi,bj)+botSnkP(i,j,bi,bj)*area
                0480         tileBotSnkFe(bi,bj)=tilebotsnkFe(bi,bj)+botSnkFe(i,j,bi,bj)*area
                0481         tileBotSnkSi(bi,bj)=tilebotsnkSi(bi,bj)+botSnkSi(i,j,bi,bj)*area
a59ebcf0a3 Oliv*0482 #endif
5e411acc9e Oliv*0483         ELSEIF (stage .EQ. 2) THEN
                0484         tilesfcflxFe(bi,bj)=tilesfcflxFe(bi,bj)+alpfe*inputfe(i,j,bi,bj)
                0485      &                                         *PTRACERS_dtLev(ks)*area
d63a4681e3 Oliv*0486 #ifdef DARWIN_NUTRIENT_RUNOFF
                0487         tilerunoffC(bi,bj) = tilerunoffC(bi,bj) + DOCrunoff(i,j,bi,bj)
                0488      &                   *PTRACERS_dtLev(ks)*area
                0489         tilerunoffN(bi,bj) = tilerunoffN(bi,bj) + DONrunoff(i,j,bi,bj)
                0490      &                   *PTRACERS_dtLev(ks)*area
                0491         tilerunoffP(bi,bj) = tilerunoffP(bi,bj) + DOPrunoff(i,j,bi,bj)
                0492      &                   *PTRACERS_dtLev(ks)*area
                0493         tilerunoffN(bi,bj) = tilerunoffN(bi,bj) + DINrunoff(i,j,bi,bj)
                0494      &                   *PTRACERS_dtLev(ks)*area
11d365acff Oliv*0495         tilerunoffN(bi,bj) = tilerunoffN(bi,bj) + NO3runoff(i,j,bi,bj)
                0496      &                   *PTRACERS_dtLev(ks)*area
                0497         tilerunoffN(bi,bj) = tilerunoffN(bi,bj) + NO2runoff(i,j,bi,bj)
                0498      &                   *PTRACERS_dtLev(ks)*area
                0499         tilerunoffN(bi,bj) = tilerunoffN(bi,bj) + NH4runoff(i,j,bi,bj)
                0500      &                   *PTRACERS_dtLev(ks)*area
d63a4681e3 Oliv*0501         tilerunoffP(bi,bj) = tilerunoffP(bi,bj) + IPrunoff(i,j,bi,bj)
                0502      &                   *PTRACERS_dtLev(ks)*area*R_DIP_IP_runoff
                0503         tilerunoffSi(bi,bj)= tilerunoffSi(bi,bj)+ DSirunoff(i,j,bi,bj)
                0504      &                   *PTRACERS_dtLev(ks)*area
                0505         tilerunoffC(bi,bj) = tilerunoffC(bi,bj) + POCrunoff(i,j,bi,bj)
                0506      &                   *PTRACERS_dtLev(ks)*area
                0507         tilerunoffN(bi,bj) = tilerunoffN(bi,bj) + PONrunoff(i,j,bi,bj)
                0508      &                   *PTRACERS_dtLev(ks)*area
                0509         tilerunoffP(bi,bj) = tilerunoffP(bi,bj) + POPrunoff(i,j,bi,bj)
                0510      &                   *PTRACERS_dtLev(ks)*area
                0511         tilerunoffC(bi,bj) = tilerunoffC(bi,bj) + DICrunoff(i,j,bi,bj)
                0512      &                   *PTRACERS_dtLev(ks)*area
                0513 #ifdef DARWIN_ALLOW_CARBON
                0514         tilerunoffA(bi,bj) = tilerunoffA(bi,bj) + DICrunoff(i,j,bi,bj)
                0515      &                   *PTRACERS_dtLev(ks)*area*R_ALK_DIC_runoff
                0516 #endif
                0517         tilerunoffFe(bi,bj)= tilerunoffFe(bi,bj)+ IPrunoff(i,j,bi,bj)
                0518      &         *PTRACERS_dtLev(ks)*area*R_DIP_IP_runoff*R_DFe_DIP_runoff
                0519         tilerunoffFe(bi,bj)= tilerunoffFe(bi,bj)+ DOPrunoff(i,j,bi,bj)
                0520      &                   *PTRACERS_dtLev(ks)*area*R_DOFe_DOP_runoff
                0521         tilerunoffFe(bi,bj)= tilerunoffFe(bi,bj)+ POPrunoff(i,j,bi,bj)
                0522      &                   *PTRACERS_dtLev(ks)*area*R_POFe_POP_runoff
                0523 #endif
5e411acc9e Oliv*0524         ENDIF
407760706f Oliv*0525 
16faaabac2 Oliv*0526 C ======================================================================
                0527 C compute change in local ptracer concentration due to neglected volume
                0528 C change with linear implicit free surface.  Compute before
                0529 C thermodynamics; will store totals in common block and apply after
                0530 C thermodynamics.
                0531         IF (stage.EQ.0 .AND. implicitFreeSurface .AND.
                0532      &      nonlinFreeSurf.EQ.0 .AND. .NOT.DARWIN_linFSConserve) THEN
                0533          dvol = -wVel(i,j,ks,bi,bj)*area*PTRACERS_dtLev(ks)
                0534 C Carbon imp.FS corrections
                0535          tileFSC(bi,bj)=tileFSC(bi,bj)+Ptracer(i,j,ks,bi,bj,iDIC)*dvol
                0536          tileFSC(bi,bj)=tileFSC(bi,bj)+Ptracer(i,j,ks,bi,bj,iDOC)*dvol
                0537          tileFSC(bi,bj)=tileFSC(bi,bj)+Ptracer(i,j,ks,bi,bj,iPOC)*dvol
                0538          tileFSC(bi,bj)=tileFSC(bi,bj)+Ptracer(i,j,ks,bi,bj,iPIC)*dvol
                0539          DO np=1,nplank
                0540           iTr=ic+np-1
                0541           tileFSC(bi,bj)=tileFSC(bi,bj)+Ptracer(i,j,ks,bi,bj,iTr)
                0542      &                                 *(1+R_PICPOC(np))*dvol
                0543          ENDDO
                0544 #ifdef DARWIN_ALLOW_CDOM
                0545 # ifdef DARWIN_CDOM_UNITS_CARBON
                0546          tileFSC(bi,bj)=tileFSC(bi,bj)+Ptracer(i,j,ks,bi,bj,iCDOM)
                0547      &                                *dvol
                0548 # else
                0549          tileFSC(bi,bj)=tileFSC(bi,bj)+Ptracer(i,j,ks,bi,bj,iCDOM)
                0550      &                                *R_CP_CDOM*dvol
                0551 # endif
                0552 #endif
                0553 
                0554 C Nitrogen imp.FS corrections
                0555          tileFSN(bi,bj)=tileFSN(bi,bj)+Ptracer(i,j,ks,bi,bj,iNO3)*dvol
                0556          tileFSN(bi,bj)=tileFSN(bi,bj)+Ptracer(i,j,ks,bi,bj,iNH4)*dvol
                0557          tileFSN(bi,bj)=tileFSN(bi,bj)+Ptracer(i,j,ks,bi,bj,iNO2)*dvol
                0558          tileFSN(bi,bj)=tileFSN(bi,bj)+Ptracer(i,j,ks,bi,bj,iDON)*dvol
                0559          tileFSN(bi,bj)=tileFSN(bi,bj)+Ptracer(i,j,ks,bi,bj,iPON)*dvol
                0560          DO np=1,nplank
                0561 #ifdef DARWIN_ALLOW_NQUOTA
                0562           iTr=in+np-1
                0563           tileFSN(bi,bj)=tileFSN(bi,bj)+Ptracer(i,j,ks,bi,bj,iTr)*dvol
                0564 #else
                0565           iTr=ic+np-1
                0566           tileFSN(bi,bj)=tileFSN(bi,bj)+Ptracer(i,j,ks,bi,bj,iTr)
                0567      &                                 *R_NC(np)*dvol
                0568 #endif
                0569          ENDDO
                0570 #ifdef DARWIN_ALLOW_CDOM
                0571 # ifdef DARWIN_CDOM_UNITS_CARBON
                0572          tileFSN(bi,bj)=tileFSN(bi,bj)+Ptracer(i,j,ks,bi,bj,iCDOM)
                0573      &                                *R_NC_CDOM*dvol
                0574 # else
                0575          tileFSN(bi,bj)=tileFSN(bi,bj)+Ptracer(i,j,ks,bi,bj,iCDOM)
                0576      &                                *R_NP_CDOM*dvol
                0577 # endif
                0578 #endif
                0579 
                0580 C Phosphorus imp.FS corrections
                0581          tileFSP(bi,bj)=tileFSP(bi,bj)+Ptracer(i,j,ks,bi,bj,iPO4)*dvol
                0582          tileFSP(bi,bj)=tileFSP(bi,bj)+Ptracer(i,j,ks,bi,bj,iDOP)*dvol
                0583          tileFSP(bi,bj)=tileFSP(bi,bj)+Ptracer(i,j,ks,bi,bj,iPOP)*dvol
                0584          DO np=1,nplank
                0585 #ifdef DARWIN_ALLOW_PQUOTA
                0586           iTr=ip+np-1
                0587           tileFSP(bi,bj)=tileFSP(bi,bj)+Ptracer(i,j,ks,bi,bj,iTr)*dvol
                0588 #else
                0589           iTr=ic+np-1
                0590           tileFSP(bi,bj)=tileFSP(bi,bj)+Ptracer(i,j,ks,bi,bj,iTr)
                0591      &                                 *R_PC(np)*dvol
                0592 #endif
                0593          ENDDO
                0594 #ifdef DARWIN_ALLOW_CDOM
                0595 # ifdef DARWIN_CDOM_UNITS_CARBON
                0596          tileFSP(bi,bj)=tileFSP(bi,bj)+Ptracer(i,j,ks,bi,bj,iCDOM)
                0597      &                                *R_PC_CDOM*dvol
                0598 # else
                0599          tileFSP(bi,bj)=tileFSP(bi,bj)+Ptracer(i,j,ks,bi,bj,iCDOM)
                0600      &                                *dvol
                0601 # endif
                0602 #endif
                0603 
                0604 C Iron imp.FS corrections
                0605          tileFSFe(bi,bj)=tileFSFe(bi,bj)+Ptracer(i,j,ks,bi,bj,iFeT)
                0606      &                                  *dvol
                0607          tileFSFe(bi,bj)=tileFSFe(bi,bj)+Ptracer(i,j,ks,bi,bj,iDOFe)
                0608      &                                  *dvol
                0609          tileFSFe(bi,bj)=tileFSFe(bi,bj)+Ptracer(i,j,ks,bi,bj,iPOFe)
                0610      &                                  *dvol
                0611          DO np=1,nplank
                0612 #ifdef DARWIN_ALLOW_FEQUOTA
                0613           iTr=ife+np-1
                0614           tileFSFe(bi,bj)=tileFSFe(bi,bj)+Ptracer(i,j,ks,bi,bj,iTr)
                0615      &                                   *dvol
                0616 #else
                0617           iTr=ic+np-1
                0618           tileFSFe(bi,bj)=tileFSFe(bi,bj)+Ptracer(i,j,ks,bi,bj,iTr)
                0619      &                                   *R_FeC(np)*dvol
                0620 #endif
                0621          ENDDO
                0622 #ifdef DARWIN_ALLOW_CDOM
                0623 # ifdef DARWIN_CDOM_UNITS_CARBON
                0624          tileFSFe(bi,bj)=tileFSFe(bi,bj)+Ptracer(i,j,ks,bi,bj,iCDOM)
                0625      &                                  *R_FeC_CDOM*dvol
                0626 # else
                0627          tileFSFe(bi,bj)=tileFSFe(bi,bj)+Ptracer(i,j,ks,bi,bj,iCDOM)
                0628      &                                  *R_FeP_CDOM*dvol
                0629 # endif
                0630 #endif
                0631 
                0632 C Silica imp.FS corrections
                0633          tileFSSi(bi,bj)=tileFSSi(bi,bj)+Ptracer(i,j,ks,bi,bj,iSiO2)
                0634      &                                  *dvol
                0635          tileFSSi(bi,bj)=tileFSSi(bi,bj)+Ptracer(i,j,ks,bi,bj,iPOSi)
                0636      &                                  *dvol
                0637          DO np=1,nplank
                0638 #ifdef DARWIN_ALLOW_SIQUOTA
                0639           iTr=isi+np-1
                0640           tileFSSi(bi,bj)=tileFSSi(bi,bj)+Ptracer(i,j,ks,bi,bj,iTr)
                0641      &                                   *dvol
                0642 #else
                0643           iTr=ic+np-1
                0644           tileFSSi(bi,bj)=tileFSSi(bi,bj)+Ptracer(i,j,ks,bi,bj,iTr)
                0645      &                                     *R_SiC(np)*dvol
                0646 #endif
                0647          ENDDO
                0648 
                0649 C Alkalinity and oxygen imp.FS corrections
                0650 #ifdef DARWIN_ALLOW_CARBON
                0651          tileFSA(bi,bj)=tileFSA(bi,bj)+Ptracer(i,j,ks,bi,bj,iALK)*dvol
                0652          tileFSO(bi,bj)=tileFSO(bi,bj)+Ptracer(i,j,ks,bi,bj,iO2)*dvol
                0653 #endif
                0654 
                0655 C       endif stage 0, implicitFreeSurface, etc
                0656         ENDIF
                0657 
                0658 C ======================================================================
                0659 C Compute surface flux from EmPmR with local ptracer concentration
407760706f Oliv*0660 C before thermodynamics; will store totals in common block and apply
16faaabac2 Oliv*0661 C after thermodynamics.
                0662 C Case 1: Non-linear free surface with real fresh-water flux
407760706f Oliv*0663 #ifdef EXACT_CONSERV
16faaabac2 Oliv*0664         IF (stage.EQ.0 .AND. (nonlinFreeSurf.GT.0 .OR. usingPCoords)
                0665      &      .AND. useRealFreshWaterFlux) THEN
407760706f Oliv*0666          dvol = PmEpR(i,j,bi,bj)*mass2rUnit*area*PTRACERS_dtLev(ks)
16faaabac2 Oliv*0667          tilePER(bi,bj) = tilePER(bi,bj) + dvol
                0668 C Carbon E-P-R fluxes
407760706f Oliv*0669          IF (PTRACERS_EvPrRn(iDIC).EQ.UNSET_RL)
                0670      &   tileEPRC(bi,bj)=tileEPRC(bi,bj)+Ptracer(i,j,ks,bi,bj,iDIC)*dvol
                0671          IF (PTRACERS_EvPrRn(iDOC).EQ.UNSET_RL)
                0672      &   tileEPRC(bi,bj)=tileEPRC(bi,bj)+Ptracer(i,j,ks,bi,bj,iDOC)*dvol
                0673          IF (PTRACERS_EvPrRn(iPOC).EQ.UNSET_RL)
                0674      &   tileEPRC(bi,bj)=tileEPRC(bi,bj)+Ptracer(i,j,ks,bi,bj,iPOC)*dvol
                0675          IF (PTRACERS_EvPrRn(iPIC).EQ.UNSET_RL)
                0676      &   tileEPRC(bi,bj)=tileEPRC(bi,bj)+Ptracer(i,j,ks,bi,bj,iPIC)*dvol
                0677          DO np=1,nplank
                0678           iTr=ic+np-1
                0679           IF (PTRACERS_EvPrRn(iTr).EQ.UNSET_RL)
                0680      &     tileEPRC(bi,bj)=tileEPRC(bi,bj)+Ptracer(i,j,ks,bi,bj,iTr)
                0681      &                                    *(1+R_PICPOC(np))*dvol
                0682          ENDDO
                0683 #ifdef DARWIN_ALLOW_CDOM
16faaabac2 Oliv*0684          IF (PTRACERS_EvPrRn(iCDOM).EQ.UNSET_RL) THEN
407760706f Oliv*0685 # ifdef DARWIN_CDOM_UNITS_CARBON
16faaabac2 Oliv*0686           tileEPRC(bi,bj)=tileEPRC(bi,bj)+Ptracer(i,j,ks,bi,bj,iCDOM)
407760706f Oliv*0687      &                                   *dvol
                0688 # else
16faaabac2 Oliv*0689           tileEPRC(bi,bj)=tileEPRC(bi,bj)+Ptracer(i,j,ks,bi,bj,iCDOM)
407760706f Oliv*0690      &                                   *R_CP_CDOM*dvol
                0691 # endif
16faaabac2 Oliv*0692          ENDIF
407760706f Oliv*0693 #endif
                0694 
16faaabac2 Oliv*0695 C Nitrogen E-P-R fluxes
407760706f Oliv*0696          IF (PTRACERS_EvPrRn(iNO3).EQ.UNSET_RL)
                0697      &   tileEPRN(bi,bj)=tileEPRN(bi,bj)+Ptracer(i,j,ks,bi,bj,iNO3)*dvol
                0698          IF (PTRACERS_EvPrRn(iNH4).EQ.UNSET_RL)
                0699      &   tileEPRN(bi,bj)=tileEPRN(bi,bj)+Ptracer(i,j,ks,bi,bj,iNH4)*dvol
                0700          IF (PTRACERS_EvPrRn(iNO2).EQ.UNSET_RL)
                0701      &   tileEPRN(bi,bj)=tileEPRN(bi,bj)+Ptracer(i,j,ks,bi,bj,iNO2)*dvol
                0702          IF (PTRACERS_EvPrRn(iDON).EQ.UNSET_RL)
                0703      &   tileEPRN(bi,bj)=tileEPRN(bi,bj)+Ptracer(i,j,ks,bi,bj,iDON)*dvol
                0704          IF (PTRACERS_EvPrRn(iPON).EQ.UNSET_RL)
                0705      &   tileEPRN(bi,bj)=tileEPRN(bi,bj)+Ptracer(i,j,ks,bi,bj,iPON)*dvol
                0706          DO np=1,nplank
                0707 #ifdef DARWIN_ALLOW_NQUOTA
                0708           iTr=in+np-1
                0709           IF (PTRACERS_EvPrRn(iTr).EQ.UNSET_RL)
                0710      &    tileEPRN(bi,bj)=tileEPRN(bi,bj)+Ptracer(i,j,ks,bi,bj,iTr)*dvol
                0711 #else
                0712           iTr=ic+np-1
                0713           IF (PTRACERS_EvPrRn(iTr).EQ.UNSET_RL)
                0714      &     tileEPRN(bi,bj)=tileEPRN(bi,bj)+Ptracer(i,j,ks,bi,bj,iTr)
                0715      &                                    *R_NC(np)*dvol
                0716 #endif
                0717          ENDDO
                0718 #ifdef DARWIN_ALLOW_CDOM
16faaabac2 Oliv*0719          IF (PTRACERS_EvPrRn(iCDOM).EQ.UNSET_RL) THEN
407760706f Oliv*0720 # ifdef DARWIN_CDOM_UNITS_CARBON
16faaabac2 Oliv*0721           tileEPRN(bi,bj)=tileEPRN(bi,bj)+Ptracer(i,j,ks,bi,bj,iCDOM)
407760706f Oliv*0722      &                                   *R_NC_CDOM*dvol
                0723 # else
16faaabac2 Oliv*0724           tileEPRN(bi,bj)=tileEPRN(bi,bj)+Ptracer(i,j,ks,bi,bj,iCDOM)
407760706f Oliv*0725      &                                   *R_NP_CDOM*dvol
                0726 # endif
16faaabac2 Oliv*0727          ENDIF
407760706f Oliv*0728 #endif
                0729 
16faaabac2 Oliv*0730 C Phosphorus E-P-R fluxes
407760706f Oliv*0731          IF (PTRACERS_EvPrRn(iPO4).EQ.UNSET_RL)
                0732      &   tileEPRP(bi,bj)=tileEPRP(bi,bj)+Ptracer(i,j,ks,bi,bj,iPO4)*dvol
                0733          IF (PTRACERS_EvPrRn(iDOP).EQ.UNSET_RL)
                0734      &   tileEPRP(bi,bj)=tileEPRP(bi,bj)+Ptracer(i,j,ks,bi,bj,iDOP)*dvol
                0735          IF (PTRACERS_EvPrRn(iPOP).EQ.UNSET_RL)
                0736      &   tileEPRP(bi,bj)=tileEPRP(bi,bj)+Ptracer(i,j,ks,bi,bj,iPOP)*dvol
                0737          DO np=1,nplank
                0738 #ifdef DARWIN_ALLOW_PQUOTA
                0739           iTr=ip+np-1
                0740           IF (PTRACERS_EvPrRn(iTr).EQ.UNSET_RL)
                0741      &    tileEPRP(bi,bj)=tileEPRP(bi,bj)+Ptracer(i,j,ks,bi,bj,iTr)*dvol
                0742 #else
                0743           iTr=ic+np-1
                0744           IF (PTRACERS_EvPrRn(iTr).EQ.UNSET_RL)
                0745      &     tileEPRP(bi,bj)=tileEPRP(bi,bj)+Ptracer(i,j,ks,bi,bj,iTr)
                0746      &                                    *R_PC(np)*dvol
                0747 #endif
                0748          ENDDO
                0749 #ifdef DARWIN_ALLOW_CDOM
16faaabac2 Oliv*0750          IF (PTRACERS_EvPrRn(iCDOM).EQ.UNSET_RL) THEN
407760706f Oliv*0751 # ifdef DARWIN_CDOM_UNITS_CARBON
16faaabac2 Oliv*0752           tileEPRP(bi,bj)=tileEPRP(bi,bj)+Ptracer(i,j,ks,bi,bj,iCDOM)
407760706f Oliv*0753      &                                   *R_PC_CDOM*dvol
                0754 # else
16faaabac2 Oliv*0755           tileEPRP(bi,bj)=tileEPRP(bi,bj)+Ptracer(i,j,ks,bi,bj,iCDOM)
407760706f Oliv*0756      &                                   *dvol
                0757 # endif
16faaabac2 Oliv*0758          ENDIF
407760706f Oliv*0759 #endif
                0760 
16faaabac2 Oliv*0761 C Iron E-P-R fluxes
407760706f Oliv*0762          IF (PTRACERS_EvPrRn(iFeT).EQ.UNSET_RL)
                0763      &    tileEPRFe(bi,bj)=tileEPRFe(bi,bj)+Ptracer(i,j,ks,bi,bj,iFeT)
                0764      &                                     *dvol
                0765          IF (PTRACERS_EvPrRn(iDOFe).EQ.UNSET_RL)
                0766      &    tileEPRFe(bi,bj)=tileEPRFe(bi,bj)+Ptracer(i,j,ks,bi,bj,iDOFe)
                0767      &                                     *dvol
                0768          IF (PTRACERS_EvPrRn(iPOFe).EQ.UNSET_RL)
                0769      &    tileEPRFe(bi,bj)=tileEPRFe(bi,bj)+Ptracer(i,j,ks,bi,bj,iPOFe)
                0770      &                                     *dvol
                0771          DO np=1,nplank
                0772 #ifdef DARWIN_ALLOW_FEQUOTA
                0773           iTr=ife+np-1
                0774           IF (PTRACERS_EvPrRn(iTr).EQ.UNSET_RL)
                0775      &     tileEPRFe(bi,bj)=tileEPRFe(bi,bj)+Ptracer(i,j,ks,bi,bj,iTr)
                0776      &                                      *dvol
                0777 #else
                0778           iTr=ic+np-1
                0779           IF (PTRACERS_EvPrRn(iTr).EQ.UNSET_RL)
                0780      &     tileEPRFe(bi,bj)=tileEPRFe(bi,bj)+Ptracer(i,j,ks,bi,bj,iTr)
                0781      &                                      *R_FeC(np)*dvol
                0782 #endif
                0783          ENDDO
                0784 #ifdef DARWIN_ALLOW_CDOM
16faaabac2 Oliv*0785          IF (PTRACERS_EvPrRn(iCDOM).EQ.UNSET_RL) THEN
407760706f Oliv*0786 # ifdef DARWIN_CDOM_UNITS_CARBON
16faaabac2 Oliv*0787           tileEPRFe(bi,bj)=tileEPRFe(bi,bj)+Ptracer(i,j,ks,bi,bj,iCDOM)
407760706f Oliv*0788      &                                     *R_FeC_CDOM*dvol
                0789 # else
16faaabac2 Oliv*0790           tileEPRFe(bi,bj)=tileEPRFe(bi,bj)+Ptracer(i,j,ks,bi,bj,iCDOM)
407760706f Oliv*0791      &                                     *R_FeP_CDOM*dvol
                0792 # endif
16faaabac2 Oliv*0793          ENDIF
407760706f Oliv*0794 #endif
                0795 
16faaabac2 Oliv*0796 C Silica E-P-R fluxes
407760706f Oliv*0797          IF (PTRACERS_EvPrRn(iSiO2).EQ.UNSET_RL)
                0798      &    tileEPRSi(bi,bj)=tileEPRSi(bi,bj)+Ptracer(i,j,ks,bi,bj,iSiO2)
                0799      &                                     *dvol
                0800          IF (PTRACERS_EvPrRn(iPOSi).EQ.UNSET_RL)
                0801      &    tileEPRSi(bi,bj)=tileEPRSi(bi,bj)+Ptracer(i,j,ks,bi,bj,iPOSi)
                0802      &                                     *dvol
                0803          DO np=1,nplank
                0804 #ifdef DARWIN_ALLOW_SIQUOTA
                0805           iTr=isi+np-1
                0806           IF (PTRACERS_EvPrRn(iTr).EQ.UNSET_RL)
                0807      &     tileEPRSi(bi,bj)=tileEPRSi(bi,bj)+Ptracer(i,j,ks,bi,bj,iTr)
                0808      &                                      *dvol
                0809 #else
                0810           iTr=ic+np-1
                0811           IF (PTRACERS_EvPrRn(iTr).EQ.UNSET_RL)
                0812      &     tileEPRSi(bi,bj)=tileEPRSi(bi,bj)+Ptracer(i,j,ks,bi,bj,iTr)
                0813      &                                      *R_SiC(np)*dvol
                0814 #endif
                0815          ENDDO
16faaabac2 Oliv*0816 
                0817 C Alkalinity and oxygen E-P-R fluxes
407760706f Oliv*0818 #ifdef DARWIN_ALLOW_CARBON
                0819          IF (PTRACERS_EvPrRn(iALK).EQ.UNSET_RL)
                0820      &   tileEPRA(bi,bj)=tileEPRA(bi,bj)+Ptracer(i,j,ks,bi,bj,iALK)*dvol
                0821          IF (PTRACERS_EvPrRn(iO2).EQ.UNSET_RL)
                0822      &   tileEPRO(bi,bj)=tileEPRO(bi,bj)+Ptracer(i,j,ks,bi,bj,iO2)*dvol
                0823 #endif
16faaabac2 Oliv*0824 
                0825 C       endif stage 0, etc
407760706f Oliv*0826         ENDIF
                0827 #endif /* EXACT_CONSERV */
16faaabac2 Oliv*0828 
                0829 C ======================================================================
                0830 C Compute surface flux from EmPmR with local ptracer concentration
                0831 C before thermodynamics; will store totals in common block and apply
                0832 C after thermodynamics.
                0833 C Case 2: linear implicit free surface or no real fresh-water flux
                0834         IF (stage.EQ.0) THEN
                0835 C minic conditionals in PTRACERS_FORCING_SURF
                0836 #ifdef EXACT_CONSERV
                0837         IF ( .NOT.((nonlinFreeSurf.GT.0 .OR. usingPCoords)
                0838      &             .AND. useRealFreshWaterFlux) ) THEN
                0839 #else /* EXACT_CONSERV */
                0840         IF (.TRUE.) THEN
                0841 #endif /* EXACT_CONSERV */
                0842         dvol = -EmPmR(i,j,bi,bj)*mass2rUnit*area*PTRACERS_dtLev(ks)
                0843         tilePER(bi,bj) = tilePER(bi,bj) + dvol
                0844 C       if convertFW2Salt=-1., current values are replaced by
                0845 C       ptracers_EvPrRn, so Ptracer enters with a minus sign.
                0846         IF (convertFW2Salt .EQ. -1.) THEN
                0847 C Carbon E-P-R fluxes
                0848          IF (PTRACERS_EvPrRn(iDIC).NE.UNSET_RL)
                0849      &   tileEPRC(bi,bj)=tileEPRC(bi,bj)-Ptracer(i,j,ks,bi,bj,iDIC)*dvol
                0850          IF (PTRACERS_EvPrRn(iDOC).NE.UNSET_RL)
                0851      &   tileEPRC(bi,bj)=tileEPRC(bi,bj)-Ptracer(i,j,ks,bi,bj,iDOC)*dvol
                0852          IF (PTRACERS_EvPrRn(iPOC).NE.UNSET_RL)
                0853      &   tileEPRC(bi,bj)=tileEPRC(bi,bj)-Ptracer(i,j,ks,bi,bj,iPOC)*dvol
                0854          IF (PTRACERS_EvPrRn(iPIC).NE.UNSET_RL)
                0855      &   tileEPRC(bi,bj)=tileEPRC(bi,bj)-Ptracer(i,j,ks,bi,bj,iPIC)*dvol
                0856          DO np=1,nplank
                0857           iTr=ic+np-1
                0858           IF (PTRACERS_EvPrRn(iTr).NE.UNSET_RL)
                0859      &     tileEPRC(bi,bj)=tileEPRC(bi,bj)-Ptracer(i,j,ks,bi,bj,iTr)
                0860      &                                    *(1+R_PICPOC(np))*dvol
                0861          ENDDO
                0862 #ifdef DARWIN_ALLOW_CDOM
                0863          IF (PTRACERS_EvPrRn(iCDOM).NE.UNSET_RL) THEN
                0864 # ifdef DARWIN_CDOM_UNITS_CARBON
                0865           tileEPRC(bi,bj)=tileEPRC(bi,bj)-Ptracer(i,j,ks,bi,bj,iCDOM)
                0866      &                                   *dvol
                0867 # else
                0868           tileEPRC(bi,bj)=tileEPRC(bi,bj)-Ptracer(i,j,ks,bi,bj,iCDOM)
                0869      &                                   *R_CP_CDOM*dvol
                0870 # endif
                0871          ENDIF
                0872 #endif
                0873 
                0874 C Nitrogen E-P-R fluxes
                0875          IF (PTRACERS_EvPrRn(iNO3).NE.UNSET_RL)
                0876      &   tileEPRN(bi,bj)=tileEPRN(bi,bj)-Ptracer(i,j,ks,bi,bj,iNO3)*dvol
                0877          IF (PTRACERS_EvPrRn(iNH4).NE.UNSET_RL)
                0878      &   tileEPRN(bi,bj)=tileEPRN(bi,bj)-Ptracer(i,j,ks,bi,bj,iNH4)*dvol
                0879          IF (PTRACERS_EvPrRn(iNO2).NE.UNSET_RL)
                0880      &   tileEPRN(bi,bj)=tileEPRN(bi,bj)-Ptracer(i,j,ks,bi,bj,iNO2)*dvol
                0881          IF (PTRACERS_EvPrRn(iDON).NE.UNSET_RL)
                0882      &   tileEPRN(bi,bj)=tileEPRN(bi,bj)-Ptracer(i,j,ks,bi,bj,iDON)*dvol
                0883          IF (PTRACERS_EvPrRn(iPON).NE.UNSET_RL)
                0884      &   tileEPRN(bi,bj)=tileEPRN(bi,bj)-Ptracer(i,j,ks,bi,bj,iPON)*dvol
                0885          DO np=1,nplank
                0886 #ifdef DARWIN_ALLOW_NQUOTA
                0887           iTr=in+np-1
                0888           IF (PTRACERS_EvPrRn(iTr).NE.UNSET_RL)
                0889      &    tileEPRN(bi,bj)=tileEPRN(bi,bj)-Ptracer(i,j,ks,bi,bj,iTr)*dvol
                0890 #else
                0891           iTr=ic+np-1
                0892           IF (PTRACERS_EvPrRn(iTr).NE.UNSET_RL)
                0893      &     tileEPRN(bi,bj)=tileEPRN(bi,bj)-Ptracer(i,j,ks,bi,bj,iTr)
                0894      &                                    *R_NC(np)*dvol
                0895 #endif
                0896          ENDDO
                0897 #ifdef DARWIN_ALLOW_CDOM
                0898          IF (PTRACERS_EvPrRn(iCDOM).NE.UNSET_RL) THEN
                0899 # ifdef DARWIN_CDOM_UNITS_CARBON
                0900           tileEPRN(bi,bj)=tileEPRN(bi,bj)-Ptracer(i,j,ks,bi,bj,iCDOM)
                0901      &                                   *R_NC_CDOM*dvol
                0902 # else
                0903           tileEPRN(bi,bj)=tileEPRN(bi,bj)-Ptracer(i,j,ks,bi,bj,iCDOM)
                0904      &                                   *R_NP_CDOM*dvol
                0905 # endif
                0906          ENDIF
                0907 #endif
                0908 
                0909 C Phosphorus E-P-R fluxes
                0910          IF (PTRACERS_EvPrRn(iPO4).NE.UNSET_RL)
                0911      &   tileEPRP(bi,bj)=tileEPRP(bi,bj)-Ptracer(i,j,ks,bi,bj,iPO4)*dvol
                0912          IF (PTRACERS_EvPrRn(iDOP).NE.UNSET_RL)
                0913      &   tileEPRP(bi,bj)=tileEPRP(bi,bj)-Ptracer(i,j,ks,bi,bj,iDOP)*dvol
                0914          IF (PTRACERS_EvPrRn(iPOP).NE.UNSET_RL)
                0915      &   tileEPRP(bi,bj)=tileEPRP(bi,bj)-Ptracer(i,j,ks,bi,bj,iPOP)*dvol
                0916          DO np=1,nplank
                0917 #ifdef DARWIN_ALLOW_PQUOTA
                0918           iTr=ip+np-1
                0919           IF (PTRACERS_EvPrRn(iTr).NE.UNSET_RL)
                0920      &    tileEPRP(bi,bj)=tileEPRP(bi,bj)-Ptracer(i,j,ks,bi,bj,iTr)*dvol
                0921 #else
                0922           iTr=ic+np-1
                0923           IF (PTRACERS_EvPrRn(iTr).NE.UNSET_RL)
                0924      &     tileEPRP(bi,bj)=tileEPRP(bi,bj)-Ptracer(i,j,ks,bi,bj,iTr)
                0925      &                                    *R_PC(np)*dvol
                0926 #endif
                0927          ENDDO
                0928 #ifdef DARWIN_ALLOW_CDOM
                0929          IF (PTRACERS_EvPrRn(iCDOM).NE.UNSET_RL) THEN
                0930 # ifdef DARWIN_CDOM_UNITS_CARBON
                0931           tileEPRP(bi,bj)=tileEPRP(bi,bj)-Ptracer(i,j,ks,bi,bj,iCDOM)
                0932      &                                   *R_PC_CDOM*dvol
                0933 # else
                0934           tileEPRP(bi,bj)=tileEPRP(bi,bj)-Ptracer(i,j,ks,bi,bj,iCDOM)
                0935      &                                   *dvol
                0936 # endif
                0937          ENDIF
                0938 #endif
                0939 
                0940 C Iron E-P-R fluxes
                0941          IF (PTRACERS_EvPrRn(iFeT).NE.UNSET_RL)
                0942      &   tileEPRFe(bi,bj)=tileEPRFe(bi,bj)-Ptracer(i,j,ks,bi,bj,iFeT)
                0943      &                                    *dvol
                0944          IF (PTRACERS_EvPrRn(iDOFe).NE.UNSET_RL)
                0945      &   tileEPRFe(bi,bj)=tileEPRFe(bi,bj)-Ptracer(i,j,ks,bi,bj,iDOFe)
                0946      &                                    *dvol
                0947          IF (PTRACERS_EvPrRn(iPOFe).NE.UNSET_RL)
                0948      &   tileEPRFe(bi,bj)=tileEPRFe(bi,bj)-Ptracer(i,j,ks,bi,bj,iPOFe)
                0949      &                                    *dvol
                0950          DO np=1,nplank
                0951 #ifdef DARWIN_ALLOW_FEQUOTA
                0952           iTr=ife+np-1
                0953           IF (PTRACERS_EvPrRn(iTr).NE.UNSET_RL)
                0954      &     tileEPRFe(bi,bj)=tileEPRFe(bi,bj)-Ptracer(i,j,ks,bi,bj,iTr)
                0955      &                                      *dvol
                0956 #else
                0957           iTr=ic+np-1
                0958           IF (PTRACERS_EvPrRn(iTr).NE.UNSET_RL)
                0959      &     tileEPRFe(bi,bj)=tileEPRFe(bi,bj)-Ptracer(i,j,ks,bi,bj,iTr)
                0960      &                                      *R_FeC(np)*dvol
                0961 #endif
                0962          ENDDO
                0963 #ifdef DARWIN_ALLOW_CDOM
                0964          IF (PTRACERS_EvPrRn(iCDOM).NE.UNSET_RL) THEN
                0965 # ifdef DARWIN_CDOM_UNITS_CARBON
                0966           tileEPRFe(bi,bj)=tileEPRFe(bi,bj)-Ptracer(i,j,ks,bi,bj,iCDOM)
                0967      &                                     *R_FeC_CDOM*dvol
                0968 # else
                0969           tileEPRFe(bi,bj)=tileEPRFe(bi,bj)-Ptracer(i,j,ks,bi,bj,iCDOM)
                0970      &                                     *R_FeP_CDOM*dvol
                0971 # endif
                0972          ENDIF
                0973 #endif
                0974 
                0975 C Silica E-P-R fluxes
                0976          IF (PTRACERS_EvPrRn(iSiO2).NE.UNSET_RL)
                0977      &    tileEPRSi(bi,bj)=tileEPRSi(bi,bj)-Ptracer(i,j,ks,bi,bj,iSiO2)
                0978      &                                     *dvol
                0979          IF (PTRACERS_EvPrRn(iPOSi).NE.UNSET_RL)
                0980      &    tileEPRSi(bi,bj)=tileEPRSi(bi,bj)-Ptracer(i,j,ks,bi,bj,iPOSi)
                0981      &                                     *dvol
                0982          DO np=1,nplank
                0983 #ifdef DARWIN_ALLOW_SIQUOTA
                0984           iTr=isi+np-1
                0985           IF (PTRACERS_EvPrRn(iTr).NE.UNSET_RL)
                0986      &     tileEPRSi(bi,bj)=tileEPRSi(bi,bj)-Ptracer(i,j,ks,bi,bj,iTr)
                0987      &                                      *dvol
                0988 #else
                0989           iTr=ic+np-1
                0990           IF (PTRACERS_EvPrRn(iTr).NE.UNSET_RL)
                0991      &     tileEPRSi(bi,bj)=tileEPRSi(bi,bj)-Ptracer(i,j,ks,bi,bj,iTr)
                0992      &                                      *R_SiC(np)*dvol
                0993 #endif
                0994          ENDDO
                0995 
                0996 C Alkalinity and oxygen E-P-R fluxes
                0997 #ifdef DARWIN_ALLOW_CARBON
                0998          IF (PTRACERS_EvPrRn(iALK).NE.UNSET_RL)
                0999      &   tileEPRA(bi,bj)=tileEPRA(bi,bj)-Ptracer(i,j,ks,bi,bj,iALK)*dvol
                1000          IF (PTRACERS_EvPrRn(iO2).NE.UNSET_RL)
                1001      &   tileEPRO(bi,bj)=tileEPRO(bi,bj)-Ptracer(i,j,ks,bi,bj,iO2)*dvol
                1002 #endif
                1003 C       endif convertFW2Salt
                1004         ENDIF
                1005 C       endif NLFS, etc
                1006         ENDIF
                1007 C       endif stage 0 and implicitFreeSurface
                1008         ENDIF
                1009 
                1010 C      enddo i,j
5e411acc9e Oliv*1011        ENDDO
                1012        ENDDO
16faaabac2 Oliv*1013 
                1014 C     enddo bi,bj
8fbfd1f382 Oliv*1015       ENDDO
                1016       ENDDO
                1017 
16faaabac2 Oliv*1018 C ======================================================================
                1019 C Combine per-tile sums
                1020 
5e411acc9e Oliv*1021       CALL GLOBAL_SUM_TILE_RL(tilevol,voltot,myThid)
                1022       CALL GLOBAL_SUM_TILE_RL(tiletotC,tmptotC,myThid)
                1023       CALL GLOBAL_SUM_TILE_RL(tiletotN,tmptotN,myThid)
                1024       CALL GLOBAL_SUM_TILE_RL(tiletotP,tmptotP,myThid)
                1025       CALL GLOBAL_SUM_TILE_RL(tiletotFe,tmptotFe,myThid)
                1026       CALL GLOBAL_SUM_TILE_RL(tiletotSi,tmptotSi,myThid)
8fbfd1f382 Oliv*1027 #ifdef DARWIN_ALLOW_CARBON
5e411acc9e Oliv*1028       CALL GLOBAL_SUM_TILE_RL(tiletotA,tmptotA,myThid)
                1029       CALL GLOBAL_SUM_TILE_RL(tiletotO,tmptotO,myThid)
a59ebcf0a3 Oliv*1030 #endif
5e411acc9e Oliv*1031       IF (stage .EQ. 0) THEN
                1032        CALL GLOBAL_SUM_TILE_RL(tiletotNfix,tmptotNfix,myThid)
                1033        CALL GLOBAL_SUM_TILE_RL(tiletotNdenit,tmptotNdenit,myThid)
                1034        CALL GLOBAL_SUM_TILE_RL(tiletotscavFe,tmptotscavFe,myThid)
                1035        CALL GLOBAL_SUM_TILE_RL(tileminFeLoss,tmpminFeLoss,myThid)
                1036        CALL GLOBAL_SUM_TILE_RL(tilesedflxFe,tmpsedflxFe,myThid)
2c93eb88ef Oliv*1037        CALL GLOBAL_SUM_TILE_RL(tileventflxFe,tmpventflxFe,myThid)
5e411acc9e Oliv*1038        CALL GLOBAL_SUM_TILE_RL(tilesfcflxC,tmpsfcflxC,myThid)
                1039        CALL GLOBAL_SUM_TILE_RL(tilevirflxC,tmpvirflxC,myThid)
                1040 #ifdef DARWIN_ALLOW_CARBON
                1041        CALL GLOBAL_SUM_TILE_RL(tileAlkSrc,tmpAlkSrc,myThid)
                1042        CALL GLOBAL_SUM_TILE_RL(tileO2prod,tmpO2prod,myThid)
                1043        CALL GLOBAL_SUM_TILE_RL(tileO2cons,tmpO2cons,myThid)
                1044        CALL GLOBAL_SUM_TILE_RL(tilesfcflxO,tmpsfcflxO,myThid)
                1045        CALL GLOBAL_SUM_TILE_RL(tilevirflxA,tmpvirflxA,myThid)
2a97638e3d Oliv*1046        CALL GLOBAL_SUM_TILE_RL(tilesedflxC,tmpsedflxC,myThid)
                1047        CALL GLOBAL_SUM_TILE_RL(tilesedflxA,tmpsedflxA,myThid)
                1048        CALL GLOBAL_SUM_TILE_RL(tilesedflxO,tmpsedflxO,myThid)
0f48d9a81b Oliv*1049        CALL GLOBAL_SUM_TILE_RL(tilesedflxP,tmpsedflxP,myThid)
                1050        CALL GLOBAL_SUM_TILE_RL(tilesedflxN,tmpsedflxN,myThid)
248275f1c4 Oliv*1051 #endif
                1052 #ifdef DARWIN_BOTTOM_SINK
                1053        CALL GLOBAL_SUM_TILE_RL(tileBotSnkC,tmpBotSnkC,myThid)
                1054        CALL GLOBAL_SUM_TILE_RL(tileBotSnkN,tmpBotSnkN,myThid)
                1055        CALL GLOBAL_SUM_TILE_RL(tileBotSnkP,tmpBotSnkP,myThid)
                1056        CALL GLOBAL_SUM_TILE_RL(tileBotSnkFe,tmpBotSnkFe,myThid)
                1057        CALL GLOBAL_SUM_TILE_RL(tileBotSnkSi,tmpBotSnkSi,myThid)
407760706f Oliv*1058 #endif
                1059 C store totals in common block to retrieve at stage 1
16faaabac2 Oliv*1060        CALL GLOBAL_SUM_TILE_RL(tileFSC,totFSC,myThid)
                1061        CALL GLOBAL_SUM_TILE_RL(tileFSN,totFSN,myThid)
                1062        CALL GLOBAL_SUM_TILE_RL(tileFSP,totFSP,myThid)
                1063        CALL GLOBAL_SUM_TILE_RL(tileFSFe,totFSFe,myThid)
                1064        CALL GLOBAL_SUM_TILE_RL(tileFSSi,totFSSi,myThid)
                1065        CALL GLOBAL_SUM_TILE_RL(tilePER,totPER,myThid)
407760706f Oliv*1066        CALL GLOBAL_SUM_TILE_RL(tileEPRC,totEPRC,myThid)
                1067        CALL GLOBAL_SUM_TILE_RL(tileEPRN,totEPRN,myThid)
                1068        CALL GLOBAL_SUM_TILE_RL(tileEPRP,totEPRP,myThid)
                1069        CALL GLOBAL_SUM_TILE_RL(tileEPRFe,totEPRFe,myThid)
                1070        CALL GLOBAL_SUM_TILE_RL(tileEPRSi,totEPRSi,myThid)
16faaabac2 Oliv*1071 #ifdef DARWIN_ALLOW_CARBON
                1072        CALL GLOBAL_SUM_TILE_RL(tileFSA,totFSA,myThid)
                1073        CALL GLOBAL_SUM_TILE_RL(tileFSO,totFSO,myThid)
407760706f Oliv*1074        CALL GLOBAL_SUM_TILE_RL(tileEPRA,totEPRA,myThid)
                1075        CALL GLOBAL_SUM_TILE_RL(tileEPRO,totEPRO,myThid)
8fbfd1f382 Oliv*1076 #endif
5e411acc9e Oliv*1077       ELSEIF (stage .EQ. 2) THEN
                1078        CALL GLOBAL_SUM_TILE_RL(tilesfcflxFe,tmpsfcflxFe,myThid)
d63a4681e3 Oliv*1079 #ifdef DARWIN_NUTRIENT_RUNOFF
                1080        CALL GLOBAL_SUM_TILE_RL(tilerunoffC,tmprunoffC,myThid)
                1081        CALL GLOBAL_SUM_TILE_RL(tilerunoffN,tmprunoffN,myThid)
                1082        CALL GLOBAL_SUM_TILE_RL(tilerunoffP,tmprunoffP,myThid)
                1083        CALL GLOBAL_SUM_TILE_RL(tilerunoffFe,tmprunoffFe,myThid)
                1084        CALL GLOBAL_SUM_TILE_RL(tilerunoffSi,tmprunoffSi,myThid)
                1085 # ifdef DARWIN_ALLOW_CARBON
                1086        CALL GLOBAL_SUM_TILE_RL(tilerunoffA,tmprunoffA,myThid)
                1087 # endif
                1088 #endif
5e411acc9e Oliv*1089       ENDIF
8fbfd1f382 Oliv*1090 
16faaabac2 Oliv*1091 C ======================================================================
                1092 C Retrieve totals from stage 0 for lin.FS and E-P-R
407760706f Oliv*1093       IF ( stage .EQ. 1 ) THEN
16faaabac2 Oliv*1094 
                1095        tmpFSC = totFSC
                1096        tmpFSN = totFSN
                1097        tmpFSP = totFSP
                1098        tmpFSFe = totFSFe
                1099        tmpFSSi = totFSSi
407760706f Oliv*1100 # ifdef DARWIN_ALLOW_CARBON
16faaabac2 Oliv*1101        tmpFSA = totFSA
                1102        tmpFSO = totFSO
407760706f Oliv*1103 # endif
16faaabac2 Oliv*1104 
                1105        tmpEPRC = totEPRC
                1106        tmpEPRN = totEPRN
                1107        tmpEPRP = totEPRP
                1108        tmpEPRFe = totEPRFe
                1109        tmpEPRSi = totEPRSi
                1110 # ifdef DARWIN_ALLOW_CARBON
                1111        tmpEPRA = totEPRA
                1112        tmpEPRO = totEPRO
                1113 # endif
                1114 
                1115 C ----------------------------------------------------------------------
                1116 C convertFW2Salt!=-1 uses PTRACERS_ref instead of Ptracer, subtract here
                1117 
                1118        IF (convertFW2Salt .NE. -1) THEN
                1119 C Carbon E-P-R fluxes
                1120         IF (PTRACERS_EvPrRn(iDIC).NE.UNSET_RL)
                1121      &   tmpEPRC = tmpEPRC - PTRACERS_ref(ks,iDIC)*totPER
                1122         IF (PTRACERS_EvPrRn(iDOC).NE.UNSET_RL)
                1123      &   tmpEPRC = tmpEPRC - PTRACERS_ref(ks,iDOC)*totPER
                1124         IF (PTRACERS_EvPrRn(iPOC).NE.UNSET_RL)
                1125      &   tmpEPRC = tmpEPRC - PTRACERS_ref(ks,iPOC)*totPER
                1126         IF (PTRACERS_EvPrRn(iPIC).NE.UNSET_RL)
                1127      &   tmpEPRC = tmpEPRC - PTRACERS_ref(ks,iPIC)*totPER
                1128         DO np=1,nplank
                1129          iTr=ic+np-1
                1130          IF (PTRACERS_EvPrRn(iTr).NE.UNSET_RL)
                1131      &    tmpEPRC = tmpEPRC+PTRACERS_EvPrRn(iTr)*(1+R_PICPOC(np))*totPER
                1132         ENDDO
                1133 #ifdef DARWIN_ALLOW_CDOM
                1134         IF (PTRACERS_EvPrRn(iCDOM).NE.UNSET_RL) THEN
                1135 # ifdef DARWIN_CDOM_UNITS_CARBON
                1136          tmpEPRC = tmpEPRC + PTRACERS_ref(ks,iCDOM)*totPER
                1137 # else
                1138          tmpEPRC = tmpEPRC + PTRACERS_ref(ks,iCDOM)*R_CP_CDOM*totPER
                1139 # endif
                1140         ENDIF
407760706f Oliv*1141 #endif
                1142 
16faaabac2 Oliv*1143 C Nitrogen E-P-R fluxes
                1144         IF (PTRACERS_EvPrRn(iNO3).NE.UNSET_RL)
                1145      &   tmpEPRN = tmpEPRN - PTRACERS_ref(ks,iNO3)*totPER
                1146         IF (PTRACERS_EvPrRn(iNH4).NE.UNSET_RL)
                1147      &   tmpEPRN = tmpEPRN - PTRACERS_ref(ks,iNH4)*totPER
                1148         IF (PTRACERS_EvPrRn(iNO2).NE.UNSET_RL)
                1149      &   tmpEPRN = tmpEPRN - PTRACERS_ref(ks,iNO2)*totPER
                1150         IF (PTRACERS_EvPrRn(iDON).NE.UNSET_RL)
                1151      &   tmpEPRN = tmpEPRN - PTRACERS_ref(ks,iDON)*totPER
                1152         IF (PTRACERS_EvPrRn(iPON).NE.UNSET_RL)
                1153      &   tmpEPRN = tmpEPRN - PTRACERS_ref(ks,iPON)*totPER
                1154         DO np=1,nplank
                1155          IF (PTRACERS_EvPrRn(iTr).NE.UNSET_RL) THEN
                1156 #ifdef DARWIN_ALLOW_NQUOTA
                1157           iTr=in+np-1
                1158           tmpEPRN = tmpEPRN - PTRACERS_ref(ks,iTr)*totPER
                1159 #else
                1160           iTr=ic+np-1
                1161           tmpEPRN = tmpEPRN - PTRACERS_ref(ks,iTr)*R_NC(np)*totPER
                1162 #endif
                1163          ENDIF
                1164         ENDDO
                1165 #ifdef DARWIN_ALLOW_CDOM
                1166         IF (PTRACERS_EvPrRn(iCDOM).NE.UNSET_RL) THEN
                1167 # ifdef DARWIN_CDOM_UNITS_CARBON
                1168          tmpEPRN = tmpEPRN - PTRACERS_ref(ks,iCDOM)*totPER
                1169 # else
                1170          tmpEPRN = tmpEPRN - PTRACERS_ref(ks,iCDOM)*R_NP_CDOM*totPER
                1171 # endif
                1172         ENDIF
                1173 #endif
                1174 
                1175 C Phosphorus E-P-R fluxes
                1176         IF (PTRACERS_EvPrRn(iPO4).NE.UNSET_RL)
                1177      &   tmpEPRP = tmpEPRP - PTRACERS_ref(ks,iPO4)*totPER
                1178         IF (PTRACERS_EvPrRn(iDOP).NE.UNSET_RL)
                1179      &   tmpEPRP = tmpEPRP - PTRACERS_ref(ks,iDOP)*totPER
                1180         IF (PTRACERS_EvPrRn(iPOP).NE.UNSET_RL)
                1181      &   tmpEPRP = tmpEPRP - PTRACERS_ref(ks,iPOP)*totPER
                1182         DO np=1,nplank
                1183          IF (PTRACERS_EvPrRn(iTr).NE.UNSET_RL) THEN
                1184 #ifdef DARWIN_ALLOW_PQUOTA
                1185           iTr=ip+np-1
                1186           tmpEPRP = tmpEPRP - PTRACERS_ref(ks,iTr)*totPER
                1187 #else
                1188           iTr=ic+np-1
                1189           tmpEPRP = tmpEPRP - PTRACERS_ref(ks,iTr)*R_PC(np)*totPER
                1190 #endif
                1191          ENDIF
                1192         ENDDO
                1193 #ifdef DARWIN_ALLOW_CDOM
                1194         IF (PTRACERS_EvPrRn(iCDOM).NE.UNSET_RL) THEN
                1195 # ifdef DARWIN_CDOM_UNITS_CARBON
                1196          tmpEPRP = tmpEPRP - PTRACERS_ref(ks,iCDOM)*R_PC_CDOM*totPER
                1197 # else
                1198          tmpEPRP = tmpEPRP - PTRACERS_ref(ks,iCDOM)*totPER
                1199 # endif
                1200         ENDIF
                1201 #endif
                1202 
                1203 C Iron E-P-R fluxes
                1204         IF (PTRACERS_EvPrRn(iFeT).NE.UNSET_RL)
                1205      &   tmpEPRFe = tmpEPRFe - PTRACERS_ref(ks,iFeT)*totPER
                1206         IF (PTRACERS_EvPrRn(iDOFe).NE.UNSET_RL)
                1207      &   tmpEPRFe = tmpEPRFe - PTRACERS_ref(ks,iDOFe)*totPER
                1208         IF (PTRACERS_EvPrRn(iPOFe).NE.UNSET_RL)
                1209      &   tmpEPRFe = tmpEPRFe - PTRACERS_ref(ks,iPOFe)*totPER
                1210         DO np=1,nplank
                1211          IF (PTRACERS_EvPrRn(iTr).NE.UNSET_RL) THEN
                1212 #ifdef DARWIN_ALLOW_FEQUOTA
                1213           iTr=ife+np-1
                1214           tmpEPRFe = tmpEPRFe - PTRACERS_ref(ks,iTr)*totPER
                1215 #else
                1216           iTr=ic+np-1
                1217           tmpEPRFe = tmpEPRFe - PTRACERS_ref(ks,iTr)*R_FeC(np)*totPER
                1218 #endif
                1219          ENDIF
                1220         ENDDO
                1221 #ifdef DARWIN_ALLOW_CDOM
                1222         IF (PTRACERS_EvPrRn(iCDOM).NE.UNSET_RL) THEN
                1223 # ifdef DARWIN_CDOM_UNITS_CARBON
                1224          tmpEPRFe = tmpEPRFe - PTRACERS_ref(ks,iCDOM)*R_FeC_CDOM*totPER
                1225 # else
                1226          tmpEPRFe = tmpEPRFe - PTRACERS_ref(ks,iCDOM)*R_FeP_CDOM*totPER
                1227 # endif
                1228         ENDIF
                1229 #endif
                1230 
                1231 C Silica E-P-R fluxes
                1232         IF (PTRACERS_EvPrRn(iSiO2).NE.UNSET_RL)
                1233      &   tmpEPRSi = tmpEPRSi - PTRACERS_ref(ks,iSiO2)*totPER
                1234         IF (PTRACERS_EvPrRn(iPOSi).NE.UNSET_RL)
                1235      &   tmpEPRSi = tmpEPRSi - PTRACERS_ref(ks,iPOSi)*totPER
                1236         DO np=1,nplank
                1237          IF (PTRACERS_EvPrRn(iTr).NE.UNSET_RL) THEN
                1238 #ifdef DARWIN_ALLOW_SIQUOTA
                1239           iTr=isi+np-1
                1240           tmpEPRSi = tmpEPRSi - PTRACERS_ref(ks,iTr)*totPER
                1241 #else
                1242           iTr=ic+np-1
                1243           tmpEPRSi = tmpEPRSi - PTRACERS_ref(ks,iTr)*R_SiC(np)*totPER
                1244 #endif
                1245          ENDIF
                1246         ENDDO
                1247 
                1248 C Alkalinity and oxygen E-P-R fluxes
                1249 #ifdef DARWIN_ALLOW_CARBON
                1250         IF (PTRACERS_EvPrRn(iALK).NE.UNSET_RL)
                1251      &   tmpEPRA = tmpEPRA - PTRACERS_ref(ks,iALK)*totPER
                1252         IF (PTRACERS_EvPrRn(iO2).NE.UNSET_RL)
                1253      &   tmpEPRO = tmpEPRO - PTRACERS_ref(ks,iO2)*totPER
                1254 #endif
                1255        ENDIF
                1256 
                1257 C ----------------------------------------------------------------------
                1258 C Add EvPrRn for all cases
                1259 
                1260 C Carbon E-P-R fluxes
                1261         IF (PTRACERS_EvPrRn(iDIC).NE.UNSET_RL)
                1262      &   tmpEPRC = tmpEPRC + PTRACERS_EvPrRn(iDIC)*totPER
                1263         IF (PTRACERS_EvPrRn(iDOC).NE.UNSET_RL)
                1264      &   tmpEPRC = tmpEPRC + PTRACERS_EvPrRn(iDOC)*totPER
                1265         IF (PTRACERS_EvPrRn(iPOC).NE.UNSET_RL)
                1266      &   tmpEPRC = tmpEPRC + PTRACERS_EvPrRn(iPOC)*totPER
                1267         IF (PTRACERS_EvPrRn(iPIC).NE.UNSET_RL)
                1268      &   tmpEPRC = tmpEPRC + PTRACERS_EvPrRn(iPIC)*totPER
                1269         DO np=1,nplank
                1270          iTr=ic+np-1
                1271          IF (PTRACERS_EvPrRn(iTr).NE.UNSET_RL)
                1272      &    tmpEPRC = tmpEPRC+PTRACERS_EvPrRn(iTr)*(1+R_PICPOC(np))*totPER
                1273         ENDDO
                1274 #ifdef DARWIN_ALLOW_CDOM
                1275         IF (PTRACERS_EvPrRn(iCDOM).NE.UNSET_RL) THEN
                1276 # ifdef DARWIN_CDOM_UNITS_CARBON
                1277          tmpEPRC = tmpEPRC + PTRACERS_EvPrRn(iCDOM)*totPER
                1278 # else
                1279          tmpEPRC = tmpEPRC + PTRACERS_EvPrRn(iCDOM)*R_CP_CDOM*totPER
                1280 # endif
                1281         ENDIF
                1282 #endif
                1283 
                1284 C Nitrogen E-P-R fluxes
                1285         IF (PTRACERS_EvPrRn(iNO3).NE.UNSET_RL)
                1286      &   tmpEPRN = tmpEPRN + PTRACERS_EvPrRn(iNO3)*totPER
                1287         IF (PTRACERS_EvPrRn(iNH4).NE.UNSET_RL)
                1288      &   tmpEPRN = tmpEPRN + PTRACERS_EvPrRn(iNH4)*totPER
                1289         IF (PTRACERS_EvPrRn(iNO2).NE.UNSET_RL)
                1290      &   tmpEPRN = tmpEPRN + PTRACERS_EvPrRn(iNO2)*totPER
                1291         IF (PTRACERS_EvPrRn(iDON).NE.UNSET_RL)
                1292      &   tmpEPRN = tmpEPRN + PTRACERS_EvPrRn(iDON)*totPER
                1293         IF (PTRACERS_EvPrRn(iPON).NE.UNSET_RL)
                1294      &   tmpEPRN = tmpEPRN + PTRACERS_EvPrRn(iPON)*totPER
                1295         DO np=1,nplank
                1296          IF (PTRACERS_EvPrRn(iTr).NE.UNSET_RL) THEN
                1297 #ifdef DARWIN_ALLOW_NQUOTA
                1298           iTr=in+np-1
                1299           tmpEPRN = tmpEPRN + PTRACERS_EvPrRn(iTr)*totPER
                1300 #else
                1301           iTr=ic+np-1
                1302           tmpEPRN = tmpEPRN + PTRACERS_EvPrRn(iTr)*R_NC(np)*totPER
                1303 #endif
                1304          ENDIF
                1305         ENDDO
                1306 #ifdef DARWIN_ALLOW_CDOM
                1307         IF (PTRACERS_EvPrRn(iCDOM).NE.UNSET_RL) THEN
                1308 # ifdef DARWIN_CDOM_UNITS_CARBON
                1309          tmpEPRN = tmpEPRN + PTRACERS_EvPrRn(iCDOM)*totPER
                1310 # else
                1311          tmpEPRN = tmpEPRN + PTRACERS_EvPrRn(iCDOM)*R_NP_CDOM*totPER
                1312 # endif
                1313         ENDIF
                1314 #endif
                1315 
                1316 C Phosphorus E-P-R fluxes
                1317         IF (PTRACERS_EvPrRn(iPO4).NE.UNSET_RL)
                1318      &   tmpEPRP = tmpEPRP + PTRACERS_EvPrRn(iPO4)*totPER
                1319         IF (PTRACERS_EvPrRn(iDOP).NE.UNSET_RL)
                1320      &   tmpEPRP = tmpEPRP + PTRACERS_EvPrRn(iDOP)*totPER
                1321         IF (PTRACERS_EvPrRn(iPOP).NE.UNSET_RL)
                1322      &   tmpEPRP = tmpEPRP + PTRACERS_EvPrRn(iPOP)*totPER
                1323         DO np=1,nplank
                1324          IF (PTRACERS_EvPrRn(iTr).NE.UNSET_RL) THEN
                1325 #ifdef DARWIN_ALLOW_PQUOTA
                1326           iTr=ip+np-1
                1327           tmpEPRP = tmpEPRP + PTRACERS_EvPrRn(iTr)*totPER
                1328 #else
                1329           iTr=ic+np-1
                1330           tmpEPRP = tmpEPRP + PTRACERS_EvPrRn(iTr)*R_PC(np)*totPER
                1331 #endif
                1332          ENDIF
                1333         ENDDO
                1334 #ifdef DARWIN_ALLOW_CDOM
                1335         IF (PTRACERS_EvPrRn(iCDOM).NE.UNSET_RL) THEN
                1336 # ifdef DARWIN_CDOM_UNITS_CARBON
                1337          tmpEPRP = tmpEPRP + PTRACERS_EvPrRn(iCDOM)*R_PC_CDOM*totPER
                1338 # else
                1339          tmpEPRP = tmpEPRP + PTRACERS_EvPrRn(iCDOM)*totPER
                1340 # endif
                1341         ENDIF
                1342 #endif
                1343 
                1344 C Iron E-P-R fluxes
                1345         IF (PTRACERS_EvPrRn(iFeT).NE.UNSET_RL)
                1346      &   tmpEPRFe = tmpEPRFe + PTRACERS_EvPrRn(iFeT)*totPER
                1347         IF (PTRACERS_EvPrRn(iDOFe).NE.UNSET_RL)
                1348      &   tmpEPRFe = tmpEPRFe + PTRACERS_EvPrRn(iDOFe)*totPER
                1349         IF (PTRACERS_EvPrRn(iPOFe).NE.UNSET_RL)
                1350      &   tmpEPRFe = tmpEPRFe + PTRACERS_EvPrRn(iPOFe)*totPER
                1351         DO np=1,nplank
                1352          IF (PTRACERS_EvPrRn(iTr).NE.UNSET_RL) THEN
                1353 #ifdef DARWIN_ALLOW_FEQUOTA
                1354           iTr=ife+np-1
                1355           tmpEPRFe = tmpEPRFe + PTRACERS_EvPrRn(iTr)*totPER
                1356 #else
                1357           iTr=ic+np-1
                1358           tmpEPRFe = tmpEPRFe + PTRACERS_EvPrRn(iTr)*R_FeC(np)*totPER
                1359 #endif
                1360          ENDIF
                1361         ENDDO
                1362 #ifdef DARWIN_ALLOW_CDOM
                1363         IF (PTRACERS_EvPrRn(iCDOM).NE.UNSET_RL) THEN
                1364 # ifdef DARWIN_CDOM_UNITS_CARBON
                1365          tmpEPRFe = tmpEPRFe + PTRACERS_EvPrRn(iCDOM)*R_FeC_CDOM*totPER
                1366 # else
                1367          tmpEPRFe = tmpEPRFe + PTRACERS_EvPrRn(iCDOM)*R_FeP_CDOM*totPER
                1368 # endif
                1369         ENDIF
                1370 #endif
                1371 
                1372 C Silica E-P-R fluxes
                1373         IF (PTRACERS_EvPrRn(iSiO2).NE.UNSET_RL)
                1374      &   tmpEPRSi = tmpEPRSi + PTRACERS_EvPrRn(iSiO2)*totPER
                1375         IF (PTRACERS_EvPrRn(iPOSi).NE.UNSET_RL)
                1376      &   tmpEPRSi = tmpEPRSi + PTRACERS_EvPrRn(iPOSi)*totPER
                1377         DO np=1,nplank
                1378          IF (PTRACERS_EvPrRn(iTr).NE.UNSET_RL) THEN
                1379 #ifdef DARWIN_ALLOW_SIQUOTA
                1380           iTr=isi+np-1
                1381           tmpEPRSi = tmpEPRSi + PTRACERS_EvPrRn(iTr)*totPER
                1382 #else
                1383           iTr=ic+np-1
                1384           tmpEPRSi = tmpEPRSi + PTRACERS_EvPrRn(iTr)*R_SiC(np)*totPER
                1385 #endif
                1386          ENDIF
                1387         ENDDO
                1388 
                1389 C Alkalinity and oxygen E-P-R fluxes
                1390 #ifdef DARWIN_ALLOW_CARBON
                1391         IF (PTRACERS_EvPrRn(iALK).NE.UNSET_RL)
                1392      &   tmpEPRA = tmpEPRA + PTRACERS_EvPrRn(iALK)*totPER
                1393         IF (PTRACERS_EvPrRn(iO2).NE.UNSET_RL)
                1394      &   tmpEPRO = tmpEPRO + PTRACERS_EvPrRn(iO2)*totPER
                1395 #endif
                1396 
                1397 C     endif stage 1
                1398       ENDIF
                1399 
                1400 C ======================================================================
                1401 C write totals
                1402 
8fbfd1f382 Oliv*1403       IF ( myProcId.EQ.0 .AND. myThid.EQ.1 ) THEN
b1c723aa53 Oliv*1404 C do not write ecosystem non-conservation terms before they are applied
9a7312b062 Oliv*1405         IF ((myIter.EQ.nIter0 .OR.
                1406      &       (staggerTimeStep.AND.myIter.EQ.nIter0+1)) .AND.
                1407      &      stage.EQ.0) THEN
2a97638e3d Oliv*1408          WRITE(DAR_cons_C_unit,'(A1,A11,A6,A20,8A24)')'#','iter',
16faaabac2 Oliv*1409      &      'stage','tot','mean','sfcflx','virtflx','botsnk','impFS',
2a97638e3d Oliv*1410      &      'EPR','runoff','sed'
0f48d9a81b Oliv*1411          WRITE(DAR_cons_N_unit,'(A1,A11,A6,A20,8A24)')'#','iter',
16faaabac2 Oliv*1412      &      'stage','tot','mean','Nfix','Ndenit','botsnk','impFS','EPR',
0f48d9a81b Oliv*1413      &      'runoff','sed'
                1414          WRITE(DAR_cons_P_unit,'(A1,A11,A6,A20,6A24)')'#','iter',
                1415      &      'stage','tot','mean','botsnk','impFS','EPR','runoff','sed'
16faaabac2 Oliv*1416          WRITE(DAR_cons_Fe_unit,'(A1,A11,A6,A20,10A24)')'#','iter',
248275f1c4 Oliv*1417      &      'stage','tot','mean','minFeLoss','scav','sfcflx','sedflx',
16faaabac2 Oliv*1418      &      'ventflx','botsnk','impFS','EPR','runoff'
                1419          WRITE(DAR_cons_Si_unit,'(A1,A11,A6,A20,5A24)')'#','iter',
                1420      &      'stage','tot','mean','botsnk','impFS','EPR','runoff'
d63a4681e3 Oliv*1421 
8fbfd1f382 Oliv*1422 #ifdef DARWIN_ALLOW_CARBON
2a97638e3d Oliv*1423          WRITE(DAR_cons_A_unit,'(A1,A11,A6,A20,7A24)')'#','iter',
16faaabac2 Oliv*1424      &      'stage','tot','mean','sfcflx','AlkSrc','impFS','EPR',
8a10163480 Oliv*1425      &      'runoff','sed'
2a97638e3d Oliv*1426          WRITE(DAR_cons_O_unit,'(A1,A11,A6,A20,7A24)')'#','iter',
16faaabac2 Oliv*1427      &     'stage','tot','mean','sfcflx','O2prod','O2cons','impFS','EPR'
2a97638e3d Oliv*1428      &     ,'sed'
9a7312b062 Oliv*1429 #endif
                1430         ENDIF
16faaabac2 Oliv*1431 
2a97638e3d Oliv*1432         WRITE(DAR_cons_C_unit,'(I12,I2,9E24.16)') myIter, stage,
407760706f Oliv*1433      &     tmptotC, tmptotC/voltot, tmpsfcflxC, tmpvirflxC, -tmpBotSnkC,
2a97638e3d Oliv*1434      &     tmpFSC, tmpEPRC, tmprunoffC, tmpsedflxC
0f48d9a81b Oliv*1435         WRITE(DAR_cons_N_unit,'(I12,I2,9E24.16)') myIter, stage,
248275f1c4 Oliv*1436      &     tmptotN, tmptotN/voltot, tmptotNfix, -tmptotNdenit,
0f48d9a81b Oliv*1437      &     -tmpBotSnkN, tmpFSN, tmpEPRN, tmprunoffN, tmpsedflxN
                1438         WRITE(DAR_cons_P_unit,'(I12,I2,7E24.16)') myIter, stage,
16faaabac2 Oliv*1439      &     tmptotP, tmptotP/voltot, -tmpBotSnkP, tmpFSP,tmpEPRP,
0f48d9a81b Oliv*1440      &     tmprunoffP, tmpsedflxP
16faaabac2 Oliv*1441         WRITE(DAR_cons_Fe_unit,'(I12,I2,11E24.16)') myIter, stage,
5e411acc9e Oliv*1442      &     tmptotFe, tmptotFe/voltot, -tmpminFeLoss, -tmptotscavFe,
2c93eb88ef Oliv*1443      &     tmpsfcflxFe, tmpsedflxFe, tmpventflxFe, -tmpBotSnkFe,
16faaabac2 Oliv*1444      &     tmpFSFe, tmpEPRFe, tmprunoffFe
                1445         WRITE(DAR_cons_Si_unit,'(I12,I2,6E24.16)') myIter, stage,
                1446      &     tmptotSi, tmptotSi/voltot, -tmpBotSnkSi, tmpFSSi, tmpEPRSi,
d63a4681e3 Oliv*1447      &     tmprunoffSi
9a7312b062 Oliv*1448 #ifdef DARWIN_ALLOW_CARBON
2a97638e3d Oliv*1449         WRITE(DAR_cons_A_unit,'(I12,I2,8E24.16)') myIter, stage,
16faaabac2 Oliv*1450      &     tmptotA, tmptotA/voltot, tmpvirflxA, tmpAlkSrc, tmpFSA,
2a97638e3d Oliv*1451      &     tmpEPRA, tmprunoffA, tmpsedflxA
                1452         WRITE(DAR_cons_O_unit,'(I12,I2,8E24.16)') myIter, stage,
407760706f Oliv*1453      &     tmptotO, tmptotO/voltot, tmpsfcflxO, tmpO2prod, -tmpO2cons,
2a97638e3d Oliv*1454      &     tmpFSO, tmpEPRO, tmpsedflxO
8fbfd1f382 Oliv*1455 #endif
                1456       ENDIF
                1457 
                1458 #endif /* DARWIN_ALLOW_CONS */
                1459 
                1460       RETURN
                1461       END
                1462