File indexing completed on 2025-12-02 20:42:55 UTC
view on githubraw file Latest commit a092808e on 2025-12-02 20:09:45 UTC
8fbfd1f382 Oliv*0001 #include "DARWIN_OPTIONS.h"
0002 #ifdef ALLOW_SEAICE
0003 #include "SEAICE_OPTIONS.h"
0004 #endif
0005
0006
0007
0008
0009 SUBROUTINE DARWIN_FORCING( Ptrdummy,
0010 I bi, bj, iMin, iMax, jMin, jMax,
0011 I myIter, myTime, myThid )
0012
0013
0014
0015
0016 IMPLICIT NONE
0017 #include "SIZE.h"
0018 #include "GRID.h"
0019 #include "EEPARAMS.h"
a8b28cdf62 Oliv*0020 #ifdef ALLOW_EXCH2
0021 #include "W2_EXCH2_SIZE.h"
0022 #include "W2_EXCH2_TOPOLOGY.h"
0023 #include "W2_EXCH2_PARAMS.h"
0024 #endif
8fbfd1f382 Oliv*0025 #include "PARAMS.h"
0026 #include "DYNVARS.h"
0027 #include "PTRACERS_SIZE.h"
0028 #include "PTRACERS_PARAMS.h"
0029 #include "PTRACERS_FIELDS.h"
0030 #ifdef ALLOW_SEAICE
0031 #include "SEAICE_SIZE.h"
0032 #include "SEAICE.h"
0033 #endif
0034 #ifdef ALLOW_RADTRANS
0035 #include "RADTRANS_SIZE.h"
0036 #endif
0037 #ifdef ALLOW_DARWIN
0038 #include "GCHEM.h"
0039 #include "DARWIN_SIZE.h"
0040 #include "DARWIN_INDICES.h"
0041 #include "DARWIN_DIAGS.h"
0042 #include "DARWIN_PARAMS.h"
0043 #include "DARWIN_TRAITS.h"
0044 #include "DARWIN_FIELDS.h"
0045 #include "DARWIN_EXF_FIELDS.h"
0046 #endif
e79020cc6e Oliv*0047 #ifdef DARWIN_NUTRIENT_RUNOFF
0048 #include "DARWIN_EXF_PARAMS.h"
0049 #endif
8fbfd1f382 Oliv*0050
0051
0052
0053
0054 _RL Ptrdummy(*)
0055 _RL myTime
0056 INTEGER iMin, iMax, jMin, jMax, bi, bj, myIter, myThid
0057
0058
0059 #ifdef ALLOW_DARWIN
0060
0061
0062
0063
0064 LOGICAL DIAGNOSTICS_IS_ON
0065 EXTERNAL DIAGNOSTICS_IS_ON
0066 INTEGER i,j,k,kdn,iTr,l,isub
0067 CHARACTER*8 diagname
0068 _RL dTsub(Nr)
0069 _RL midTime, subTime
63ffa46034 Oliv*0070 #if defined ALLOW_DIAGNOSTICS &&
0071 _RL DARWIN_minFeLoss(sNx,sNy,Nr,nSx,nSy)
0072 #endif
8fbfd1f382 Oliv*0073 _RL gPtr(1-OLx:sNx+OLx, 1-OLy:sNy+OLy, Nr, nDarwin)
0074 _RL PAR(1-OLx:sNx+OLx, 1-OLy:sNy+OLy, Nr, nlam)
0075 _RL diags(1-OLx:sNx+OLx,1-OLy:sNy+OLy, Nr, darwin_nDiag)
0076 _RL gDIC(1-OLx:sNx+OLx, 1-OLy:sNy+OLy)
0077 _RL gALK(1-OLx:sNx+OLx, 1-OLy:sNy+OLy)
714cf988dd Oliv*0078 #ifdef DARWIN_DIAG_TENDENCIES
0079 _RL gDICsurfForc(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0080 _RL gNO3surfForc(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0081 _RL gNO2surfForc(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0082 _RL gNH4surfForc(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0083 _RL gPO4surfForc(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0084 _RL gFeTsurfForc(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0085 _RL gSiO2surfForc(1-OLx:sNx+OLx, 1-OLy:sNy+OLy)
0086 #ifdef DARWIN_ALLOW_CARBON
0087 _RL gALKsurfForc(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0088 _RL gO2surfForc(1-OLx:sNx+OLx, 1-OLy:sNy+OLy)
0089 #endif
0090 #endif
8fbfd1f382 Oliv*0091 _RL gO2(1-OLx:sNx+OLx, 1-OLy:sNy+OLy)
3997029bbb Oliv*0092 _RL surfFe(1-OLx:sNx+OLx, 1-OLy:sNy+OLy)
8fbfd1f382 Oliv*0093 _RL freeFe(1-OLx:sNx+OLx, 1-OLy:sNy+OLy, Nr)
c8be5f4655 Oliv*0094 _RL sedFlxFe(1-OLx:sNx+OLx, 1-OLy:sNy+OLy)
c2ba01bd90 Oliv*0095 _RL tmp3d(1-OLx:sNx+OLx, 1-OLy:sNy+OLy, Nr)
82fd1e0266 Oliv*0096 _RL scavRate(1-OLx:sNx+OLx, 1-OLy:sNy+OLy, Nr)
fd32b5ab01 Oliv*0097 _RL scavLoss(1-OLx:sNx+OLx, 1-OLy:sNy+OLy, Nr)
66ade11a9e Oliv*0098 _RL scv,scav_pom
ad5342a8d6 Oliv*0099 _RL flx, POCl
6aa5674e10 Oliv*0100 #ifdef DARWIN_ALLOW_CARBON
0101
8a10163480 Oliv*0102 _RL OmegaC0(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0103 #ifdef DARWIN_ALLOW_RADIv1
6aa5674e10 Oliv*0104 _RL DICFsediment(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0105 _RL ALKFsediment(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0106 _RL O2Fsediment(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0107 _RL POCFsediment(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0108 _RL CALFsediment(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0109
0110
0111 _RL TcorrO2(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0112 _RL TcorrDIC(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0113 _RL TcorrALK(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0114
0115 _RL fluxPIC(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0116 _RL fluxPOC(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0117 _RL absT
0118 #endif
8a10163480 Oliv*0119 #ifdef DARWIN_ALLOW_RADIv2
0120 _RL DICFsediment(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0121 _RL ALKFsediment(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0122 _RL O2Fsediment(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0123 _RL NO3Fsediment(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0124 _RL PO4Fsediment(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0125 _RL NH4Fsediment(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0126
0127 _RL fluxPIC(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0128 _RL fluxPOC(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0129 _RL fluxPOP(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0130 _RL fluxPON(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0131 _RL absT
0132 _RL flxplnkC(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0133 _RL flxplnkP(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0134 _RL flxplnkN(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0135 _RL sed_a1, sed_b1, sed_c1, sed_d1, sed_e1
0136 _RL sed_a2, sed_b2, sed_c2, sed_d2, sed_e2
0137 _RL sed_a3, sed_b3, sed_c3, sed_d3, sed_e3
5938ff335d Oliv*0138 _RL sed_a4, sed_b4, sed_c4, sed_d4, sed_e4, sed_f4, sed_g4
8a10163480 Oliv*0139 _RL sed_a5, sed_b5, sed_c5, sed_d5, sed_e5
0140 _RL sed_a6, sed_b6, sed_c6, sed_d6, sed_e6
0141 #endif
6aa5674e10 Oliv*0142 #endif
8fbfd1f382 Oliv*0143 _RL ptr(nDarwin), gtr(nDarwin), PARl(nlam)
0144 _RL chlout(nPhoto)
0145 _RL diagsl(darwin_nDiag)
5e7acb36b1 daat*0146 _RL sumpreyl(nplank)
0147 _RL sumprey(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nplank)
0148 _RL bioswimDVMup(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nplank)
0149 _RL bioswimDVMdn(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nplank)
0150 _RL SwDr(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nplank)
0151 INTEGER max_loc(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nplank)
0152 _RL sumPAR(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
8fbfd1f382 Oliv*0153 _RL photoTempFunc(nplank)
3f05298721 Oliv*0154 _RL hetTempFunc(nplank)
8fbfd1f382 Oliv*0155 _RL grazTempFunc(nplank)
0156 _RL reminTempFunc
0157 _RL mortTempFunc
0158 _RL mort2TempFunc
0159 _RL uptakeTempFunc
a092808e6b shlo*0160 _RL macromolTempFunc
ba0b6d5d33 Oliv*0161 _RL omegaCl
63ffa46034 Oliv*0162 _RL tmp, tmpFac
b61dca872c Oliv*0163 _RL sedFe(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
2c93eb88ef Oliv*0164 #ifdef DARWIN_ALLOW_HYDROTHERMAL_VENTS
0165 _RL ventFe(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
0166 #endif
6559acf5ff Oliv*0167 INTEGER k_debug
a8b28cdf62 Oliv*0168 #ifdef DARWIN_DEBUG
0169 INTEGER iG, jG
0170 INTEGER iBase, jBase
0171 INTEGER iGjLoc, jGjLoc
0172 #ifdef ALLOW_EXCH2
0173 INTEGER tN
0174 #endif /* ALLOW_EXCH2 */
0175 #endif /* DARWIN_DEBUG */
8fbfd1f382 Oliv*0176
63ffa46034 Oliv*0177 DO k=1,Nr
0178 DO j=1,sNy
0f72dca88c Oliv*0179 DO i=1,sNx
63ffa46034 Oliv*0180 DARWIN_minFeLoss(i,j,k,bi,bj) = 0 _d 0
0181 ENDDO
0182 ENDDO
0183 ENDDO
0184
bff492d006 Oliv*0185 DO l=1,darwin_nDiag
0186 DO k=1,Nr
0187 DO j=1,sNy
0188 DO i=1,sNx
0189 diags(i,j,k,l) = 0 _d 0
0190 ENDDO
0191 ENDDO
0192 ENDDO
0193 ENDDO
0194
8fbfd1f382 Oliv*0195 DO k=1,Nr
0196 dTsub(k) = PTRACERS_dTLev(k)/nsubtime
0197 ENDDO
0198
0199
0200 midTime = myTime - deltaTclock + .5*deltaTclock/nsubtime
0201
0202 subTime = myTime - deltaTclock + deltaTclock/nsubtime
0203 DO isub=1,nsubtime
0204
0205
0206 DO itr=1,nDarwin
0207 DO k=1,Nr
0208 DO j=jMin,jMax
0209 DO i=iMin,iMax
0210 gPtr(i,j,k,iTr) = 0.0 _d 0
0211 ENDDO
0212 ENDDO
0213 ENDDO
0214 ENDDO
0215
0216
0217
0218
0219
0220
0221
0222
0223
0224 #ifdef ALLOW_SEAICE
0225 IF (DARWIN_useSEAICE) THEN
0226 DO j=jMin,jMax
0227 DO i=iMin,iMax
0228 iceFrac(i,j,bi,bj) = AREA(i,j,bi,bj)
0229 ENDDO
0230 ENDDO
0231 ENDIF
0232 #endif
0233
0234 CALL TIMER_START('DARWIN_LIGHT [DARWIN_FORCING]',myThid)
0235 #ifdef ALLOW_RADTRANS
0236 CALL DARWIN_LIGHT_RADTRANS(PAR,subTime,bi,bj,iMin,iMax,jMin,jMax,
0237 & subTime,myIter,myThid)
0238 #else
248275f1c4 Oliv*0239 CALL DARWIN_LIGHT(PAR, midTime, bi, bj, iMin, iMax, jMin, jMax,
8fbfd1f382 Oliv*0240 & subTime, myIter, myThid)
0241 #endif
0242 CALL TIMER_STOP ('DARWIN_LIGHT [DARWIN_FORCING]',myThid)
0243
0244
0245 #ifdef DARWIN_ALLOW_CARBON
0246
0247 CALL TIMER_START('DARWIN_SURFFORCING [DARWIN_FORCING]',myThid)
0248 CALL DARWIN_SURFFORCING(
0249 O gDIC, gALK, gO2,
5e411acc9e Oliv*0250 I dTsub,bi,bj,iMin,iMax,jMin,jMax,
8fbfd1f382 Oliv*0251 I subTime,myIter,myThid)
0252 CALL TIMER_STOP ('DARWIN_SURFFORCING [DARWIN_FORCING]',myThid)
0253 DO j=jMin,jMax
0254 DO i=iMin,iMax
e79020cc6e Oliv*0255 gPtr(i,j,1,iDIC) = gPtr(i,j,1,iDIC) + gDIC(i,j)
0256 gPtr(i,j,1,iALK) = gPtr(i,j,1,iALK) + gALK(i,j)
0257 gPtr(i,j,1,iO2) = gPtr(i,j,1,iO2) + gO2(i,j)
8fbfd1f382 Oliv*0258 ENDDO
0259 ENDDO
c2ba01bd90 Oliv*0260
0261 #ifdef NONLIN_FRSURF
0262
0263
0264 IF (nonlinFreeSurf.GT.0) THEN
0265 CALL FREESURF_RESCALE_G(
0266 I bi, bj, 1,
0267 U gPtr(1-OLx,1-OLy,1,iDIC),
0268 I myThid )
0269 CALL FREESURF_RESCALE_G(
0270 I bi, bj, 1,
0271 U gPtr(1-OLx,1-OLy,1,iALK),
0272 I myThid )
0273 CALL FREESURF_RESCALE_G(
0274 I bi, bj, 1,
0275 U gPtr(1-OLx,1-OLy,1,iO2),
0276 I myThid )
0277 ENDIF
0278 #endif /* NONLIN_FRSURF */
0279 #endif /* DARWIN_ALLOW_CARBON */
8fbfd1f382 Oliv*0280
714cf988dd Oliv*0281 #ifdef DARWIN_DIAG_TENDENCIES
e79020cc6e Oliv*0282
714cf988dd Oliv*0283 DO j=jMin,jMax
0284 DO i=iMin,iMax
0285 gDICsurfForc(i,j) = surfaceForcingPTr(i,j,bi,bj,iDIC)
0286 & * recip_drF(1)*recip_hFacC(i,j,1,bi,bj)
0287 gNO3surfForc(i,j) = surfaceForcingPTr(i,j,bi,bj,iNO3)
0288 & * recip_drF(1)*recip_hFacC(i,j,1,bi,bj)
0289 gNO2surfForc(i,j) = surfaceForcingPTr(i,j,bi,bj,iNO2)
0290 & * recip_drF(1)*recip_hFacC(i,j,1,bi,bj)
0291 gNH4surfForc(i,j) = surfaceForcingPTr(i,j,bi,bj,iNH4)
0292 & * recip_drF(1)*recip_hFacC(i,j,1,bi,bj)
0293 gPO4surfForc(i,j) = surfaceForcingPTr(i,j,bi,bj,iPO4)
0294 & * recip_drF(1)*recip_hFacC(i,j,1,bi,bj)
0295 gFeTsurfForc(i,j) = surfaceForcingPTr(i,j,bi,bj,iFeT)
0296 & * recip_drF(1)*recip_hFacC(i,j,1,bi,bj)
0297 gSiO2surfForc(i,j) = surfaceForcingPTr(i,j,bi,bj,iSiO2)
0298 & * recip_drF(1)*recip_hFacC(i,j,1,bi,bj)
0299 #ifdef DARWIN_ALLOW_CARBON
0300 gALKsurfForc(i,j) = surfaceForcingPTr(i,j,bi,bj,iALK)
0301 & * recip_drF(1)*recip_hFacC(i,j,1,bi,bj)
0302 gO2surfForc(i,j) = surfaceForcingPTr(i,j,bi,bj,iO2)
0303 & * recip_drF(1)*recip_hFacC(i,j,1,bi,bj)
0304 #endif
0305 ENDDO
0306 ENDDO
0307 #endif
0308
e79020cc6e Oliv*0309
0310 #ifdef DARWIN_NUTRIENT_RUNOFF
16ebea87f8 Oliv*0311 CALL DARWIN_ADD_SURFFORC(
0312 U gPtr(1-OLx,1-OLy,1,iDOC),
0313 I DOCrunoff(1-OLx,1-OLy,bi,bj), 1 _d 0,
0314 I bi, bj, iMin, iMax, jMin, jMax,
0315 I myIter, myTime, myThid )
0316
0317 CALL DARWIN_ADD_SURFFORC(
0318 U gPtr(1-OLx,1-OLy,1,iDON),
0319 I DONrunoff(1-OLx,1-OLy,bi,bj), 1 _d 0,
0320 I bi, bj, iMin, iMax, jMin, jMax,
0321 I myIter, myTime, myThid )
0322
0323 CALL DARWIN_ADD_SURFFORC(
0324 U gPtr(1-OLx,1-OLy,1,iDOP),
0325 I DOPrunoff(1-OLx,1-OLy,bi,bj), 1 _d 0,
0326 I bi, bj, iMin, iMax, jMin, jMax,
0327 I myIter, myTime, myThid )
0328
0329 CALL DARWIN_ADD_SURFFORC(
0330 U gPtr(1-OLx,1-OLy,1,iNO3),
0331 I DINrunoff(1-OLx,1-OLy,bi,bj),
0332 I R_NO3_DIN_runoff,
0333 I bi, bj, iMin, iMax, jMin, jMax,
0334 I myIter, myTime, myThid )
0335
0336 CALL DARWIN_ADD_SURFFORC(
0337 U gPtr(1-OLx,1-OLy,1,iNO2),
0338 I DINrunoff(1-OLx,1-OLy,bi,bj),
0339 I R_NO2_DIN_runoff,
0340 I bi, bj, iMin, iMax, jMin, jMax,
0341 I myIter, myTime, myThid )
0342
0343 CALL DARWIN_ADD_SURFFORC(
0344 U gPtr(1-OLx,1-OLy,1,iNH4),
0345 I DINrunoff(1-OLx,1-OLy,bi,bj),
0346 I R_NH4_DIN_runoff,
0347 I bi, bj, iMin, iMax, jMin, jMax,
0348 I myIter, myTime, myThid )
11d365acff Oliv*0349
0350 CALL DARWIN_ADD_SURFFORC(
0351 U gPtr(1-OLx,1-OLy,1,iNO3),
0352 I NO3runoff(1-OLx,1-OLy,bi,bj), 1 _d 0,
0353 I bi, bj, iMin, iMax, jMin, jMax,
0354 I myIter, myTime, myThid )
0355
0356 CALL DARWIN_ADD_SURFFORC(
0357 U gPtr(1-OLx,1-OLy,1,iNO2),
0358 I NO2runoff(1-OLx,1-OLy,bi,bj), 1 _d 0,
0359 I bi, bj, iMin, iMax, jMin, jMax,
0360 I myIter, myTime, myThid )
0361
0362 CALL DARWIN_ADD_SURFFORC(
0363 U gPtr(1-OLx,1-OLy,1,iNH4),
0364 I NH4runoff(1-OLx,1-OLy,bi,bj), 1 _d 0,
0365 I bi, bj, iMin, iMax, jMin, jMax,
0366 I myIter, myTime, myThid )
16ebea87f8 Oliv*0367
0368 CALL DARWIN_ADD_SURFFORC(
0369 U gPtr(1-OLx,1-OLy,1,iPO4),
0370 I IPrunoff(1-OLx,1-OLy,bi,bj),
0371 I R_DIP_IP_runoff,
0372 I bi, bj, iMin, iMax, jMin, jMax,
0373 I myIter, myTime, myThid )
0374
0375 CALL DARWIN_ADD_SURFFORC(
0376 U gPtr(1-OLx,1-OLy,1,iSiO2),
0377 I DSirunoff(1-OLx,1-OLy,bi,bj), 1 _d 0,
0378 I bi, bj, iMin, iMax, jMin, jMax,
0379 I myIter, myTime, myThid )
0380
0381 CALL DARWIN_ADD_SURFFORC(
0382 U gPtr(1-OLx,1-OLy,1,iPOC),
0383 I POCrunoff(1-OLx,1-OLy,bi,bj), 1 _d 0,
0384 I bi, bj, iMin, iMax, jMin, jMax,
0385 I myIter, myTime, myThid )
0386
0387 CALL DARWIN_ADD_SURFFORC(
0388 U gPtr(1-OLx,1-OLy,1,iPON),
0389 I PONrunoff(1-OLx,1-OLy,bi,bj), 1 _d 0,
0390 I bi, bj, iMin, iMax, jMin, jMax,
0391 I myIter, myTime, myThid )
0392
0393 CALL DARWIN_ADD_SURFFORC(
0394 U gPtr(1-OLx,1-OLy,1,iPOP),
0395 I POPrunoff(1-OLx,1-OLy,bi,bj), 1 _d 0,
0396 I bi, bj, iMin, iMax, jMin, jMax,
0397 I myIter, myTime, myThid )
0398
0399 CALL DARWIN_ADD_SURFFORC(
0400 U gPtr(1-OLx,1-OLy,1,iDIC),
0401 I DICrunoff(1-OLx,1-OLy,bi,bj), 1 _d 0,
0402 I bi, bj, iMin, iMax, jMin, jMax,
0403 I myIter, myTime, myThid )
0404
0405 #ifdef DARWIN_ALLOW_CARBON
0406 CALL DARWIN_ADD_SURFFORC(
0407 U gPtr(1-OLx,1-OLy,1,iALK),
0408 I DICrunoff(1-OLx,1-OLy,bi,bj),
0409 I R_ALK_DIC_runoff,
0410 I bi, bj, iMin, iMax, jMin, jMax,
0411 I myIter, myTime, myThid )
0412 #endif
0413
0414 CALL DARWIN_ADD_SURFFORC(
0415 U gPtr(1-OLx,1-OLy,1,iFeT),
0416 I IPrunoff(1-OLx,1-OLy,bi,bj),
0417 I R_DIP_IP_runoff*R_DFe_DIP_runoff,
0418 I bi, bj, iMin, iMax, jMin, jMax,
0419 I myIter, myTime, myThid )
0420
0421 CALL DARWIN_ADD_SURFFORC(
0422 U gPtr(1-OLx,1-OLy,1,iDOFe),
0423 I DOPrunoff(1-OLx,1-OLy,bi,bj),
0424 I R_DOFe_DOP_runoff,
0425 I bi, bj, iMin, iMax, jMin, jMax,
0426 I myIter, myTime, myThid )
0427
0428 CALL DARWIN_ADD_SURFFORC(
0429 U gPtr(1-OLx,1-OLy,1,iPOFe),
0430 I POPrunoff(1-OLx,1-OLy,bi,bj),
0431 I R_POFe_POP_runoff,
0432 I bi, bj, iMin, iMax, jMin, jMax,
0433 I myIter, myTime, myThid )
e79020cc6e Oliv*0434 #endif
0435
8fbfd1f382 Oliv*0436
2c93eb88ef Oliv*0437
0438
8fbfd1f382 Oliv*0439 CALL TIMER_START('DARWIN_FE_CHEM [DARWIN_FORCING]',myThid)
0440 CALL DARWIN_FE_CHEM(
0441 U Ptracer(1-OLx,1-OLy,1,bi,bj,iFeT),
63ffa46034 Oliv*0442 O freeFe(1-OLx,1-OLy,1),
0443 U DARWIN_minFeLoss(1,1,1,bi,bj),
8fbfd1f382 Oliv*0444 I bi, bj, iMin, iMax, jMin, jMax, myThid)
0445 CALL TIMER_STOP ('DARWIN_FE_CHEM [DARWIN_FORCING]',myThid)
0446
2c93eb88ef Oliv*0447
8fbfd1f382 Oliv*0448
0449 CALL TIMER_START('DARWIN_FE_SCAV [DARWIN_FORCING]',myThid)
0450 DO k=1,Nr
0451 DO j=jMin,jMax
0452 DO i=iMin,iMax
66ade11a9e Oliv*0453
8fbfd1f382 Oliv*0454 #ifdef DARWIN_PART_SCAV_POP
66ade11a9e Oliv*0455 scav_pom = MAX(0 _d 0, Ptracer(i,j,k,bi,bj,iPOP))/scav_R_POPPOC
0456 scv = scav_rat*scav_inter*(scav_pom**scav_exp)
8fbfd1f382 Oliv*0457 #elif defined(DARWIN_PART_SCAV)
66ade11a9e Oliv*0458 scav_pom = scav_POC_wgt*MAX(0 _d 0, Ptracer(i,j,k,bi,bj,iPOC))
28ac947a3e Oliv*0459 & + scav_PSi_wgt*MAX(0 _d 0, Ptracer(i,j,k,bi,bj,iPOSi))
66ade11a9e Oliv*0460 & + scav_PIC_wgt*MAX(0 _d 0, Ptracer(i,j,k,bi,bj,iPIC))
28ac947a3e Oliv*0461 & + scav_degrPOM
66ade11a9e Oliv*0462 scv = scav_tau*scav_inter*(scav_pom**scav_exp)
8fbfd1f382 Oliv*0463 #else
0464 scv = scav
0465 #endif
82fd1e0266 Oliv*0466 scavRate(i,j,k) = scv
fd32b5ab01 Oliv*0467 scavLoss(i,j,k) = scv*MAX(0 _d 0, freefe(i,j,k))
0468 gPtr(i,j,k,iFeT) = gPtr(i,j,k,iFeT) - scavLoss(i,j,k)
a59ebcf0a3 Oliv*0469 #ifdef DARWIN_ALLOW_CONS
5e411acc9e Oliv*0470 DARWIN_partScav(i,j,k,bi,bj) = DARWIN_partScav(i,j,k,bi,bj)
fd32b5ab01 Oliv*0471 & + dTsub(k)*scavLoss(i,j,k)
a59ebcf0a3 Oliv*0472 #endif
8fbfd1f382 Oliv*0473 ENDDO
0474 ENDDO
0475 ENDDO
0476 CALL TIMER_STOP ('DARWIN_FE_SCAV [DARWIN_FORCING]',myThid)
0477
2c93eb88ef Oliv*0478
c59946c66d Oliv*0479
0480 CALL TIMER_START('DARWIN_FE_DUST [DARWIN_FORCING]',myThid)
0481 DO j=jMin,jMax
c2ba01bd90 Oliv*0482 DO i=iMin,iMax
0483 tmp3d(i,j,1) = alpfe * inputFe(i,j,bi,bj)
0484 & * recip_drF(1) * recip_hFacC(i,j,1,bi,bj)
0485 ENDDO
c59946c66d Oliv*0486 ENDDO
c2ba01bd90 Oliv*0487 #ifdef NONLIN_FRSURF
0488
0489 IF (nonlinFreeSurf.GT.0) THEN
0490 CALL FREESURF_RESCALE_G(
0491 I bi, bj, 1,
0492 U tmp3d,
0493 I myThid )
0494 ENDIF
0495 #endif /* NONLIN_FRSURF */
0496 DO j=jMin,jMax
0497 DO i=iMin,iMax
0498 gPtr(i,j,1,iFeT) = gPtr(i,j,1,iFeT) + tmp3d(i,j,1)
0499 ENDDO
c59946c66d Oliv*0500 ENDDO
0501 CALL TIMER_STOP ('DARWIN_FE_DUST [DARWIN_FORCING]',myThid)
0502
2c93eb88ef Oliv*0503
8fbfd1f382 Oliv*0504
0505 CALL TIMER_START('DARWIN_FE_SED [DARWIN_FORCING]',myThid)
2c93eb88ef Oliv*0506 DO k=1,Nr
8fbfd1f382 Oliv*0507 DO j=jMin,jMax
0508 DO i=iMin,iMax
2c93eb88ef Oliv*0509 sedFe(i,j,k) = 0 _d 0
0510 ENDDO
0511 ENDDO
0512 ENDDO
0513 DO j=jMin,jMax
0514 DO i=iMin,iMax
0515 k = kLowC(i,j,bi,bj)
0516 IF (k .GE. kMinFeSed .AND. k .LE. kMaxFeSed) THEN
8fbfd1f382 Oliv*0517 #ifdef DARWIN_IRON_SED_SOURCE_VARIABLE
ad5342a8d6 Oliv*0518 # ifdef DARWIN_IRON_SED_SOURCE_POP
a092808e6b shlo*0519
8fbfd1f382 Oliv*0520 flx = fesedflux_pcm*wp_sink*R_CP_fesed*
0521 & MAX(0 _d 0, Ptracer(i,j,k-1,bi,bj,iPOP))
8e211684e0 Oliv*0522 & *maskC(i,j,k-1,bi,bj)
ad5342a8d6 Oliv*0523 # else
0524 POCl = MAX(0 _d 0, Ptracer(i,j,k,bi,bj,iPOC))
0525 flx = fesedflux_pcm*wc_sink*POCl - fesedflux_min
0526 flx = MAX(0. _d 0, flx)
0527 # endif
8fbfd1f382 Oliv*0528 #else
0529 flx = fesedflux
0530 #endif
c8be5f4655 Oliv*0531 sedFlxFe(i,j) = flx
b61dca872c Oliv*0532 sedFe(i,j,k) = flx/(drF(k)*hFacC(i,j,k,bi,bj))
a59ebcf0a3 Oliv*0533 #ifdef DARWIN_ALLOW_CONS
5e411acc9e Oliv*0534 ironSedFlx(i,j,bi,bj) = ironSedFlx(i,j,bi,bj) + dTsub(k)*flx
a59ebcf0a3 Oliv*0535 #endif
c8be5f4655 Oliv*0536 ELSE
0537 sedFlxFe(i,j) = 0 _d 0
2c93eb88ef Oliv*0538 ENDIF
8fbfd1f382 Oliv*0539 ENDDO
2c93eb88ef Oliv*0540 ENDDO
0541 DO k=kMinFeSed, kMaxFeSed
c2ba01bd90 Oliv*0542 #ifdef NONLIN_FRSURF
0543
0544 IF (nonlinFreeSurf.GT.0) THEN
0545 CALL FREESURF_RESCALE_G(
0546 I bi, bj, k,
0547 U sedFe,
0548 I myThid )
0549 ENDIF
0550 #endif /* NONLIN_FRSURF */
0551 DO j=jMin,jMax
0552 DO i=iMin,iMax
0553 gPtr(i,j,k,iFeT) = gPtr(i,j,k,iFeT) + sedFe(i,j,k)
0554 ENDDO
0555 ENDDO
8fbfd1f382 Oliv*0556 ENDDO
0557 CALL TIMER_STOP ('DARWIN_FE_SED [DARWIN_FORCING]',myThid)
0558
2c93eb88ef Oliv*0559
0560
0561
0562
0563 #ifdef DARWIN_ALLOW_HYDROTHERMAL_VENTS
0564 IF (darwin_haveVentHe3) THEN
0565 CALL TIMER_START('DARWIN_FE_VENT [DARWIN_FORCING]',myThid)
0566 DO k=1,Nr
0567 DO j=jMin,jMax
0568 DO i=iMin,iMax
0569 ventFe(i,j,k) = 0 _d 0
0570 ENDDO
0571 ENDDO
0572 ENDDO
0573 DO j=jMin,jMax
0574 DO i=iMin,iMax
0575 k = kLowC(i,j,bi,bj)
0576 IF (k .GE. kMinFeVent) THEN
0577 flx = solFeVent*R_FeHe3_vent*ventHe3(i,j,bi,bj)
0578 ventFe(i,j,k) = flx*recip_drF(k)*recip_hFacC(i,j,k,bi,bj)
0579 # ifdef DARWIN_ALLOW_CONS
0580 ironVentFlx(i,j,bi,bj)=ironVentFlx(i,j,bi,bj) + dTsub(k)*flx
0581 # endif
0582 ENDIF
0583 ENDDO
0584 ENDDO
0585 DO k=kMinFeVent,Nr
0586 # ifdef NONLIN_FRSURF
0587
0588 IF (nonlinFreeSurf.GT.0) THEN
0589 CALL FREESURF_RESCALE_G(
0590 I bi, bj, k,
0591 U ventFe,
0592 I myThid )
0593 ENDIF
0594 # endif /* NONLIN_FRSURF */
0595 DO j=jMin,jMax
0596 DO i=iMin,iMax
0597 gPtr(i,j,k,iFeT) = gPtr(i,j,k,iFeT) + ventFe(i,j,k)
0598 ENDDO
0599 ENDDO
0600 ENDDO
0601 CALL TIMER_STOP ('DARWIN_FE_VENT [DARWIN_FORCING]',myThid)
0602 ENDIF
0603 #endif
0604
8fbfd1f382 Oliv*0605
0606 CALL TIMER_START('DARWIN_PLANKTON [DARWIN_FORCING]',myThid)
a8b28cdf62 Oliv*0607
0608 #ifdef DARWIN_DEBUG
0609
0610
0611 iGjLoc = 0
0612 jGjLoc = 1
0613 iBase = myXGlobalLo-1 + (bi-1)*sNx
0614 jBase = myYGlobalLo-1 + (bj-1)*sNy
0615 #ifdef ALLOW_EXCH2
0616 IF ( W2_useE2ioLayOut ) THEN
0617 tN = W2_myTileList(bi,bj)
0618 iBase = exch2_txGlobalo(tN) - 1
0619 jBase = exch2_tyGlobalo(tN) - 1
0620 IF ( exch2_mydNx(tN) .GT. exch2_global_Nx ) THEN
0621
0622 iGjLoc = 0
0623 jGjLoc = exch2_mydNx(tN) / exch2_global_Nx
0624 ELSEIF ( exch2_tNy(tN) .GT. exch2_global_Ny ) THEN
0625
0626 iGjLoc = exch2_mydNx(tN)
0627 jGjLoc = 0
0628 ELSE
0629
0630 iGjLoc = 0
0631 jGjLoc = 1
0632 ENDIF
0633 ENDIF
0634 #endif /* ALLOW_EXCH2 */
0635 #endif /* DARWIN_DEBUG */
0636
8fbfd1f382 Oliv*0637 do k=1,Nr
0638 do j=jMin,jMax
a8b28cdf62 Oliv*0639 #ifdef DARWIN_DEBUG
0640 iG = iBase + (j-1)*iGjLoc
0641 jG = jBase + (j-1)*jGjLoc + 1
0642 #endif /* DARWIN_DEBUG */
0643
0644 do i=iMin,iMax
0645 if (hFacC(i,j,k,bi,bj) .GT. 0.) then
6559acf5ff Oliv*0646 k_debug = 0
0647 #ifdef DARWIN_DEBUG
0648 IF (iG+i.eq.iDEBUG.and.jG.eq.jDEBUG) THEN
0649 IF (kDEBUG.EQ.0 .OR. k.EQ.kDebug) THEN
0650 k_debug = k
0651 ENDIF
0652 ENDIF
0653 #endif
8fbfd1f382 Oliv*0654 CALL DARWIN_TEMPFUNC(Theta(i,j,k,bi,bj),
3f05298721 Oliv*0655 & photoTempFunc, hetTempFunc, grazTempFunc,
0656 & reminTempFunc, mortTempFunc, mort2TempFunc,
a092808e6b shlo*0657 & uptakeTempFunc, macromolTempFunc, myThid)
8fbfd1f382 Oliv*0658 DO iTr=1,nDarwin
0659 ptr(iTr) = Ptracer(i, j, k, bi, bj, iTr)
0660 gtr(iTr) = gPtr(i, j, k, iTr)
0661 ENDDO
0662 DO l=1,nlam
26960c5749 Oliv*0663 PARl(l) = MAX(0 _d 0, PAR(i, j, k, l))
8fbfd1f382 Oliv*0664 ENDDO
ba0b6d5d33 Oliv*0665 #ifdef DARWIN_ALLOW_CARBON
0666 omegaCl = omegaC(i,j,k,bi,bj)
0667 #else
0668 omegaCl = 0 _d 0
0669 #endif
8fbfd1f382 Oliv*0670 CALL DARWIN_PLANKTON(
0671 I ptr,
0672 U gtr,
5e7acb36b1 daat*0673 O chlout, diagsl, sumpreyl,
8fbfd1f382 Oliv*0674 I PARl, photoTempFunc,
3f05298721 Oliv*0675 I hetTempFunc,
8fbfd1f382 Oliv*0676 I grazTempFunc,
0677 I reminTempFunc,
0678 I mortTempFunc, mort2TempFunc,
a092808e6b shlo*0679 I uptakeTempFunc, macromolTempFunc,
ba0b6d5d33 Oliv*0680 I omegaCl,
6559acf5ff Oliv*0681 I k_debug,
8fbfd1f382 Oliv*0682 I subTime, myIter, myThid )
0683 DO l=1,darwin_nDiag
0684 diags(i, j, k, l) = diagsl(l)
0685 ENDDO
5e7acb36b1 daat*0686
0687 sumprey(i,j,k,:) = sumpreyl
0688
8fbfd1f382 Oliv*0689 #ifdef DARWIN_ALLOW_CONS
5e411acc9e Oliv*0690 DARWIN_Nfix(i,j,k,bi,bj) = DARWIN_Nfix(i,j,k,bi,bj)
0691 & + dTsub(k)*diagsl(iNfix)
0692 DARWIN_Ndenit(i,j,k,bi,bj) = DARWIN_Ndenit(i,j,k,bi,bj)
0693 & + dTsub(k)*diagsl(iDenitN)
0694 DARWIN_O2prod(i,j,k,bi,bj) = DARWIN_O2prod(i,j,k,bi,bj)
0695 & + dTsub(k)*diagsl(iProdO2)
0696 DARWIN_O2cons(i,j,k,bi,bj) = DARWIN_O2cons(i,j,k,bi,bj)
0697 & + dTsub(k)*diagsl(iConsO2)
0698 DARWIN_AlkSrc(i,j,k,bi,bj) = DARWIN_AlkSrc(i,j,k,bi,bj)
0699 & + dTsub(k)*diagsl(iSrcAlk)
8fbfd1f382 Oliv*0700 #endif
0701 #ifndef DARWIN_ALLOW_CHLQUOTA
0702 #ifdef ALLOW_RADTRANS
0703 DO l=1,nPhoto
0704 chlPrev(i, j, k, bi, bj, l) = chlout(l)
0705 ENDDO
0706 #else
0707 tmp = 0 _d 0
0708 DO l=1,nPhoto
0709 tmp = tmp + chlout(l)
0710 ENDDO
0711 chlPrev(i, j, k, bi, bj) = tmp
0712 #endif
0713 #endif
0714 DO iTr=1,nDarwin
0715 gPtr(i, j, k, iTr) = gtr(iTr)
0716 ENDDO
a8b28cdf62 Oliv*0717 endif
0718 enddo
8fbfd1f382 Oliv*0719 enddo
0720 enddo
5e7acb36b1 daat*0721
8fbfd1f382 Oliv*0722 CALL TIMER_STOP('DARWIN_PLANKTON [DARWIN_FORCING]',myThid)
0723
5e7acb36b1 daat*0724
0725
0726 CALL TIMER_START('DARWIN_DVM [DARWIN_FORCING]',myThid)
0727
0728 #ifdef DARWIN_ALLOW_DVM
0729
0730 max_loc = MAXLOC(sumprey, DIM=3)
0731 DO iTr=1,nplank
0732 DO k=1,Nr
0733 DO j=jMin,jMax
0734 DO i=iMin,iMax
0735 IF (k.LT.max_loc(i,j,iTr)) THEN
0736 SwDr(i,j,k,iTr) = -1 _d 0
0737 ELSEIF (k.GT.max_loc(i,j,iTr)) THEN
0738 SwDr(i,j,k,iTr) = 1 _d 0
0739 ELSE
0740 SwDr(i,j,k,iTr) = 0 _d 0
0741 ENDIF
0742 ENDDO
0743 ENDDO
0744 ENDDO
0745 ENDDO
0746
0747
0748
0749
0750
0751
0752
0753
0754
0755
0756
0757
0758
0759
0760 DO k=1,Nr
0761 DO j=jMin,jMax
0762 DO i=iMin,iMax
0763 sumPAR(i,j,k) = 0 _d 0
0764 ENDDO
0765 ENDDO
0766 ENDDO
0767 DO l=1,nlam
0768 DO k=1,Nr
0769 DO j=jMin,jMax
0770 DO i=iMin,iMax
0771 sumPAR(i,j,k) = sumPAR(i,j,k) + PAR(i,j,k,l)
0772 ENDDO
0773 ENDDO
0774 ENDDO
0775 ENDDO
0776
0777 DO iTr=1,nplank
0778 DO k=1,Nr
0779 DO j=jMin,jMax
0780 DO i=iMin,iMax
0781 IF (sumPAR(i,j,1) .GT. 0) THEN
0782
0783 IF (sumPAR(i,j,k) .GT. PARpref(iTr)) THEN
0784 bioswimDVMup(i,j,k,iTr) = 0 _d 0
0785 bioswimDVMdn(i,j,k,iTr) = bioswimDVM(iTr)
0786 ELSEIF (sumPAR(i,j,k). LT. PARpref(iTr)) THEN
0787 bioswimDVMup(i,j,k,iTr) = bioswimDVM(iTr)
0788 bioswimDVMdn(i,j,k,iTr) = 0 _d 0
0789 ELSEIF (sumPAR(i,j,k) .EQ. PARpref(iTr)) THEN
0790 bioswimDVMup(i,j,k,iTr) = 0 _d 0
0791 bioswimDVMdn(i,j,k,iTr) = 0 _d 0
0792 ENDIF
0793 ELSE
0794
0795 IF (SwDr(i,j,k,iTr) .GT. 0.0) THEN
0796 bioswimDVMup(i,j,k,iTr) = bioswimDVM(iTr)
0797 bioswimDVMdn(i,j,k,iTr) = 0 _d 0
0798 ELSEIF (SwDr(i,j,k,iTr) .EQ. 0.0) THEN
0799 bioswimDVMup(i,j,k,iTr) = 0 _d 0
0800 bioswimDVMdn(i,j,k,iTr) = 0 _d 0
0801 ELSE
0802 bioswimDVMup(i,j,k,iTr) = 0 _d 0
0803 bioswimDVMdn(i,j,k,iTr) = bioswimDVM(iTr)
0804 ENDIF
0805 ENDIF
0806 ENDDO
0807 ENDDO
0808 ENDDO
0809 ENDDO
0810 #else /* DARWIN_ALLOW_DVM */
0811 DO iTr=1,nplank
0812 DO k=1,Nr
0813 DO j=jMin,jMax
0814 DO i=iMin,iMax
0815 bioswimDVMup(i,j,k,iTr) = 0 _d 0
0816 bioswimDVMdn(i,j,k,iTr) = 0 _d 0
0817 ENDDO
0818 ENDDO
0819 ENDDO
0820 ENDDO
0821 #endif /* DARWIN_ALLOW_DVM */
0822
0823 CALL TIMER_STOP('DARWIN_DVM [DARWIN_FORCING]',myThid)
0824
5a97f77379 Oliv*0825
0826 #ifdef ALLOW_DIAGNOSTICS
0827 IF (useDIAGNOSTICS) THEN
0828 CALL TIMER_START('DIAGS_FILL [DARWIN_FORCING]',myThid)
0829 DO iTr=1,nDarwin
0830 diagname = 'gECO'//PTRACERS_ioLabel(iTr)
0831 CALL DIAGNOSTICS_FILL(gPtr(1-OLx,1-OLy,1,iTr), diagname,
5e411acc9e Oliv*0832 & 0,Nr,2,bi,bj,myThid)
5a97f77379 Oliv*0833 ENDDO
0834 CALL TIMER_STOP ('DIAGS_FILL [DARWIN_FORCING]',myThid)
0835 ENDIF
0836 #endif
0837
6aa5674e10 Oliv*0838
0839 #ifdef DARWIN_ALLOW_CARBON
8a10163480 Oliv*0840
0841 DO j=jMin,jMax
0842 DO i=iMin,iMax
0843
0844 k = kLowC(i,j,bi,bj)
0845 IF (k .GT. 0) THEN
0846 OmegaC0(i,j) = omegaC(i,j,k,bi,bj)
0847 ELSE
0848 OmegaC0(i,j) = 0. _d 0
0849 ENDIF
0850 ENDDO
0851 ENDDO
0852
0853 #ifdef DARWIN_ALLOW_RADIv1
6aa5674e10 Oliv*0854 DO j=jMin,jMax
0855 DO i=iMin,iMax
0856
0857 k = kLowC(i,j,bi,bj)
0858 IF (k .GT. 0) THEN
0859
0860
0861
0862 absT = ABS(Theta(i,j,k,bi,bj))
0863 TcorrO2(i,j) = (0.031558 _d 0+0.001428 _d 0*absT)/0.0335572 _d 0
0864 TcorrDIC(i,j) = (0.015179 _d 0+0.000795 _d 0*absT)/0.016292 _d 0
0865 TcorrALK(i,j) = (0.015179 _d 0+0.000795 _d 0*absT)/0.016292 _d 0
0866
0867
086a45f245 Oliv*0868 fluxPIC(i,j) = wPIC_sink*MAX(0 _d 0,Ptracer(i,j,k,bi,bj,iPIC))
0869 fluxPOC(i,j) = wC_sink*MAX(0 _d 0,Ptracer(i,j,k,bi,bj,iPOC))
6aa5674e10 Oliv*0870
0871 DICFsediment(i,j) = (sed_a1*omegaC0(i,j)*sed_c +
0872 & sed_b1*fluxPOC(i,j) +
0873 & sed_c1*fluxPIC(i,j) +
0874 & sed_d1*sed_c)*TcorrDIC(i,j)
0875
0876 ALKFsediment(i,j) = (sed_a2*omegaC0(i,j)*sed_c +
0877 & sed_b2*fluxPOC(i,j) +
0878 & sed_c2*fluxPIC(i,j) +
0879 & sed_d2*sed_c)*TcorrALK(i,j)
0880
0881 O2Fsediment(i,j) = (sed_a3*omegaC0(i,j)*sed_c +
0882 & sed_b3*fluxPOC(i,j) +
0883 & sed_c3*fluxPIC(i,j) +
0884 & sed_d3*sed_c)*TcorrO2(i,j)
0885
0886
0887 CALFsediment(i,j) = MIN(0 _d 0, -(sed_a5*omegaC0(i,j)*sed_c +
0888 & sed_b5*fluxPOC(i,j) + sed_c5*fluxPIC(i,j) + sed_d5*sed_c))
0889
0890 POCFsediment(i,j) = MIN(0 _d 0, -(sed_a4*omegaC0(i,j)*sed_c +
0891 & sed_b4*fluxPOC(i,j) + sed_c4*fluxPIC(i,j) + sed_d4*sed_c))
0892
2a97638e3d Oliv*0893 #ifdef DARWIN_ALLOW_CONS
0894
0895 radiFluxC(i,j,bi,bj) = radiFluxC(i,j,bi,bj) +
0896 & (DICFsediment(i,j) + POCFsediment(i,j) + CALFsediment(i,j))
0897 & *dTsub(k)*maskC(i,j,k,bi,bj)
0898 radiFluxA(i,j,bi,bj) = radiFluxA(i,j,bi,bj) +
0899 & ALKFsediment(i,j)*dTsub(k)*maskC(i,j,k,bi,bj)
0900 radiFluxO(i,j,bi,bj) = radiFluxO(i,j,bi,bj) +
0901 & O2Fsediment(i,j)*dTsub(k)*maskC(i,j,k,bi,bj)
0902 #endif
0903
6aa5674e10 Oliv*0904 ELSE
0905
0906 TcorrO2(i,j) = 0. _d 0
0907 TcorrDIC(i,j) = 0. _d 0
0908 TcorrALK(i,j) = 0. _d 0
0909 DICFsediment(i,j) = 0. _d 0
0910 ALKFsediment(i,j) = 0. _d 0
0911 O2Fsediment(i,j) = 0. _d 0
0912 CALFsediment(i,j) = 0. _d 0
0913 POCFsediment(i,j) = 0. _d 0
3a1d328575 Oliv*0914 fluxPIC(i,j) = 0. _d 0
0915 fluxPOC(i,j) = 0. _d 0
0916 OmegaC0(i,j) = 0. _d 0
2a97638e3d Oliv*0917 radiFluxC(i,j,bi,bj) = 0. _d 0
0918 radiFluxA(i,j,bi,bj) = 0. _d 0
0919 radiFluxO(i,j,bi,bj) = 0. _d 0
6aa5674e10 Oliv*0920
0921 ENDIF
0922 ENDDO
0923 ENDDO
c145d7be37 Oliv*0924
0925
0926
0927 CALL DARWIN_ADD_BOTFORC(
0928 U gPtr(1-OLx,1-OLy,1,iDIC),
0929 I DICFsediment, oneRL,
0930 I bi, bj, iMin, iMax, jMin, jMax,
0931 I myIter, myTime, myThid )
0932
0933 CALL DARWIN_ADD_BOTFORC(
0934 U gPtr(1-OLx,1-OLy,1,iALK),
0935 I ALKFsediment, oneRL,
0936 I bi, bj, iMin, iMax, jMin, jMax,
0937 I myIter, myTime, myThid )
0938
0939 CALL DARWIN_ADD_BOTFORC(
0940 U gPtr(1-OLx,1-OLy,1,iO2),
0941 I O2Fsediment, oneRL,
0942 I bi, bj, iMin, iMax, jMin, jMax,
0943 I myIter, myTime, myThid )
0944
0945 CALL DARWIN_ADD_BOTFORC(
0946 U gPtr(1-OLx,1-OLy,1,iPIC),
0947 I CALFsediment, oneRL,
0948 I bi, bj, iMin, iMax, jMin, jMax,
0949 I myIter, myTime, myThid )
0950
0951 CALL DARWIN_ADD_BOTFORC(
0952 U gPtr(1-OLx,1-OLy,1,iPOC),
0953 I POCFsediment, oneRL,
0954 I bi, bj, iMin, iMax, jMin, jMax,
0955 I myIter, myTime, myThid )
0956
6aa5674e10 Oliv*0957 #endif
8a10163480 Oliv*0958
0959 #ifdef DARWIN_ALLOW_RADIv2
0960 DO j=jMin,jMax
0961 DO i=iMin,iMax
0962
0963 k = kLowC(i,j,bi,bj)
0964 IF (k .GT. 0) THEN
0965
0966
803871244c Oliv*0967 fluxPIC(i,j) = wPIC_sink*MAX(0 _d 0,Ptracer(i,j,k,bi,bj,iPIC))
0968 fluxPOC(i,j) = wC_sink*MAX(0 _d 0,Ptracer(i,j,k,bi,bj,iPOC))
0969 fluxPOP(i,j) = wP_sink*MAX(0 _d 0,Ptracer(i,j,k,bi,bj,iPOP))
0970 fluxPON(i,j) = wN_sink*MAX(0 _d 0,Ptracer(i,j,k,bi,bj,iPON))
8a10163480 Oliv*0971 absT = ABS(Theta(i,j,k,bi,bj))
0972
803871244c Oliv*0973
0974 flxplnkC(i,j) = 0 _d 0
0975 flxplnkP(i,j) = 0 _d 0
0976 flxplnkN(i,j) = 0 _d 0
8a10163480 Oliv*0977 DO l = 1, nplank
803871244c Oliv*0978 flx = biosink(l)*MAX(0 _d 0, Ptracer(i,j,k,bi,bj,ic+l-1))
0979 flxplnkC(i,j) = flxplnkC(i,j) + flx
0980 flxplnkP(i,j) = flxplnkP(i,j) + flx*R_PC(l)
0981 flxplnkN(i,j) = flxplnkN(i,j) + flx*R_NC(l)
0982 ENDDO
8a10163480 Oliv*0983
0984 sed_a1 = sed_globala1
0985 sed_b1 = sed_globalb1
0986 sed_c1 = sed_globalc1
0987 sed_d1 = sed_globald1
0988 sed_e1 = sed_globale1
0989 sed_a2 = sed_globala2
0990 sed_b2 = sed_globalb2
0991 sed_c2 = sed_globalc2
0992 sed_d2 = sed_globald2
0993 sed_e2 = sed_globale2
0994 sed_a3 = sed_globala3
0995 sed_b3 = sed_globalb3
0996 sed_c3 = sed_globalc3
0997 sed_d3 = sed_globald3
0998 sed_e3 = sed_globale3
0999 sed_a4 = sed_globala4
1000 sed_b4 = sed_globalb4
1001 sed_c4 = sed_globalc4
1002 sed_d4 = sed_globald4
1003 sed_e4 = sed_globale4
5938ff335d Oliv*1004 sed_f4 = sed_globalf4
1005 sed_g4 = sed_globalg4
8a10163480 Oliv*1006 sed_a5 = sed_globala5
1007 sed_b5 = sed_globalb5
1008 sed_c5 = sed_globalc5
1009 sed_d5 = sed_globald5
1010 sed_e5 = sed_globale5
1011 sed_a6 = sed_globala6
1012 sed_b6 = sed_globalb6
1013 sed_c6 = sed_globalc6
1014 sed_d6 = sed_globald6
1015 sed_e6 = sed_globale6
1016
1017 DICFsediment(i,j) = sed_a1 +
1018 & sed_b1*absT +
1019 & sed_c1*omegaC0(i,j) +
1020 & sed_d1*(fluxPOC(i,j)+flxplnkC(i,j)) +
1021 & sed_e1*fluxPIC(i,j)
1022
1023 ALKFsediment(i,j) = sed_a2 +
1024 & sed_b2*absT +
1025 & sed_c2*omegaC0(i,j) +
1026 & sed_d2*(fluxPOC(i,j)+flxplnkC(i,j)) +
1027 & sed_e2*fluxPIC(i,j)
1028
1029 O2Fsediment(i,j) = sed_a3 +
1030 & sed_b3*absT +
1031 & sed_c3*omegaC0(i,j) +
1032 & sed_d3*(fluxPOC(i,j)+flxplnkC(i,j)) +
1033 & sed_e3*fluxPIC(i,j)
1034
1035 NO3Fsediment(i,j) = sed_a4 +
5938ff335d Oliv*1036 & sed_b4*(fluxPON(i,j)+flxplnkN(i,j)) +
1037 & sed_c4*DICFsediment(i,j) +
1038 & sed_d4*O2Fsediment(i,j) +
1039 & sed_e4*(absT*DICFsediment(i,j)) +
1040 & sed_f4*(absT*O2Fsediment(i,j)) +
1041 & sed_g4*(DICFsediment(i,j)*O2Fsediment(i,j))
8a10163480 Oliv*1042
1043 PO4Fsediment(i,j) = sed_a5 +
1044 & sed_b5*absT +
1045 & sed_c5*omegaC0(i,j) +
1046 & sed_d5*(fluxPOP(i,j)+flxplnkP(i,j)) +
1047 & sed_e5*fluxPIC(i,j)
1048
1049 NH4Fsediment(i,j) = sed_a6 +
1050 & sed_b6*absT +
1051 & sed_c6*omegaC0(i,j) +
1052 & sed_d6*(fluxPON(i,j)+flxplnkN(i,j)) +
1053 & sed_e6*fluxPIC(i,j)
1054
1055 #ifdef DARWIN_ALLOW_CONS
1056
1057 radiFluxC(i,j,bi,bj) = radiFluxC(i,j,bi,bj) +
1058 & DICFsediment(i,j)*dTsub(k)*maskC(i,j,k,bi,bj)
1059 radiFluxA(i,j,bi,bj) = radiFluxA(i,j,bi,bj) +
1060 & ALKFsediment(i,j)*dTsub(k)*maskC(i,j,k,bi,bj)
1061 radiFluxO(i,j,bi,bj) = radiFluxO(i,j,bi,bj) +
1062 & O2Fsediment(i,j)*dTsub(k)*maskC(i,j,k,bi,bj)
1063 radiFluxP(i,j,bi,bj) = radiFluxP(i,j,bi,bj) +
1064 & PO4Fsediment(i,j)*dTsub(k)*maskC(i,j,k,bi,bj)
1065 radiFluxN(i,j,bi,bj) = radiFluxN(i,j,bi,bj) +
1066 & (NO3Fsediment(i,j) + NH4Fsediment(i,j)) *
1067 & dTsub(k)*maskC(i,j,k,bi,bj)
1068 #endif
1069 ELSE
1070
1071 DICFsediment(i,j) = 0. _d 0
1072 ALKFsediment(i,j) = 0. _d 0
1073 O2Fsediment(i,j) = 0. _d 0
1074 NO3Fsediment(i,j) = 0. _d 0
1075 PO4Fsediment(i,j) = 0. _d 0
1076 NH4Fsediment(i,j) = 0. _d 0
1077 fluxPIC(i,j) = 0. _d 0
1078 fluxPOC(i,j) = 0. _d 0
1079 fluxPOP(i,j) = 0. _d 0
1080 fluxPON(i,j) = 0. _d 0
1081 flxplnkC(i,j) = 0. _d 0
1082 flxplnkN(i,j) = 0. _d 0
1083 flxplnkP(i,j) = 0. _d 0
1084
1085 ENDIF
1086 ENDDO
1087 ENDDO
1088
1089
1090
1091 CALL DARWIN_ADD_BOTFORC(
1092 U gPtr(1-OLx,1-OLy,1,iDIC),
1093 I DICFsediment, oneRL,
1094 I bi, bj, iMin, iMax, jMin, jMax,
1095 I myIter, myTime, myThid )
1096
1097 CALL DARWIN_ADD_BOTFORC(
1098 U gPtr(1-OLx,1-OLy,1,iALK),
1099 I ALKFsediment, oneRL,
1100 I bi, bj, iMin, iMax, jMin, jMax,
1101 I myIter, myTime, myThid )
1102
1103 CALL DARWIN_ADD_BOTFORC(
1104 U gPtr(1-OLx,1-OLy,1,iO2),
1105 I O2Fsediment, oneRL,
1106 I bi, bj, iMin, iMax, jMin, jMax,
1107 I myIter, myTime, myThid )
1108
1109 CALL DARWIN_ADD_BOTFORC(
1110 U gPtr(1-OLx,1-OLy,1,iNO3),
1111 I NO3Fsediment, oneRL,
1112 I bi, bj, iMin, iMax, jMin, jMax,
1113 I myIter, myTime, myThid )
1114
1115 CALL DARWIN_ADD_BOTFORC(
1116 U gPtr(1-OLx,1-OLy,1,iPO4),
1117 I PO4Fsediment, oneRL,
1118 I bi, bj, iMin, iMax, jMin, jMax,
1119 I myIter, myTime, myThid )
1120
1121 CALL DARWIN_ADD_BOTFORC(
1122 U gPtr(1-OLx,1-OLy,1,iNH4),
1123 I NH4Fsediment, oneRL,
1124 I bi, bj, iMin, iMax, jMin, jMax,
1125 I myIter, myTime, myThid )
1126 #endif
6aa5674e10 Oliv*1127 #endif
1128
8fbfd1f382 Oliv*1129
1130 CALL TIMER_START('DARWIN_SINKING [DARWIN_FORCING]',myThid)
5e7acb36b1 daat*1131 CALL DARWIN_SINKING( Ptracer,bioswimDVMup,bioswimDVMdn,
1132 & gPtr,dTsub,bi,bj,
1133 & iMin,iMax,jMin,jMax,subTime,myIter,myThid )
8fbfd1f382 Oliv*1134 CALL TIMER_STOP ('DARWIN_SINKING [DARWIN_FORCING]',myThid)
1135
1136
1137 CALL TIMER_START('DARWIN_STEP [DARWIN_FORCING]',myThid)
1138 DO iTr=1,nDarwin
1139 DO k=1,Nr
1140 DO j=jMin,jMax
1141 DO i=iMin,iMax
1142 pTracer(i,j,k,bi,bj,iTr)=pTracer(i,j,k,bi,bj,iTr)
1143 & +dTsub(k)*gPtr(i,j,k,iTr)*maskInC(i,j,bi,bj)
1144 ENDDO
1145 ENDDO
1146 ENDDO
1147 ENDDO
1148 CALL TIMER_STOP ('DARWIN_STEP [DARWIN_FORCING]',myThid)
1149
1150
1151
f48032ad03 Oliv*1152 #ifdef DARWIN_MINFE
8fbfd1f382 Oliv*1153 CALL TIMER_START('DARWIN_FE_CHEM [DARWIN_FORCING]',myThid)
1154 CALL DARWIN_FE_CHEM(
1155 U pTracer(1-OLx,1-OLy,1,bi,bj,iFeT),
1156 O freeFe(1-OLx,1-OLy,1),
63ffa46034 Oliv*1157 U DARWIN_minFeLoss(1,1,1,bi,bj),
8fbfd1f382 Oliv*1158 I bi, bj, iMin, iMax, jMin, jMax, myThid)
1159 CALL TIMER_STOP ('DARWIN_FE_CHEM [DARWIN_FORCING]',myThid)
f48032ad03 Oliv*1160 #endif
8fbfd1f382 Oliv*1161
1162
1163 #ifdef ALLOW_DIAGNOSTICS
1164 IF (useDIAGNOSTICS) THEN
1165 CALL TIMER_START('DIAGS_FILL [DARWIN_FORCING]',myThid)
1166 DO l = 1, nlam
1167 WRITE(diagname, '(A,I3.3)') 'PAR', l
1168 CALL DIAGNOSTICS_FILL(PAR(1-OLx,1-OLy,1,l),diagname,0,Nr,2,
5e411acc9e Oliv*1169 & bi,bj,myThid)
8fbfd1f382 Oliv*1170 ENDDO
1171 IF (DIAGNOSTICS_IS_ON('PAR ', myThid)) THEN
1172 DO l=2,nlam
1173 DO k=1,Nr
1174 DO j=1,sNy
1175 DO i=1,sNx
1176 PAR(i,j,k,1) = PAR(i,j,k,1) + PAR(i,j,k,l)
1177 ENDDO
1178 ENDDO
1179 ENDDO
1180 ENDDO
1181 WRITE(diagname, '(A)') 'PAR'
1182 CALL DIAGNOSTICS_FILL(PAR,diagname,0,Nr,2,bi,bj,myThid)
1183 ENDIF
865e47606a Oliv*1184 #ifndef DARWIN_ALLOW_CHLQUOTA
1185 IF (DIAGNOSTICS_IS_ON('Chl ', myThid)) THEN
1186 #ifdef ALLOW_RADTRANS
1187 DO k=1,Nr
1188 DO j=1,sNy
1189 DO i=1,sNx
1190 tmp3d(i,j,k) = 0 _d 0
1191 ENDDO
1192 ENDDO
1193 ENDDO
4f40d93b36 Oliv*1194 DO l=1,nPhoto
865e47606a Oliv*1195 DO k=1,Nr
1196 DO j=1,sNy
1197 DO i=1,sNx
1198 tmp3d(i,j,k) = tmp3d(i,j,k) + chlPrev(i,j,k,bi,bj,l)
1199 ENDDO
1200 ENDDO
1201 ENDDO
1202 ENDDO
c2ba01bd90 Oliv*1203 CALL DIAGNOSTICS_FILL(tmp3d,'Chl ',0,Nr,2,bi,bj,myThid)
865e47606a Oliv*1204 #else
1205 CALL DIAGNOSTICS_FILL(chlPrev,'Chl ',0,Nr,1,bi,bj,myThid)
1206 #endif
1207 ENDIF
1208 #endif
8fbfd1f382 Oliv*1209 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iPP), 'PP ',
1210 & 0,Nr,2,bi,bj,myThid)
1211 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iNfix), 'Nfix ',
1212 & 0,Nr,2,bi,bj,myThid)
1213 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iDenit),'Denit ',
1214 & 0,Nr,2,bi,bj,myThid)
3179881a2b Oliv*1215 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iDenitN),'DenitN ',
1216 & 0,Nr,2,bi,bj,myThid)
c7b6c66d45 Oliv*1217 #ifdef DARWIN_ALLOW_CSTORE
1218 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iEX), 'EXU ',
1219 & 0,Nr,2,bi,bj,myThid)
1220 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iGW), 'BioSyn ',
1221 & 0,Nr,2,bi,bj,myThid)
1222 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iDN), 'DmdN ',
1223 & 0,Nr,2,bi,bj,myThid)
1224 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iDP), 'DmdP ',
1225 & 0,Nr,2,bi,bj,myThid)
1226 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iDFe), 'DmdFe ',
1227 & 0,Nr,2,bi,bj,myThid)
1228 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iDSi), 'DmdSi ',
1229 & 0,Nr,2,bi,bj,myThid)
1230 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iDmin), 'Dmdmin ',
1231 & 0,Nr,2,bi,bj,myThid)
1232 #endif
8fbfd1f382 Oliv*1233
1234
1235 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iConsDIN),'C_DIN ',
b61dca872c Oliv*1236 & 0,Nr,2,bi,bj,myThid)
1237 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iConsNO3),'C_NO3 ',
1238 & 0,Nr,2,bi,bj,myThid)
1239 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iConsNO2),'C_NO2 ',
1240 & 0,Nr,2,bi,bj,myThid)
1241 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iConsNH4),'C_NH4 ',
8fbfd1f382 Oliv*1242 & 0,Nr,2,bi,bj,myThid)
1243 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iConsPO4),'C_PO4 ',
1244 & 0,Nr,2,bi,bj,myThid)
b61dca872c Oliv*1245 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iConsSi), 'C_Si ',
1246 & 0,Nr,2,bi,bj,myThid)
1247 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iConsFe), 'C_Fe ',
1248 & 0,Nr,2,bi,bj,myThid)
1249 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iConsDIC),'C_DIC ',
1250 & 0,Nr,2,bi,bj,myThid)
1251 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iConsDIC_PIC),
1252 & 'C_DICPIC',0,Nr,2,bi,bj,myThid)
1253 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iRespirDIC),'respDIC ',
8fbfd1f382 Oliv*1254 & 0,Nr,2,bi,bj,myThid)
b61dca872c Oliv*1255 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iReminDIC_DOC),
1256 & 'rDIC_DOC',0,Nr,2,bi,bj,myThid)
1257 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iReminDIC_POC),
1258 & 'rDIC_POC',0,Nr,2,bi,bj,myThid)
1259 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iDisscDIC_PIC),
1260 & 'dDIC_PIC',0,Nr,2,bi,bj,myThid)
b6fafcd98a Oliv*1261 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,ifIphavg),'fIph_avg ',
1262 & 0,Nr,2,bi,bj,myThid)
1263 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,ifTphavg),'fTph_avg ',
1264 & 0,Nr,2,bi,bj,myThid)
1265 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,ifnutavg),'fnut_avg ',
1266 & 0,Nr,2,bi,bj,myThid)
b61dca872c Oliv*1267 #ifdef DARWIN_ALLOW_CARBON
1268 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iConsALK),'C_ALK ',
1269 & 0,Nr,2,bi,bj,myThid)
1270 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iConsO2), 'C_O2 ',
1271 & 0,Nr,2,bi,bj,myThid)
1272 #endif
8fbfd1f382 Oliv*1273
1274
1275
1276
1277 DO k=1,Nr
1278 DO j=1,sNy
1279 DO i=1,sNx
1280 diags(i,j,k,iConsDIN) = diags(i,j,k,iConsDIN)
1281 & + gPtr(i,j,k,iNH4) + gPtr(i,j,k,iNO2) + gPtr(i,j,k,iNO3)
b61dca872c Oliv*1282 diags(i,j,k,iConsNO3) = diags(i,j,k,iConsNO3)
1283 & + gPtr(i,j,k,iNO3)
1284 diags(i,j,k,iConsNO2) = diags(i,j,k,iConsNO2)
1285 & + gPtr(i,j,k,iNO2)
1286 diags(i,j,k,iConsNH4) = diags(i,j,k,iConsNH4)
1287 & + gPtr(i,j,k,iNH4)
8fbfd1f382 Oliv*1288 diags(i,j,k,iConsPO4) = diags(i,j,k,iConsPO4)
1289 & + gPtr(i,j,k,iPO4)
1290 diags(i,j,k,iConsSi) = diags(i,j,k,iConsSi)
1291 & + gPtr(i,j,k,iSiO2)
1292 diags(i,j,k,iConsFe) = diags(i,j,k,iConsFe)
1293 & + gPtr(i,j,k,iFeT)
b61dca872c Oliv*1294 #ifdef DARWIN_ALLOW_CARBON
1295 diags(i,j,k,iConsALK) = diags(i,j,k,iConsALK)
1296 & + gPtr(i,j,k,iALK)
1297 diags(i,j,k,iConsO2) = diags(i,j,k,iConsO2)
1298 & + gPtr(i,j,k,iO2)
1299 #endif
8fbfd1f382 Oliv*1300 ENDDO
1301 ENDDO
1302 ENDDO
1303 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iConsDIN),'S_DIN ',
b61dca872c Oliv*1304 & 0,Nr,2,bi,bj,myThid)
1305 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iConsNO3),'S_NO3 ',
1306 & 0,Nr,2,bi,bj,myThid)
1307 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iConsNO2),'S_NO2 ',
1308 & 0,Nr,2,bi,bj,myThid)
1309 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iConsNH4),'S_NH4 ',
8fbfd1f382 Oliv*1310 & 0,Nr,2,bi,bj,myThid)
1311 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iConsPO4),'S_PO4 ',
1312 & 0,Nr,2,bi,bj,myThid)
b61dca872c Oliv*1313 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iConsSi), 'S_Si ',
1314 & 0,Nr,2,bi,bj,myThid)
1315 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iConsFe), 'S_Fe ',
8fbfd1f382 Oliv*1316 & 0,Nr,2,bi,bj,myThid)
b61dca872c Oliv*1317 #ifdef DARWIN_ALLOW_CARBON
1318 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iConsALK),'S_ALK ',
1319 & 0,Nr,2,bi,bj,myThid)
1320 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iConsO2), 'S_O2 ',
8fbfd1f382 Oliv*1321 & 0,Nr,2,bi,bj,myThid)
b61dca872c Oliv*1322 #endif
8fbfd1f382 Oliv*1323
1324 DO iTr=1,nDarwin
1325 diagname = 'gDAR'//PTRACERS_ioLabel(iTr)
1326 CALL DIAGNOSTICS_FILL(gPtr(1-OLx,1-OLy,1,iTr), diagname,
1327 & 0,Nr,2,bi,bj,myThid)
1328 ENDDO
b61dca872c Oliv*1329
ee4178dfbe Oliv*1330 #ifdef DARWIN_DIAG_PERTYPE
1331 DO iTr=1,nplank
8fbfd1f382 Oliv*1332 WRITE(diagname, '(A,I4.4)') 'PP', iTr
1333 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iPPplank+iTr-1),
d5f8f1c735 Oliv*1334 & diagname,0,Nr,2,bi,bj,myThid)
1335 WRITE(diagname, '(A,I4.4)') 'PC', iTr
1336 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iPCplank+iTr-1),
a93256cee4 Oliv*1337 & diagname,0,Nr,2,bi,bj,myThid)
1338 WRITE(diagname, '(A,I4.4)') 'HP', iTr
1339 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iHPplank+iTr-1),
1340 & diagname,0,Nr,2,bi,bj,myThid)
1341 WRITE(diagname, '(A,I4.4)') 'HC', iTr
1342 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iHCplank+iTr-1),
8fbfd1f382 Oliv*1343 & diagname,0,Nr,2,bi,bj,myThid)
1344 WRITE(diagname, '(A,I4.4)') 'GR', iTr
1345 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iGRplank+iTr-1),
73aabcca42 Oliv*1346 & diagname,0,Nr,2,bi,bj,myThid)
1347 WRITE(diagname, '(A,I4.4)') 'GrGn', iTr
1348 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iGrGn+iTr-1),
a93256cee4 Oliv*1349 & diagname,0,Nr,2,bi,bj,myThid)
1350 WRITE(diagname, '(A,I4.4)') 'GrGC', iTr
1351 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iGrGC+iTr-1),
fd20fa810c Oliv*1352 & diagname,0,Nr,2,bi,bj,myThid)
1353 WRITE(diagname, '(A,I4.4)') 'Mort', iTr
1354 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iMort+iTr-1),
1355 & diagname,0,Nr,2,bi,bj,myThid)
1356 WRITE(diagname, '(A,I4.4)') 'Resp', iTr
1357 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iResp+iTr-1),
1358 & diagname,0,Nr,2,bi,bj,myThid)
1359 WRITE(diagname, '(A,I4.4)') 'fnut', iTr
1360 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,ifnut+iTr-1),
1361 & diagname,0,Nr,2,bi,bj,myThid)
1362 WRITE(diagname, '(A,I4.4)') 'fIph', iTr
1363 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,ifIph+iTr-1),
1364 & diagname,0,Nr,2,bi,bj,myThid)
1365 WRITE(diagname, '(A,I4.4)') 'fTph', iTr
1366 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,ifTph+iTr-1),
1367 & diagname,0,Nr,2,bi,bj,myThid)
1368 WRITE(diagname, '(A,I4.4)') 'limN', iTr
1369 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,ilimN+iTr-1),
1370 & diagname,0,Nr,2,bi,bj,myThid)
1371 WRITE(diagname, '(A,I4.4)') 'limP', iTr
1372 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,ilimP+iTr-1),
1373 & diagname,0,Nr,2,bi,bj,myThid)
1374 WRITE(diagname, '(A,I4.4)') 'limF', iTr
1375 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,ilimF+iTr-1),
1376 & diagname,0,Nr,2,bi,bj,myThid)
1377 WRITE(diagname, '(A,I4.4)') 'limS', iTr
1378 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,ilimS+iTr-1),
8fbfd1f382 Oliv*1379 & diagname,0,Nr,2,bi,bj,myThid)
1380 ENDDO
a092808e6b shlo*1381 # ifdef DARWIN_MACROMOLECULAR_GROWTH
1382 DO iTr=1,nPhoto
1383 WRITE(diagname, '(A,I4.4)') 'PChl', iTr
1384 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iPChl+iTr-1),diagname,
1385 & 0,Nr,2,bi,bj,myThid)
1386 WRITE(diagname, '(A,I4.4)') 'VN', iTr
1387 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iVN+iTr-1),diagname,
1388 & 0,Nr,2,bi,bj,myThid)
1389 WRITE(diagname, '(A,I4.4)') 'VP', iTr
1390 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iVP+iTr-1),diagname,
1391 & 0,Nr,2,bi,bj,myThid)
1392 WRITE(diagname, '(A,I4.4)') 'MODE', iTr
1393 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iMODE+iTr-1),diagname,
1394 & 0,Nr,2,bi,bj,myThid)
1395 WRITE(diagname, '(A,I4.4)') 'Fe_C', iTr
1396 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iFe_C+iTr-1),diagname,
1397 & 0,Nr,2,bi,bj,myThid)
1398 WRITE(diagname, '(A,I4.4)') 'exQc', iTr
1399 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iexQc+iTr-1),diagname,
1400 & 0,Nr,2,bi,bj,myThid)
1401 WRITE(diagname, '(A,I4.4)') 'CChl', iTr
1402 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iCChl+iTr-1),diagname,
1403 & 0,Nr,2,bi,bj,myThid)
1404 WRITE(diagname, '(A,I4.4)') 'NChl', iTr
1405 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iNChl+iTr-1),diagname,
1406 & 0,Nr,2,bi,bj,myThid)
1407 WRITE(diagname, '(A,I4.4)') 'NPho', iTr
1408 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iNPho+iTr-1),diagname,
1409 & 0,Nr,2,bi,bj,myThid)
1410 WRITE(diagname, '(A,I4.4)') 'NSyn', iTr
1411 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iNSyn+iTr-1),diagname,
1412 & 0,Nr,2,bi,bj,myThid)
1413 WRITE(diagname, '(A,I4.4)') 'NPrn', iTr
1414 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iNPrn+iTr-1),diagname,
1415 & 0,Nr,2,bi,bj,myThid)
1416 WRITE(diagname, '(A,I4.4)') 'NRNA', iTr
1417 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iNRNA+iTr-1),diagname,
1418 & 0,Nr,2,bi,bj,myThid)
1419 WRITE(diagname, '(A,I4.4)') 'NDNA', iTr
1420 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iNDNA+iTr-1),diagname,
1421 & 0,Nr,2,bi,bj,myThid)
1422 WRITE(diagname, '(A,I4.4)') 'NSTO', iTr
1423 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iNSTO+iTr-1),diagname,
1424 & 0,Nr,2,bi,bj,myThid)
1425 WRITE(diagname, '(A,I4.4)') 'NEXC', iTr
1426 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iNEXC+iTr-1),diagname,
1427 & 0,Nr,2,bi,bj,myThid)
1428 WRITE(diagname, '(A,I4.4)') 'PRNA', iTr
1429 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iPRNA+iTr-1),diagname,
1430 & 0,Nr,2,bi,bj,myThid)
1431 WRITE(diagname, '(A,I4.4)') 'PDNA', iTr
1432 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iPDNA+iTr-1),diagname,
1433 & 0,Nr,2,bi,bj,myThid)
1434 WRITE(diagname, '(A,I4.4)') 'PTHY', iTr
1435 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iPTHY+iTr-1),diagname,
1436 & 0,Nr,2,bi,bj,myThid)
1437 WRITE(diagname, '(A,I4.4)') 'PCON', iTr
1438 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iPCON+iTr-1),diagname,
1439 & 0,Nr,2,bi,bj,myThid)
1440 WRITE(diagname, '(A,I4.4)') 'PSTO', iTr
1441 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iPSTO+iTr-1),diagname,
1442 & 0,Nr,2,bi,bj,myThid)
1443 WRITE(diagname, '(A,I4.4)') 'PEXC', iTr
1444 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iPEXC+iTr-1),diagname,
1445 & 0,Nr,2,bi,bj,myThid)
1446 WRITE(diagname, '(A,I4.4)') 'FPHO', iTr
1447 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iFPHO+iTr-1),diagname,
1448 & 0,Nr,2,bi,bj,myThid)
1449 WRITE(diagname, '(A,I4.4)') 'FSTO', iTr
1450 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iFSTO+iTr-1),diagname,
1451 & 0,Nr,2,bi,bj,myThid)
1452 WRITE(diagname, '(A,I4.4)') 'FEXC', iTr
1453 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iFEXC+iTr-1),diagname,
1454 & 0,Nr,2,bi,bj,myThid)
1455 WRITE(diagname, '(A,I4.4)') 'Y_RQ', iTr
1456 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iY_RQ+iTr-1),diagname,
1457 & 0,Nr,2,bi,bj,myThid)
1458 WRITE(diagname, '(A,I4.4)') 'limC', iTr
1459 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,ilimC+iTr-1),diagname,
1460 & 0,Nr,2,bi,bj,myThid)
1461 WRITE(diagname, '(A,I4.4)') 'limL', iTr
1462 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,ilimL+iTr-1),diagname,
1463 & 0,Nr,2,bi,bj,myThid)
1464 ENDDO
1465 # endif
c7b6c66d45 Oliv*1466 #endif
1467 #ifdef DARWIN_ALLOW_CSTORE
1468 #ifdef DARWIN_ALLOW_CSTORE_DIAGS
1469 DO iTr=1,nPhoto
1470 WRITE(diagname, '(A,I4.4)') 'EXU', iTr
1471 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iEXplank+iTr-1),
1472 & diagname,0,Nr,2,bi,bj,myThid)
1473 WRITE(diagname, '(A,I4.4)') 'BS', iTr
1474 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iGWplank+iTr-1),
1475 & diagname,0,Nr,2,bi,bj,myThid)
1476 WRITE(diagname, '(A,I4.4)') 'DN', iTr
1477 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iDNplank+iTr-1),
1478 & diagname,0,Nr,2,bi,bj,myThid)
1479 WRITE(diagname, '(A,I4.4)') 'DP', iTr
1480 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iDPplank+iTr-1),
1481 & diagname,0,Nr,2,bi,bj,myThid)
1482 WRITE(diagname, '(A,I4.4)') 'DFe', iTr
1483 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iDFplank+iTr-1),
1484 & diagname,0,Nr,2,bi,bj,myThid)
1485 WRITE(diagname, '(A,I4.4)') 'DSi', iTr
1486 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iDSplank+iTr-1),
1487 & diagname,0,Nr,2,bi,bj,myThid)
1488 WRITE(diagname, '(A,I4.4)') 'Dmin', iTr
1489 CALL DIAGNOSTICS_FILL(diags(1-OLx,1-OLy,1,iDminplank+iTr-1),
1490 & diagname,0,Nr,2,bi,bj,myThid)
1491 ENDDO
1492 #endif
ee4178dfbe Oliv*1493 #endif
82fd1e0266 Oliv*1494 CALL DIAGNOSTICS_FILL(scavRate,'scavRate',0,Nr,2,bi,bj,myThid)
fd32b5ab01 Oliv*1495 CALL DIAGNOSTICS_FILL(scavLoss,'scvLosFe',0,Nr,2,bi,bj,myThid)
342416534c Oliv*1496 CALL DIAGNOSTICS_FILL(sedFe, 'sedFe ',0,Nr,2,bi,bj,myThid)
c8be5f4655 Oliv*1497 CALL DIAGNOSTICS_FILL(sedFlxFe,'sedFlxFe',0,1,2,bi,bj,myThid)
3997029bbb Oliv*1498 IF (DIAGNOSTICS_IS_ON('sfcSolFe', myThid)) THEN
1499 DO j=jMin,jMax
1500 DO i=iMin,iMax
1501 IF (hFacC(i,j,1,bi,bj) .EQ. 0.) THEN
1502 surfFe(i,j) = 0 _d 0
1503 ELSE
1504 surfFe(i,j) = alpfe * inputFe(i,j,bi,bj)
1505 ENDIF
1506 ENDDO
1507 ENDDO
1508 CALL DIAGNOSTICS_FILL(surfFe,'sfcSolFe',0,1,2,bi,bj,myThid)
1509 ENDIF
b61dca872c Oliv*1510
8fbfd1f382 Oliv*1511 #ifdef DARWIN_ALLOW_CARBON
1512 CALL DIAGNOSTICS_FILL(gDIC, 'gDICsurf',0,1,2,bi,bj,myThid)
1513 CALL DIAGNOSTICS_FILL(gALK, 'gALKsurf',0,1,2,bi,bj,myThid)
1514 CALL DIAGNOSTICS_FILL(gO2, 'gO2surf ',0,1,2,bi,bj,myThid)
8a10163480 Oliv*1515 CALL DIAGNOSTICS_FILL(OmegaC0, 'OmegCbot',0,1,2,bi,bj,myThid)
1516 #ifdef DARWIN_ALLOW_RADIv1
6aa5674e10 Oliv*1517 CALL DIAGNOSTICS_FILL(DICFsediment,'DICFsed ',0,1,2,bi,bj,myThid)
1518 CALL DIAGNOSTICS_FILL(ALKFsediment,'ALKFsed ',0,1,2,bi,bj,myThid)
1519 CALL DIAGNOSTICS_FILL(O2Fsediment, 'O2Fsed ',0,1,2,bi,bj,myThid)
1520 CALL DIAGNOSTICS_FILL(POCFsediment,'POCFbur ',0,1,2,bi,bj,myThid)
1521 CALL DIAGNOSTICS_FILL(CALFsediment,'CALFbur ',0,1,2,bi,bj,myThid)
1522 CALL DIAGNOSTICS_FILL(fluxPIC, 'sedFlPIC',0,1,2,bi,bj,myThid)
1523 CALL DIAGNOSTICS_FILL(fluxPOC, 'sedFlPOC',0,1,2,bi,bj,myThid)
1524 CALL DIAGNOSTICS_FILL(TcorrO2, 'TcorrO2 ',0,1,2,bi,bj,myThid)
1525 CALL DIAGNOSTICS_FILL(TcorrDIC, 'TcorrDIC',0,1,2,bi,bj,myThid)
1526 CALL DIAGNOSTICS_FILL(TcorrALK, 'TcorrALK',0,1,2,bi,bj,myThid)
1527 CALL DIAGNOSTICS_FILL(OmegaC0, 'OmegCbot',0,1,2,bi,bj,myThid)
1528 #endif
8a10163480 Oliv*1529 #ifdef DARWIN_ALLOW_RADIv2
1530 CALL DIAGNOSTICS_FILL(DICFsediment,'DICFsed ',0,1,2,bi,bj,myThid)
1531 CALL DIAGNOSTICS_FILL(ALKFsediment,'ALKFsed ',0,1,2,bi,bj,myThid)
1532 CALL DIAGNOSTICS_FILL(O2Fsediment, 'O2Fsed ',0,1,2,bi,bj,myThid)
1533 CALL DIAGNOSTICS_FILL(NO3Fsediment,'NO3Fsed ',0,1,2,bi,bj,myThid)
1534 CALL DIAGNOSTICS_FILL(PO4Fsediment,'PO4Fsed ',0,1,2,bi,bj,myThid)
1535 CALL DIAGNOSTICS_FILL(NH4Fsediment,'NH4Fsed ',0,1,2,bi,bj,myThid)
1536 CALL DIAGNOSTICS_FILL(fluxPIC, 'sedFlPIC',0,1,2,bi,bj,myThid)
1537 CALL DIAGNOSTICS_FILL(fluxPOC, 'sedFlPOC',0,1,2,bi,bj,myThid)
1538 CALL DIAGNOSTICS_FILL(fluxPOP, 'sedFlPOP',0,1,2,bi,bj,myThid)
1539 CALL DIAGNOSTICS_FILL(fluxPON, 'sedFlPON',0,1,2,bi,bj,myThid)
1540 CALL DIAGNOSTICS_FILL(flxplnkC, 'sedFplkC',0,1,2,bi,bj,myThid)
1541 CALL DIAGNOSTICS_FILL(flxplnkP, 'sedFplkP',0,1,2,bi,bj,myThid)
1542 CALL DIAGNOSTICS_FILL(flxplnkN, 'sedFplkN',0,1,2,bi,bj,myThid)
1543 #endif
8fbfd1f382 Oliv*1544 #endif
714cf988dd Oliv*1545
1546 #ifdef DARWIN_DIAG_TENDENCIES
1547 CALL DIAGNOSTICS_FILL(gDICsurfForc,'gDICEpr ',0,1,2,
1548 & bi,bj,myThid)
1549 CALL DIAGNOSTICS_FILL(gNO3surfForc,'gNO3Epr ',0,1,2,
1550 & bi,bj,myThid)
1551 CALL DIAGNOSTICS_FILL(gNO2surfForc,'gNO2Epr ',0,1,2,
1552 & bi,bj,myThid)
1553 CALL DIAGNOSTICS_FILL(gNH4surfForc,'gNH4Epr ',0,1,2,
1554 & bi,bj,myThid)
1555 CALL DIAGNOSTICS_FILL(gPO4surfForc,'gPO4Epr ',0,1,2,
1556 & bi,bj,myThid)
1557 CALL DIAGNOSTICS_FILL(gFeTsurfForc,'gFeTEpr ',0,1,2,
1558 & bi,bj,myThid)
1559 CALL DIAGNOSTICS_FILL(gSiO2surfForc,'gSiO2Epr',0,1,2,
1560 & bi,bj,myThid)
1561 #ifdef DARWIN_ALLOW_CARBON
1562 CALL DIAGNOSTICS_FILL(gALKsurfForc,'gALKEpr ',0,1,2,
1563 & bi,bj,myThid)
1564 CALL DIAGNOSTICS_FILL(gO2surfForc, 'gO2Epr ',0,1,2,
1565 & bi,bj,myThid)
1566 #endif
1567 #endif
1568
8fbfd1f382 Oliv*1569 CALL TIMER_STOP ('DIAGS_FILL [DARWIN_FORCING]',myThid)
714cf988dd Oliv*1570
8fbfd1f382 Oliv*1571 ENDIF
714cf988dd Oliv*1572 #endif /* ALLOW_DIAGNOSTICS */
8fbfd1f382 Oliv*1573
1574 midTime = midTime + deltaTclock/nsubtime
1575 subTime = subTime + deltaTclock/nsubtime
1576
1577 ENDDO
1578
63ffa46034 Oliv*1579 #ifdef ALLOW_DIAGNOSTICS
1580 IF (useDIAGNOSTICS) THEN
1581 IF (DIAGNOSTICS_IS_ON('freeFeLs', myThid)) THEN
1582 DO k=1,Nr
1583 tmpFac = 1 _d 0 / PTRACERS_dTLev(k)
1584 DO j=1,sNy
0f72dca88c Oliv*1585 DO i=1,sNx
63ffa46034 Oliv*1586 tmp3d(i,j,k) = tmpFac*DARWIN_minFeLoss(i,j,k,bi,bj)
1587 ENDDO
1588 ENDDO
1589 ENDDO
0f72dca88c Oliv*1590 CALL DIAGNOSTICS_FILL(tmp3d,'freeFeLs',0,Nr,2,bi,bj,myThid)
63ffa46034 Oliv*1591 ENDIF
1592 ENDIF
1593 #endif
1594
8fbfd1f382 Oliv*1595 #endif /* ALLOW_DARWIN */
1596
1597 RETURN
1598 END