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
0004
0005
0006 SUBROUTINE DARWIN_CONS(stage,myTime,myIter,myThid)
0007
0008
0009
0010
0011
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
0032 INTEGER stage
8fbfd1f382 Oliv*0033 _RL myTime
0034 INTEGER myIter
0035 INTEGER myThid
b1c723aa53 Oliv*0036
8fbfd1f382 Oliv*0037
0038 #ifdef DARWIN_ALLOW_CONS
0039
16faaabac2 Oliv*0040
0041 LOGICAL DIAGNOSTICS_IS_ON
0042 EXTERNAL DIAGNOSTICS_IS_ON
0043
b1c723aa53 Oliv*0044
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
0290
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
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
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
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
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
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
0411 tiletotA(bi,bj)=tiletotA(bi,bj)+Ptracer(i,j,k,bi,bj,iALK)*vol
0412
0413 tiletotO(bi,bj)=tiletotO(bi,bj)+Ptracer(i,j,k,bi,bj,iO2)*vol
0414
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
0426
0427
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
5e411acc9e Oliv*0440 ENDDO
0441 ENDDO
0442 ENDDO
a59ebcf0a3 Oliv*0443
16faaabac2 Oliv*0444
0445
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
0527
0528
0529
0530
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
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
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
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
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
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
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
0656 ENDIF
0657
0658
0659
407760706f Oliv*0660
16faaabac2 Oliv*0661
0662
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
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
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
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
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
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
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
407760706f Oliv*0826 ENDIF
0827 #endif /* EXACT_CONSERV */
16faaabac2 Oliv*0828
0829
0830
0831
0832
0833
0834 IF (stage.EQ.0) THEN
0835
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
0845
0846 IF (convertFW2Salt .EQ. -1.) THEN
0847
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
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
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
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
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
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
1004 ENDIF
1005
1006 ENDIF
1007
1008 ENDIF
1009
1010
5e411acc9e Oliv*1011 ENDDO
1012 ENDDO
16faaabac2 Oliv*1013
1014
8fbfd1f382 Oliv*1015 ENDDO
1016 ENDDO
1017
16faaabac2 Oliv*1018
1019
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
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
1092
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
1116
1117
1118 IF (convertFW2Salt .NE. -1) THEN
1119
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
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
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
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
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
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
1258
1259
1260
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
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
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
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
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
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
1398 ENDIF
1399
1400
1401
1402
8fbfd1f382 Oliv*1403 IF ( myProcId.EQ.0 .AND. myThid.EQ.1 ) THEN
b1c723aa53 Oliv*1404
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