File indexing completed on 2026-01-27 18:49:45 UTC
view on githubraw file Latest commit c74953b9 on 2026-01-23 13:15:02 UTC
8fbfd1f382 Oliv*0001 #include "DARWIN_OPTIONS.h"
0002
0003
0004
0005
0006 SUBROUTINE DARWIN_PLANKTON(
0007 I Ptr,
0008 U gTr,
5e7acb36b1 daat*0009 O chlout, diags, sumprey,
3f05298721 Oliv*0010 I PAR, photoTempFunc, hetTempFunc, grazTempFunc, reminTempFunc,
a092808e6b shlo*0011 I mortTempFunc, mort2TempFunc,
0012 I uptakeTempFunc, macromolTempFunc,
ba0b6d5d33 Oliv*0013 I omegaCl,
6559acf5ff Oliv*0014 I k_debug,myTime,myIter,myThid)
8fbfd1f382 Oliv*0015
0016
0017
0018
0019 IMPLICIT NONE
0020 #ifdef ALLOW_RADTRANS
0021 #include "RADTRANS_SIZE.h"
0022 #endif
0023 #include "DARWIN_SIZE.h"
0024 #include "DARWIN_INDICES.h"
0025 #include "DARWIN_DIAGS.h"
0026 #include "DARWIN_RADTRANS.h"
0027 #include "DARWIN_PARAMS.h"
0028 #include "DARWIN_TRAITS.h"
0029
0030
0031
0032
0033
0034
0035
0036
0037 _RL Ptr(nDarwin)
0038 _RL PAR(nlam)
0039 _RL photoTempFunc(nplank)
3f05298721 Oliv*0040 _RL hetTempFunc(nplank)
8fbfd1f382 Oliv*0041 _RL reminTempFunc
0042 _RL uptakeTempFunc
0043 _RL grazTempFunc(nplank)
0044 _RL mortTempFunc
0045 _RL mort2TempFunc
a092808e6b shlo*0046 _RL macromolTempFunc
ba0b6d5d33 Oliv*0047 _RL omegaCl
8fbfd1f382 Oliv*0048 _RL myTime
6559acf5ff Oliv*0049 INTEGER k_debug
0050 INTEGER myThid, myIter
8fbfd1f382 Oliv*0051
0052
0053
0054 _RL gTr(nDarwin)
0055
0056
5e7acb36b1 daat*0057
0058
0059
8fbfd1f382 Oliv*0060 _RL chlout(nPhoto)
0061 _RL diags(darwin_nDiag)
5e7acb36b1 daat*0062 _RL sumprey(nplank)
8fbfd1f382 Oliv*0063
0064
0065 #ifdef ALLOW_DARWIN
0066
0067
0068 INTEGER j, l
0069 INTEGER jz, jp
0070
0071 _RL DIC
0072 _RL NH4
0073 _RL NO2
0074 _RL NO3
0075 _RL PO4
0076 _RL SiO2
0077 _RL FeT
0078 _RL DOC
0079 _RL DON
0080 _RL DOP
0081 _RL DOFe
0082 _RL POC
0083 _RL PON
0084 _RL POP
0085 _RL POSi
0086 _RL POFe
0087 _RL pIC
0088 _RL O2
0089
0090 _RL X(nplank)
0091 _RL Qc(nplank)
c7b6c66d45 Oliv*0092 _RL Qctot(nplank)
8fbfd1f382 Oliv*0093 _RL Qn(nplank)
0094 _RL Qp(nplank)
0095 _RL Qsi(nplank)
0096 _RL Qfe(nplank)
0097 #ifdef DARWIN_ALLOW_CHLQUOTA
0098 _RL QChl(nPhoto)
0099 #endif
c7b6c66d45 Oliv*0100 _RL Qch(nplank)
0101
6b11238516 Oliv*0102 _RL regQc
0103 _RL regQn
0104 _RL regQp
0105 _RL regQfe
0106 _RL regQsi
0107
0108 _RL MM_PO4
0109 _RL MM_SiO2
0110 _RL MM_FeT
0111 _RL MM_NH4
0112 _RL MM_NO2
0113 _RL MM_NO3
8fbfd1f382 Oliv*0114
0115 _RL limitpCO2
0116 _RL limitNH4
0117 _RL limitNO2
0118 _RL limitNO3
0119 _RL fracNH4
0120 _RL fracNO2
0121 _RL fracNO3
0122 _RL limitn
0123 _RL limitp
0124 _RL limitsi
0125 _RL limitfe
0126 _RL limitnut
0127 _RL limitI
0128
0129 _RL muPON
0130 _RL muPOC
0131 _RL muPOP
0132 _RL muPOFe
0133 _RL muDON
0134 _RL muDOC
0135 _RL muDOP
0136 _RL muDOFe
0137 _RL muO
0138 _RL mu
0139
0140 _RL uptakeDIC
0141 _RL uptakeNH4
0142 _RL uptakeNO2
0143 _RL uptakeNO3
0144 _RL uptakeN
0145 _RL uptakePO4
0146 _RL uptakeSiO2
0147 _RL uptakeFeT
0148 _RL consumDIC
0149 _RL consumDIC_PIC
0150 _RL consumNH4
0151 _RL consumNO2
0152 _RL consumNO3
0153 _RL consumPO4
0154 _RL consumSiO2
0155 _RL consumFeT
b6fafcd98a Oliv*0156 _RL fIph_sum
0157 _RL fTph_sum
0158 _RL fnut_sum
0159 _RL X_photo
8fbfd1f382 Oliv*0160
0161 _RL uptakePON
0162 _RL uptakePOP
0163 _RL uptakePOC
0164 _RL uptakePOFe
0165 _RL uptakeDON
0166 _RL uptakeDOP
0167 _RL uptakeDOC
0168 _RL uptakeDOFe
0169 _RL uptakeO2
0170
0171 _RL respPON
0172 _RL respPOP
0173 _RL respPOC
0174 _RL respPOFe
0175 _RL respPOSi
0176 _RL respDON
0177 _RL respDOP
0178 _RL respDOC
0179 _RL respDOFe
0180
0181 _RL hydrolPON
0182 _RL hydrolPOP
0183 _RL hydrolPOC
0184 _RL hydrolPOFe
0185 _RL solubilPON
0186 _RL solubilPOP
0187 _RL solubilPOC
0188 _RL solubilPOFe
0189
0190 _RL consumPON
0191 _RL consumPOP
0192 _RL consumPOC
0193 _RL consumPOFe
0194 _RL consumPOSi
0195 _RL consumDON
0196 _RL consumDOP
0197 _RL consumDOC
0198 _RL consumDOFe
0199 _RL consumO2
0200
0201 _RL inhibNH4
0202
c7b6c66d45 Oliv*0203 _RL photoSyn
8fbfd1f382 Oliv*0204 _RL alpha_I
0205 _RL alpha_I_growth
0206 _RL PCm
0207 _RL PC
0208 _RL acclim
0209 _RL chl2c
0210 _RL growth
0211 _RL rhochl
0212 _RL Ek
0213 _RL EkoverE
0214
0215 _RL synthChl
0216
0217 _RL reminDOC
0218 _RL reminDON
0219 _RL reminDOP
0220 _RL reminDOFe
0221 _RL reminPOC
0222 _RL reminPON
0223 _RL reminPOP
0224 _RL reminPOSi
0225 _RL reminPOFe
0226 _RL disscPIC
0227
0228 _RL prodNO2
0229 _RL prodNO3
0230
0231 _RL PARtot
0232
0233 _RL tmp
0234
a092808e6b shlo*0235 #ifdef DARWIN_MACROMOLECULAR_GROWTH
0236 _RL mmX, mmQn, mmQp, mmQfe
0237 _RL PChl
0238 _RL QC_chl_D0
0239 _RL QC_chl_D1
0240 _RL QN_chl_D0
0241 _RL QN_chl_D1
0242 _RL QN_photo_D0
0243 _RL QN_photo_D1
0244 _RL QN_bio_D1
0245 _RL QN_pro_D0
0246 _RL QN_pro_D1
0247 _RL QN_rna_D1
0248 _RL QN_rna_D2
0249 _RL Qn_D0
0250 _RL Qn_D1
0251 _RL Qn_D2
0252 _RL Qn_exc
0253 _RL QC_chl
0254 _RL QN_chl
0255 _RL QN_pro_photo
0256 _RL QN_pro_bio
0257 _RL QN_pro_tot
0258 _RL QN_RNA
0259 _RL QnExc
0260 _RL exQn
0261 _RL QC_thy_D0
0262 _RL QC_thy_D1
0263 _RL QC_pro_D0
0264 _RL QC_pro_D1
0265 _RL QC_rna_D1
0266 _RL QC_rna_D2
0267 _RL Qc_D0
0268 _RL Qc_D1
0269 _RL Qc_D2
0270 _RL Qc_exc
0271
0272 _RL QP_thy_D0
0273 _RL QP_thy_D1
0274 _RL QP_rna_D1
0275 _RL QP_rna_D2
0276 _RL Qp_D0
0277 _RL Qp_D1
0278 _RL Qp_D2
0279 _RL PC_n
0280 _RL Qp_exc
0281 _RL PC_p
0282 _RL QP_thy
0283 _RL QP_RNA
0284 _RL QN_essential
0285 _RL QP_essential
0286 _RL QN_max
0287 _RL QC_essential
0288 _RL PC_c
0289 _RL QP_store
0290 _RL QP_excess
0291 _RL QN_store
0292 _RL QN_excess
0293 _RL QpExc
0294 _RL exQp
0295 _RL VN,VP,VFe,VSi
0296
0297 _RL exQc
0298
0299 _RL Qfe_D1
0300 _RL Qfe_D0
0301 _RL Qfe_exc
0302 _RL PC_fe
0303 _RL Qfe_pro_photo
0304 _RL Qfe_essential
0305 _RL Qfe_Store
0306 _RL Qfe_excess
0307 _RL exQfe
0308 _RL QfeExc
0309 _RL MODE
0310 _RL limN
0311 _RL limP
0312 _RL limF
0313 _RL limC
0314 _RL limL
0315
0316 _RL QC_chlN
0317 _RL QC_chlP
0318 _RL QC_chlF
0319 _RL Scal_coeff
0320 _RL QC_store
0321 _RL RQ
0322 _RL QN_DNA_actl
0323 _RL QP_other_actl
0324 _RL QP_DNA_actl
0325
0326 #endif /* DARWIN_MACROMOLECULAR_GROWTH */
0327
8fbfd1f382 Oliv*0328 #ifdef DARWIN_ALLOW_CDOM
0329 _RL CDOM
0330 _RL reminPOC_CDOM
0331 _RL reminPON_CDOM
0332 _RL reminPOP_CDOM
0333 _RL reminPOFe_CDOM
0334 _RL degrCDOM_DOC
0335 _RL degrCDOM_DON
0336 _RL degrCDOM_DOP
0337 _RL degrCDOM_DOFe
0338 #endif
0339
0340 #ifdef DARWIN_ALLOW_DENIT
0341 _RL denit, denitNH4
0342 #endif
0343
c7b6c66d45 Oliv*0344 #ifdef DARWIN_ALLOW_CSTORE
0345 _RL Dmd_NC
0346 _RL Dmd_PC
0347 _RL Dmd_SiC
0348 _RL Dmd_FeC
0349 _RL Dmd_min
0350 _RL excretC
0351 _RL excC
0352 _RL storeC
0353 #endif
0354
8fbfd1f382 Oliv*0355
0356
5e7acb36b1 daat*0357 _RL sumpref, grazphy
8fbfd1f382 Oliv*0358
0359 _RL preygraz (nplank)
0360 _RL preygrazexp(nplank)
a93256cee4 Oliv*0361 _RL grazrate (nplank)
8fbfd1f382 Oliv*0362 _RL predgrazc (nplank)
0363 #ifdef DARWIN_ALLOW_NQUOTA
0364 _RL predgrazn (nplank)
0365 #endif
0366 #ifdef DARWIN_ALLOW_PQUOTA
0367 _RL predgrazp (nplank)
0368 #endif
0369 #ifdef DARWIN_ALLOW_FEQUOTA
0370 _RL predgrazfe (nplank)
0371 #endif
0372
0373 _RL predexpc, predexpn, predexpp, predexpfe
0374 _RL graz2OC, graz2ON, graz2OP, graz2OFe
0375 _RL graz2POC, graz2PON, graz2POP, graz2POSi, graz2POFe
0376 _RL graz2PIC
0377
0378 _RL expfrac
0379
0380 _RL Xe
0381 _RL mortX
0382 _RL mortX2
0383
0384 _RL exude_DOC
0385 _RL exude_DON
0386 _RL exude_DOP
0387 _RL exude_DOFe
0388
0389 _RL exude_PIC
0390 _RL exude_POC
0391 _RL exude_PON
0392 _RL exude_POP
0393 _RL exude_POSi
0394 _RL exude_POFe
0395
0396 _RL mort_c(nplank)
0397
0398 _RL respir
0399 _RL respir_c
8752612d6f Oliv*0400 _RL respirN
0401 _RL respirP
0402 _RL respirFe
0403 _RL respirSi
8fbfd1f382 Oliv*0404
0405 #ifdef DARWIN_ALLOW_CDOM
0406 _RL graz2CDOM, exude_CDOM
0407 #endif
0408
5e7acb36b1 daat*0409 _RL mortDVM_c
0410 _RL mortDVM_DOC
0411 _RL mortDVM_DON
0412 _RL mortDVM_DOP
0413 _RL mortDVM_DOFe
0414 _RL mortDVM_POC
0415 _RL mortDVM_PON
0416 _RL mortDVM_POP
0417 _RL mortDVM_POFe
0418 _RL mortDVM_POSi
0419
b854db6bc4 Oliv*0420 _RL DARWIN_EPS
0421 PARAMETER(DARWIN_EPS=1 _d -38)
0422
c7b6c66d45 Oliv*0423
0424
8fbfd1f382 Oliv*0425
0426 PARtot = SUM(PAR)
0427
c7b6c66d45 Oliv*0428
8fbfd1f382 Oliv*0429
086a45f245 Oliv*0430 DIC = MAX(0 _d 0, Ptr(iDIC))
0431 NH4 = MAX(0 _d 0, Ptr(iNH4))
0432 NO2 = MAX(0 _d 0, Ptr(iNO2))
0433 NO3 = MAX(0 _d 0, Ptr(iNO3))
0434 PO4 = MAX(0 _d 0, Ptr(iPO4))
0435 SiO2 = MAX(0 _d 0, Ptr(iSiO2))
0436 FeT = MAX(0 _d 0, Ptr(iFeT))
0437
0438 DOC = MAX(0 _d 0, Ptr(iDOC))
0439 DON = MAX(0 _d 0, Ptr(iDON))
0440 DOP = MAX(0 _d 0, Ptr(iDOP))
0441 DOFe = MAX(0 _d 0, Ptr(iDOFe))
0442
0443 PIC = MAX(0 _d 0, Ptr(iPIC))
0444 POC = MAX(0 _d 0, Ptr(iPOC))
0445 PON = MAX(0 _d 0, Ptr(iPON))
0446 POP = MAX(0 _d 0, Ptr(iPOP))
0447 POSi = MAX(0 _d 0, Ptr(iPOSi))
0448 POFe = MAX(0 _d 0, Ptr(iPOFe))
8fbfd1f382 Oliv*0449 #ifdef DARWIN_ALLOW_CARBON
086a45f245 Oliv*0450 O2 = MAX(0 _d 0, Ptr(iO2))
8fbfd1f382 Oliv*0451 #endif
0452 #ifdef DARWIN_ALLOW_CDOM
086a45f245 Oliv*0453 CDOM = MAX(0 _d 0, Ptr(iCDOM))
8fbfd1f382 Oliv*0454 #endif
0455
0456 DO j = 1, nplank
0457
0458 Qc(j) = 1.0
c7b6c66d45 Oliv*0459 Qctot(j) = 1.0
086a45f245 Oliv*0460 X(j) = MAX(0 _d 0, Ptr(ic+j-1))/Qc(j)
c7b6c66d45 Oliv*0461
8fbfd1f382 Oliv*0462
0463 #ifdef DARWIN_ALLOW_NQUOTA
b854db6bc4 Oliv*0464 IF (X(j) .GT. DARWIN_EPS) THEN
c697368a52 Oliv*0465 Qn(j) = MAX(0 _d 0, Ptr(in+j-1))/X(j)
0466 ELSE
0467 Qn(j) = Qnmax(j)
0468 ENDIF
8fbfd1f382 Oliv*0469 #else
0470 Qn(j) = R_NC(j)
0471 #endif
0472 #ifdef DARWIN_ALLOW_PQUOTA
b854db6bc4 Oliv*0473 IF (X(j) .GT. DARWIN_EPS) THEN
c697368a52 Oliv*0474 Qp(j) = MAX(0 _d 0, Ptr(ip+j-1))/X(j)
0475 ELSE
0476 Qp(j) = Qpmax(j)
0477 ENDIF
8fbfd1f382 Oliv*0478 #else
0479 Qp(j) = R_PC(j)
0480 #endif
0481 #ifdef DARWIN_ALLOW_SIQUOTA
b854db6bc4 Oliv*0482 IF (X(j) .GT. DARWIN_EPS) THEN
c697368a52 Oliv*0483 Qsi(j) = MAX(0 _d 0, Ptr(isi+j-1))/X(j)
0484 ELSE
0485 Qsi(j) = Qsimax(j)
0486 ENDIF
8fbfd1f382 Oliv*0487 #else
0488 Qsi(j) = R_SiC(j)
0489 #endif
0490 #ifdef DARWIN_ALLOW_FEQUOTA
b854db6bc4 Oliv*0491 IF (X(j) .GT. DARWIN_EPS) THEN
c697368a52 Oliv*0492 Qfe(j) = MAX(0 _d 0, Ptr(ife+j-1))/X(j)
0493 ELSE
0494 Qfe(j) = Qfemax(j)
0495 ENDIF
8fbfd1f382 Oliv*0496 #else
0497 Qfe(j) = R_FeC(j)
0498 #endif
0499 ENDDO
0500 #ifdef DARWIN_ALLOW_CHLQUOTA
0501 DO j = 1, nPhoto
b854db6bc4 Oliv*0502 IF (X(j) .GT. DARWIN_EPS) THEN
c697368a52 Oliv*0503 QChl(j) = MAX(0 _d 0, Ptr(iChl+j-1))/X(j)
0504 ELSE
0505 QChl(j) = chl2cmax(j)
0506 ENDIF
8fbfd1f382 Oliv*0507 ENDDO
0508 #endif
c7b6c66d45 Oliv*0509 #ifdef DARWIN_ALLOW_CSTORE
0510 DO j = 1, nPhoto
b854db6bc4 Oliv*0511 IF (X(j) .GT. DARWIN_EPS) THEN
c7b6c66d45 Oliv*0512 Qch(j) = MAX(0 _d 0, Ptr(ich+j-1))/X(j)
0513 ELSE
0514 Qch(j) = 0 _d 0
0515 ENDIF
0516 Qctot(j) = Qctot(j) + Qch(j)
0517 ENDDO
0518 #endif
8fbfd1f382 Oliv*0519
c7b6c66d45 Oliv*0520
8fbfd1f382 Oliv*0521 consumDIC = 0.0
0522 consumDIC_PIC = 0.0
0523 consumNH4 = 0.0
0524 consumNO2 = 0.0
0525 consumNO3 = 0.0
0526 consumPO4 = 0.0
0527 consumSiO2 = 0.0
0528 consumFeT = 0.0
0529 consumPON = 0.0
0530 consumPOP = 0.0
0531 consumPOC = 0.0
0532 consumPOFe = 0.0
0533 consumPOSi = 0.0
0534 consumDON = 0.0
0535 consumDOP = 0.0
0536 consumDOC = 0.0
0537 consumDOFe = 0.0
0538 consumO2 = 0.0
0539 reminPON = 0.0
0540 reminPOP = 0.0
0541 reminPOC = 0.0
0542 reminPOFe = 0.0
0543 reminPOSi = 0.0
0544 reminDON = 0.0
0545 reminDOP = 0.0
0546 reminDOC = 0.0
0547 reminDOFe = 0.0
0548 solubilPON = 0.0
0549 solubilPOP = 0.0
0550 solubilPOC = 0.0
0551 solubilPOFe = 0.0
0552 prodNO2 = 0.0
0553 prodNO3 = 0.0
8752612d6f Oliv*0554 respir = 0.0 _d 0
b6fafcd98a Oliv*0555 fIph_sum = 0.0 _d 0
0556 fTph_sum = 0.0 _d 0
0557 fnut_sum = 0.0 _d 0
0558 X_photo = 0.0 _d 0
5e7acb36b1 daat*0559
c7b6c66d45 Oliv*0560 #ifdef DARWIN_ALLOW_CSTORE
0561 excC = 0.0
0562 #endif
8fbfd1f382 Oliv*0563
0564 DO j = 1, nPhoto
0565 chlout(j) = 0.0 _d 0
0566 ENDDO
0567
0568 DO l=1,darwin_nDiag
0569 diags(l) = 0.0
0570 ENDDO
0571
0572
c7b6c66d45 Oliv*0573
8fbfd1f382 Oliv*0574
0575 DO j = 1, nPhoto
0576 IF (isPhoto(j) .NE. 0) THEN
0577
a092808e6b shlo*0578 #ifdef DARWIN_MACROMOLECULAR_GROWTH
0579
0580 IF (X(j) .GT. DARWIN_EPS) THEN
0581 mmQn = Qn(j)
0582 mmQp = Qp(j)
0583 mmQfe = Qfe(j)
0584 mmX = X(j)
0585 ELSE
0586 mmQn = 0 _d 0
0587 mmQp = 0 _d 0
0588 mmQfe = 0 _d 0
0589 mmX = 0 _d 0
0590 ENDIF
0591
0592 limP = 0 _d 0
0593 limN = 0 _d 0
0594 limF = 0 _d 0
0595 limC = 0 _d 0
0596 limL = 0 _d 0
0597
0598
0599
0600
0601
0602
0603 PChl = Sf(j)*VI_max(j)*(1 - EXP(-A_I(j)*PARtot))
0604
0605
0606
0607 IF ( PChl .GT. VI_min(j) ) THEN
0608
0609
0610
0611
0612 QC_chl_D0 = maintConsum(j)/PChl
0613 QC_chl_D1 = (1 + ECo2Prod(j))/PChl
0614
0615
0616 QN_chl_D0 = QC_chl_D0*Y_NC_chl(j)
0617 QN_chl_D1 = QC_chl_D1*Y_NC_chl(j)
0618
0619
0620 QN_photo_D0 = QC_chl_D0*A_pho(j)/Y_CN_protein(j)
0621 QN_photo_D1 = QC_chl_D1*A_pho(j)/Y_CN_protein(j)
0622
0623
0624 QN_bio_D1 = A_bio(j)/Y_CN_protein(j)/macromolTempFunc
0625
0626
0627 QN_pro_D0 = QN_photo_D0 + QN_pro_other(j)
0628 QN_pro_D1 = QN_photo_D1 + QN_bio_D1
0629
0630
0631 QN_rna_D1 = QN_pro_D0*AN_RNA(j)/macromolTempFunc
0632 QN_rna_D2 = QN_pro_D1*AN_RNA(j)/macromolTempFunc
0633
0634
0635 Qn_D0 = QN_chl_D0 + QN_pro_D0 + QN_RNA_min(j) + QN_DNA(j)
0636 Qn_D1 = QN_chl_D1 + QN_pro_D1 + QN_rna_D1
0637 Qn_D2 = QN_rna_D2
0638
0639
0640
0641 QP_rna_D1 = QN_rna_D1*Y_PN_nucacid(j)
0642 QP_rna_D2 = QN_rna_D2*Y_PN_nucacid(j)
0643 QP_thy_D0 = QC_chl_D0*Y_THY_P(j)
0644 QP_thy_D1 = QC_chl_D1*Y_THY_P(j)
0645
0646 Qp_D0 = QP_thy_D0 + QP_RNA_min(j) + QP_DNA(j) + QP_other(j)
0647 Qp_D1 = QP_thy_D1 + QP_rna_D1
0648 Qp_D2 = QP_rna_D2
0649
0650
0651
0652 Qfe_D0 = QN_photo_D0*Y_FeN_photo(j)
0653 Qfe_D1 = QN_photo_D1*Y_FeN_photo(j)
0654
0655
0656
0657 QC_thy_D0 = QP_thy_D0*Y_CP_Plip(j)
0658 QC_thy_D1 = QP_thy_D1*Y_CP_Plip(j)
0659 QC_pro_D0 = QN_pro_D0*Y_CN_protein(j)
0660 QC_pro_D1 = QN_pro_D1*Y_CN_protein(j)
0661 QC_rna_D1 = QN_rna_D1*Y_CN_RNA(j)
0662 QC_rna_D2 = QN_rna_D2*Y_CN_RNA(j)
0663
0664 Qc_D0 = QC_chl_D0 + QC_pro_D0 + QC_RNA_min(j) + QC_thy_D0
0665 & + QC_DNA(j) + QC_other(j)
0666 Qc_D1 = QC_chl_D1 + QC_pro_D1 + QC_thy_D1 + QC_rna_D1
0667 Qc_D2 = QC_rna_D2
0668
0669
0670
0671 Qn_exc = MAX(0 _d 0, mmQn - Qn_D0)
0672 PC_n = 2*Qn_exc/(Qn_D1 + SQRT(Qn_D1*Qn_D1 + 4*Qn_D2*Qn_exc))
0673 Qp_exc = MAX(0 _d 0, mmQp - Qp_D0)
0674 PC_p = 2*Qp_exc/(Qp_D1 + SQRT(Qp_D1*Qp_D1 + 4*Qp_D2*Qp_exc))
0675 Qfe_exc = MAX(0 _d 0, mmQfe - Qfe_D0)
0676 PC_fe = Qfe_exc/Qfe_D1
0677 Qc_exc = MAX(0 _d 0, Qc(j) - Qc_D0)
0678 PC_c = 2*Qc_exc/(Qc_D1 + SQRT(Qc_D1*Qc_D1 + 4*Qc_D2*Qc_exc))
0679
0680 PC = MIN(PC_n,PC_p,PC_fe,PC_c)
0681 IF (PC_p.EQ.PC) THEN
0682 MODE = 1 _d 0
0683 limP = 1 _d 0
0684 ELSEIF (PC_n.EQ.PC) THEN
0685 MODE = 2 _d 0
0686 limN = 1 _d 0
0687 ELSEIF (PC_fe.EQ.PC) THEN
0688 MODE = 3 _d 0
0689 limF = 1 _d 0
0690 ELSEIF (PC_c.EQ.PC) THEN
0691 MODE = 4 _d 0
0692 limC = 1 _d 0
0693 ELSE
0694 MODE = 0 _d 0
0695 ENDIF
0696
0697 QC_chl = QC_chl_D0 + QC_chl_D1*PC
0698
0699
0700
0701 ELSE
0702 MODE = 4 _d 0
0703 limL = 1 _d 0
0704 PC = 0. _d 0
0705 ENDIF
0706
0707
0708
0709 IF (PC .EQ. 0. _d 0) THEN
0710 QC_chlN = (mmQn - QnNoChl(j))
0711 & /(Y_NC_chl(j) + A_pho(j)/Y_CN_protein(j))
0712 QC_chlP = (mmQp - QpNoChl(j))/Y_THY_P(j)
0713 QC_chlF = (mmQfe - QfeNoChl(j))
0714 & /(A_pho(j)/Y_CN_protein(j)*Y_FeN_photo(j))
0715 QC_chl = MAX(0 _d 0, MIN(QC_chlN,QC_chlP,QC_chlF,QC_chlMax(j)))
0716 ENDIF
0717
0718
0719 chlout(j) = 893.49 _d 0*X(j)*QC_chl/55 _d 0
0720
0721
0722 QN_chl = QC_chl*Y_NC_chl(j)
0723 QN_pro_photo = QC_chl*A_pho(j)/Y_CN_protein(j)
0724 QN_pro_bio = A_bio(j)/Y_CN_protein(j)*PC/macromolTempFunc
0725 QN_pro_tot = QN_pro_other(j) + QN_pro_photo + QN_pro_bio
0726 QN_RNA = QN_RNA_min(j)
0727 & + QN_pro_tot*AN_RNA(j)*PC/macromolTempFunc
0728
0729 QP_thy = QC_chl*Y_THY_P(j)
0730 QP_RNA = QN_RNA*Y_PN_nucacid(j)
0731
0732 Qfe_pro_photo = QN_pro_photo*Y_FeN_photo(j)
0733
0734
0735
0736 IF (QC_chl.EQ.0 _d 0) THEN
0737 Scal_coeff = MIN(mmQp/QpNoChl(j),mmQn/QnNoChl(j),1 _d 0)
0738 QN_RNA = QN_RNA_min(j)*Scal_coeff
0739 QN_DNA_actl = QN_DNA(j)*Scal_coeff
0740 QP_RNA = QP_RNA_min(j)*Scal_coeff
0741 QP_DNA_actl = QP_DNA(j)*Scal_coeff
0742
0743 QN_pro_tot = MIN(mmQn - QN_RNA - QN_DNA_actl, QN_pro_other(j))
0744
0745 QP_other_actl = MIN(mmQp - QP_RNA - QP_DNA_actl, QP_other(j))
0746 ELSE
0747 QN_DNA_actl = QN_DNA(j)
0748 QP_DNA_actl = QP_DNA(j)
0749 QP_other_actl = QP_other(j)
0750 ENDIF
0751
0752
0753 QN_essential = QN_chl + QN_pro_tot + QN_RNA + QN_DNA_actl
0754 QN_max = QN_essential + QN_sto_max(j)
0755 QP_essential = QP_thy + QP_RNA + QP_DNA_actl + QP_other_actl
0756 Qfe_essential = Qfe_pro_photo
0757 QC_essential = QC_chl + QN_pro_tot*Y_CN_protein(j)
0758 & + QP_thy*Y_CP_Plip(j) + QN_RNA*Y_CN_RNA(j)
0759 & + QN_DNA_actl*Y_CN_DNA(j) + QC_other(j)
0760
0761
0762
0763
0764
0765 QN_store = MIN(mmQn - QN_essential,
0766 & (Qc(j) - QC_essential)/Y_CN_cyano(j),
0767 & QN_sto_max(j))
0768 QN_store = MAX(0 _d 0, QN_store)
0769 QN_excess = MAX(0 _d 0, mmQn - QN_essential - QN_store)
0770
0771
0772
0773 QP_store = MAX(0 _d 0, MIN(mmQp, Qp_max(j)) - QP_essential)
0774 QP_excess = MAX(0 _d 0, mmQp - QP_essential - QP_store)
0775
0776
0777
0778 Qfe_store = MAX(0 _d 0, MIN(mmQfe, Qfe_max(j)) - Qfe_essential)
0779 Qfe_excess = MAX(0 _d 0, mmQfe - Qfe_essential - Qfe_store)
0780
0781
0782 QC_store = MAX(0 _d 0,
0783 & 1 _d 0 - QC_essential - QN_store*Y_CN_cyano(j))
0784
0785
0786
0787
0788
0789 IF ((QN_essential + QN_store) .GT. 0 _d 0) THEN
0790 regQn = (1.1 _d 0*(QN_essential + QN_store) - mmQn)/
0791 & (0.1 _d 0*(QN_essential + QN_store))
0792 regQn = MAX(0 _d 0, MIN(1 _d 0, regQn))
0793 ELSE
0794 regQn = 1 _d 0
0795 ENDIF
0796 MM_NO3 = NO3/(NO3 + ksatNO3(j))
0797
0798 VN = vmaxNO3(j)*MM_NO3*regQn*uptakeTempFunc
0799 uptakeN = VN*mmX
0800 uptakeNO3 = VN*mmX
0801 uptakeNO2 = 0 _d 0
0802 uptakeNH4 = 0 _d 0
0803
0804
0805 IF ((QP_essential+QP_store) .GT. 0 _d 0) THEN
0806 regQp = (1.1 _d 0*(QP_essential+QP_store) - mmQp)/
0807 & (0.1 _d 0*(QP_essential+QP_store))
0808 regQp = MAX(0 _d 0, MIN(1 _d 0, regQp))
0809 ELSE
0810 regQp = 1 _d 0
0811 ENDIF
0812 MM_PO4 = PO4/(PO4 + ksatPO4(j))
0813
0814 VP = vmaxPO4(j)*MM_PO4*regQp*uptakeTempFunc
0815 uptakePO4 = VP*mmX
0816
0817
0818 IF ((Qfe_essential + Qfe_Store) .GT. 0 _d 0) THEN
0819 regQFe = (1.1 _d 0*(Qfe_essential + Qfe_Store) - mmQfe)/
0820 & (0.1 _d 0*(Qfe_essential + Qfe_Store))
0821 regQFe = MAX(0 _d 0, MIN(1 _d 0, regQFe))
0822 ELSE
0823 regQFe = 1 _d 0
0824 ENDIF
0825 MM_FeT = FeT/(FeT + ksatFeT(j))
0826
0827 Vfe = vmaxFeT(j)*MM_FeT*regQFe*uptakeTempFunc
0828 uptakeFeT = Vfe*mmX
0829
0830 exQc = 0 _d 0
0831
0832
0833 RQ = ( QN_pro_tot*Y_CN_protein(j))* 1.56 _d 0
0834 & + ( QC_other(j)/2 + QC_store/2) * 1.34 _d 0
0835 & + ( Y_CP_Plip(j) * QP_thy)* 1.30 _d 0
0836 & + ( QC_other(j)/2 + QC_store/2) * 1.0 _d 0
0837 & + ( QC_chl) * 1.39 _d 0
0838 & + ( QN_DNA_actl*Y_CN_DNA(j)) * 1.62 _d 0
0839 & + ( QN_RNA*Y_CN_RNA(j)) * 1.57 _d 0
0840 & + ( QN_store*Y_CN_cyano(j)) * 1.85 _d 0
0841
0842 # ifdef DARWIN_DIAG_PERTYPE
0843 diags(iPChl+j-1) = PChl
0844 diags(iVN +j-1) = VN
0845 diags(iVP +j-1) = VP
0846 diags(iMODE+j-1) = MODE
0847 diags(iFe_C+j-1) = mmQfe
0848 diags(iexQc+j-1) = exQc
0849 diags(iCChl+j-1) = QC_chl
0850 diags(iNChl+j-1) = QN_chl
0851 diags(iNPho+j-1) = QN_pro_photo
0852 diags(iNSyn+j-1) = QN_pro_bio
0853 diags(iNPrn+j-1) = QN_pro_tot
0854 diags(iNRNA+j-1) = QN_RNA
0855 diags(iNDNA+j-1) = QN_DNA_actl
0856 diags(iNSTO+j-1) = QN_store
0857 diags(iNEXC+j-1) = QN_excess
0858 diags(iPRNA+j-1) = QP_RNA
0859 diags(iPDNA+j-1) = QP_DNA_actl
0860 diags(iPTHY+j-1) = QP_thy
0861 diags(iPCON+j-1) = QP_other_actl
0862 diags(iPSTO+j-1) = QP_store
0863 diags(iPEXC+j-1) = QP_excess
0864 diags(iFPHO+j-1) = Qfe_pro_photo
0865 diags(iFSTO+j-1) = Qfe_Store
0866 diags(iFEXC+j-1) = Qfe_excess
0867 diags(iY_RQ+j-1) = RQ
0868 diags(ilimN+j-1) = limN
0869 diags(ilimP+j-1) = limP
0870 diags(ilimF+j-1) = limF
0871 diags(ilimC+j-1) = limC
0872 diags(ilimL+j-1) = limL
0873 # endif
0874
0875 #else /* DARWIN_MACROMOLECULAR_GROWTH */
0876
c7b6c66d45 Oliv*0877
8fbfd1f382 Oliv*0878
0879
0880
0881
0882
0883
0884
c7b6c66d45 Oliv*0885
0886
0887
0888
0889
0890
0891 #ifdef DARWIN_ALLOW_CSTORE
0892 Dmd_min = HUGE(Dmd_min)
0893 #endif
0894
8fbfd1f382 Oliv*0895
c697368a52 Oliv*0896 IF (ksatPO4(j) .GT. 0 _d 0) THEN
6b11238516 Oliv*0897 MM_PO4 = PO4/(PO4 + ksatPO4(j))
c697368a52 Oliv*0898 ELSE
6b11238516 Oliv*0899 MM_PO4 = 1 _d 0
c697368a52 Oliv*0900 ENDIF
8fbfd1f382 Oliv*0901 #ifdef DARWIN_ALLOW_PQUOTA
086a45f245 Oliv*0902 regQp = MAX(0 _d 0, MIN(1 _d 0, (Qpmax(j)-Qp(j))/
0903 & (Qpmax(j)-Qpmin(j)) ))
a092808e6b shlo*0904 regQp = regQp**hillnumPO4(j)
6b11238516 Oliv*0905
0906 uptakePO4 = vmaxPO4(j)*MM_PO4*regQp*uptakeTempFunc*X(j)
8fbfd1f382 Oliv*0907
086a45f245 Oliv*0908 limitp = MIN(1 _d 0, (1.0-Qpmin(j)/MAX(Qpmin(j), Qp(j)))/
0909 & (1.0-Qpmin(j)/Qpmax(j)))
6b11238516 Oliv*0910 #else /* no PQUOTA */
c7b6c66d45 Oliv*0911 # ifdef DARWIN_ALLOW_CSTORE
0912 IF (R_PC(j) .GT. 0 _d 0) THEN
0913 Dmd_PC = vmaxPO4(j)*MM_PO4*uptakeTempFunc*X(j)/R_PC(j)
0914 Dmd_min = MIN(Dmd_min, Dmd_PC)
0915 ELSE
0916
0917 Dmd_PC = 0 _d 0
0918 ENDIF
0919 # else
6b11238516 Oliv*0920 limitp = MM_PO4
c7b6c66d45 Oliv*0921 # endif
6b11238516 Oliv*0922 #endif /* pquota */
8fbfd1f382 Oliv*0923
0924
c697368a52 Oliv*0925 IF (ksatSiO2(j) .GT. 0 _d 0) THEN
6b11238516 Oliv*0926 MM_SiO2 = SiO2/(SiO2 + ksatSiO2(j))
c697368a52 Oliv*0927 ELSE
6b11238516 Oliv*0928 MM_SiO2 = 1 _d 0
c697368a52 Oliv*0929 ENDIF
8fbfd1f382 Oliv*0930 #ifdef DARWIN_ALLOW_SIQUOTA
086a45f245 Oliv*0931 regQsi = MAX(0 _d 0, MIN(1 _d 0, (Qsimax(j) - Qsi(j))/
0932 & (Qsimax(j) - Qsimin(j)) ))
a092808e6b shlo*0933 regQsi = regQsi**hillnumSiO2(j)
6b11238516 Oliv*0934 uptakeSiO2 = vmaxSiO2(j)*MM_SiO2*regQsi*uptakeTempFunc*X(j)
8fbfd1f382 Oliv*0935
086a45f245 Oliv*0936 limitsi = MAX(0 _d 0, MIN(1 _d 0, (Qsi(j) - Qsimin(j))/
0937 & (Qsimax(j) - Qsimin(j)) ))
6b11238516 Oliv*0938 #else /* no SIQUOTA */
c7b6c66d45 Oliv*0939 # ifdef DARWIN_ALLOW_CSTORE
0940 IF (R_SiC(j) .GT. 0 _d 0) THEN
0941 Dmd_SiC = VmaxSiO2(j)*MM_SiO2*uptakeTempFunc*X(j)/R_SiC(j)
0942 Dmd_min = MIN(Dmd_min, Dmd_SiC)
0943 ELSE
0944 Dmd_SiC = 0 _d 0
0945 ENDIF
0946 # else
6b11238516 Oliv*0947 limitsi = MM_SiO2
c7b6c66d45 Oliv*0948 # endif
8fbfd1f382 Oliv*0949 #endif
0950
0951
c697368a52 Oliv*0952 IF (ksatFeT(j) .GT. 0 _d 0) THEN
6b11238516 Oliv*0953 MM_FeT = FeT/(FeT + ksatFeT(j))
c697368a52 Oliv*0954 ELSE
6b11238516 Oliv*0955 MM_FeT = 1 _d 0
c697368a52 Oliv*0956 ENDIF
8fbfd1f382 Oliv*0957 #ifdef DARWIN_ALLOW_FEQUOTA
086a45f245 Oliv*0958 regQfe = MAX(0 _d 0, MIN(1 _d 0, (Qfemax(j)-Qfe(j))/
0959 & (Qfemax(j)-Qfemin(j)) ))
a092808e6b shlo*0960 regQfe = regQfe**hillnumFeT(j)
6b11238516 Oliv*0961 uptakeFeT = vmaxFeT(j)*MM_FeT*regQfe*uptakeTempFunc*X(j)
8fbfd1f382 Oliv*0962
086a45f245 Oliv*0963 limitfe = MIN(1 _d 0, (1.0-Qfemin(j)/MAX(Qfemin(j), Qfe(j)))/
0964 & (1.0-Qfemin(j)/Qfemax(j)))
6b11238516 Oliv*0965 #else /* no FEQUOTA */
c7b6c66d45 Oliv*0966
0967 # ifdef DARWIN_ALLOW_CSTORE
0968 IF (R_FeC(j) .GT. 0 _d 0) THEN
0969 Dmd_FeC = vmaxFeT(j)*MM_FeT*uptakeTempFunc*X(j)/R_FeC(j)
0970 Dmd_min = MIN(Dmd_min, Dmd_FeC)
0971 ELSE
0972 Dmd_FeC = 0 _d 0
0973 ENDIF
0974 # else
6b11238516 Oliv*0975 limitfe = MM_FeT
c7b6c66d45 Oliv*0976 # endif
8fbfd1f382 Oliv*0977 #endif
0978
0979
0980 #ifdef DARWIN_ALLOW_NQUOTA
0981
0982 inhibNH4 = EXP(-amminhib(j)*NH4)
6b11238516 Oliv*0983 MM_NH4 = NH4/(NH4 + ksatNH4(j))
0984 MM_NO2 = NO2/(NO2 + ksatNO2(j))*inhibNH4
0985 MM_NO3 = NO3/(NO3 + ksatNO3(j))*inhibNH4
086a45f245 Oliv*0986 regQn = MAX(0 _d 0, MIN(1 _d 0, (Qnmax(j)-Qn(j))/
0987 & (Qnmax(j)-Qnmin(j)) ))
a092808e6b shlo*0988 regQn = regQn**hillnumDIN(j)
6b11238516 Oliv*0989 uptakeNH4 = vmaxNH4(j)*MM_NH4*regQn*uptakeTempFunc*X(j)
0990 uptakeNO2 = vmaxNO2(j)*MM_NO2*regQn*uptakeTempFunc*X(j)
0991 uptakeNO3 = vmaxNO3(j)*MM_NO3*regQn*uptakeTempFunc*X(j)
8fbfd1f382 Oliv*0992 #ifdef DARWIN_ALLOW_FEQUOTA
0993 #ifdef DARWIN_NITRATE_FELIMIT
0994 uptakeNO3 = uptakeNO3 * limitfe
0995 #endif
0996 #endif
0997 uptakeN = MAX(uptakeNH4 + uptakeNO2 + uptakeNO3,
6b11238516 Oliv*0998 & vmaxN(j)*regQn*uptakeTempFunc*X(j)*diazo(j))
8fbfd1f382 Oliv*0999
1000
086a45f245 Oliv*1001 limitn = MAX(0 _d 0, MIN(1 _d 0, (Qn(j) - Qnmin(j))/
1002 & (Qnmax(j) - Qnmin(j)) ))
8fbfd1f382 Oliv*1003 #else /* not DARWIN_ALLOW_NQUOTA */
1004 inhibNH4 = EXP(-amminhib(j)*NH4)
1005 limitNH4 = useNH4(j)*NH4/(NH4 + ksatNH4(j))
1006 limitNO2 = useNO2(j)*NO2/
1007 & (NO2 + combNO(j)*(NO3 + ksatNO3(j) - ksatNO2(j)) + ksatNO2(j))*
1008 & inhibNH4
1009 limitNO3 = useNO3(j)*NO3/
1010 & (combNO(j)*NO2 + NO3 + ksatNO3(j))*inhibNH4
1011 limitn = limitNH4 + limitNO2 + limitNO3
c697368a52 Oliv*1012
b854db6bc4 Oliv*1013 IF (limitn .GT. DARWIN_EPS) THEN
c697368a52 Oliv*1014 fracNH4 = limitNH4/limitn
1015 fracNO2 = limitNO2/limitn
1016 fracNO3 = limitNO3/limitn
1017 ELSE
1018 fracNH4 = 0 _d 0
1019 fracNO2 = 0 _d 0
1020 fracNO3 = 0 _d 0
1021 ENDIF
c7b6c66d45 Oliv*1022 # ifdef DARWIN_ALLOW_CSTORE
1023
1024 uptakeNH4 = vmaxNH4(j)*limitNH4*uptakeTempFunc*X(j)
1025 uptakeNO2 = vmaxNO2(j)*limitNO2*uptakeTempFunc*X(j)
1026 uptakeNO3 = vmaxNO3(j)*limitNO3*uptakeTempFunc*X(j)
1027 uptakeN = MAX(uptakeNH4 + uptakeNO2 + uptakeNO3,
1028 & VmaxN(j)*uptakeTempFunc*diazo(j)*X(j))
1029 IF (R_NC(j) .GT. 0 _d 0) THEN
1030 Dmd_NC = uptakeN/R_NC(j)
1031 Dmd_min = MIN(Dmd_min, Dmd_NC)
1032 ELSE
1033 Dmd_NC = 0 _d 0
1034 ENDIF
1035 # endif
8fbfd1f382 Oliv*1036
6b11238516 Oliv*1037 limitn = MIN(1 _d 0, limitn)
1038 IF (diazo(j) .GT. 0) THEN
1039 limitn = 1 _d 0
1040 ENDIF
8fbfd1f382 Oliv*1041 #endif /* DARWIN_ALLOW_NQUOTA */
1042
c7b6c66d45 Oliv*1043 #ifdef DARWIN_ALLOW_CSTORE
1044
1045 limitnut = 1 _d 0
1046 #else
8fbfd1f382 Oliv*1047 limitnut = MIN(limitn, limitp, limitsi)
9eed995475 Oliv*1048 #if
8fbfd1f382 Oliv*1049 limitnut = MIN(limitnut, limitfe)
c7b6c66d45 Oliv*1050 #endif
8fbfd1f382 Oliv*1051 #endif
1052
1053 limitpCO2 = 1.
1054
c7b6c66d45 Oliv*1055
8fbfd1f382 Oliv*1056 #ifdef DARWIN_ALLOW_GEIDER
1057
1058 alpha_I = 0 _d 0
1059 DO l = 1, nlam
1060 alpha_I = alpha_I + alphachl(j,l)*PAR(l)
1061 ENDDO
1062
1063 PCm = PCmax(j)*limitnut*photoTempFunc(j)*limitpCO2
1064
c7b6c66d45 Oliv*1065
8fbfd1f382 Oliv*1066 IF (PCm .GT. 0.0) THEN
1067 acclim = MAX(chl2cmin(j), MIN(chl2cmax(j),
1068 & chl2cmax(j)/(1+(chl2cmax(j)*alpha_I)/(2*PCm)) ))
1069 ELSE
1070 acclim = chl2cmin(j)
1071 ENDIF
1072
1073 #ifdef DARWIN_ALLOW_CHLQUOTA
1074
1075 chl2c = QChl(j)
1076 #else
1077 chl2c = acclim
1078 #endif
1079
1080 alpha_I_growth = alpha_I
1081
1082 #ifdef DARWIN_ALLOW_FEQUOTA
1083 alpha_I_growth = alpha_I_growth*limitfe
1084 #endif
1085
1086
1087 IF (PCm .GT. 0.0 .AND. PARtot .GT. PARmin) THEN
fd20fa810c Oliv*1088 limitI = 1 _d 0 - EXP(-alpha_I_growth*chl2c/PCm)
8fbfd1f382 Oliv*1089 ELSE
fd20fa810c Oliv*1090 limitI = 0 _d 0
8fbfd1f382 Oliv*1091 ENDIF
1092
1093 IF (inhibGeider(j) .GT. 0.0) THEN
1094
1095 tmp = alpha_I/alpha_mean(j)
1096 Ek = PCm/(chl2c*alpha_mean(j))
2cf0d99c0f Oliv*1097 IF (tmp .GT. Ek) THEN
1098 EkoverE = Ek / tmp
fd20fa810c Oliv*1099 limitI = limitI*EkoverE*inhibGeider(j)
8fbfd1f382 Oliv*1100 ENDIF
1101 ENDIF
1102
fd20fa810c Oliv*1103 PC = PCm*limitI
1104
8fbfd1f382 Oliv*1105 #else /* not DARWIN_ALLOW_GEIDER */
1106
1107 IF (PARtot .GT. PARmin) THEN
1108
1109 limitI = (1.0 _d 0 - EXP(-PARtot*ksatPAR(j)))*
1110 & EXP(-PARtot*kinhPAR(j)) * normI(j)
1111 PC = PCmax(j)*limitnut*limitI*photoTempFunc(j)*limitpCO2
1112 ELSE
fd20fa810c Oliv*1113 limitI = 0 _d 0
8fbfd1f382 Oliv*1114 PC = 0.0 _d 0
1115 ENDIF
1116 synthChl = 0.0
1117
1118 #endif /* DARWIN_ALLOW_GEIDER */
1119
a092808e6b shlo*1120 #ifdef DARWIN_DIAG_PERTYPE
1121
1122 IF (limitnut==limitn) diags(ilimN+j-1) = 1 _d 0
1123 IF (limitnut==limitp) diags(ilimP+j-1) = 1 _d 0
1124 IF (limitnut==limitfe) diags(ilimF+j-1) = 1 _d 0
1125 IF (limitnut==limitsi) diags(ilimS+j-1) = 1 _d 0
1126
1127 diags(ifIph+j-1) = limitI
1128 fIph_sum = fIph_sum + limitI * X(j)
1129 diags(ifTph+j-1) = photoTempFunc(j)
1130 fTph_sum = fTph_sum + photoTempFunc(j) * X(j)
1131 diags(ifnut+j-1) = limitnut
1132 fnut_sum = fnut_sum + limitnut * X(j)
1133 #endif
1134
1135 #endif /* DARWIN_MACROMOLECULAR_GROWTH */
1136
c7b6c66d45 Oliv*1137 photoSyn = PC*X(j)
8fbfd1f382 Oliv*1138
8752612d6f Oliv*1139
1140
1141
1142
1143
1144 Xe = MAX(0 _d 0, X(j) - Xmin(j))
1145 respir_c = respRate(j)*Xe*reminTempFunc
1146 respir = respir + respir_c
c7b6c66d45 Oliv*1147 uptakeDIC = photoSyn - respir_c
fd20fa810c Oliv*1148 #ifdef DARWIN_DIAG_PERTYPE
1149 diags(iResp+j-1) = respir_c
1150 #endif
c7b6c66d45 Oliv*1151
1152
1153
1154
1155 #ifdef DARWIN_ALLOW_CSTORE
1156
1157
1158
1159
1160
1161 growth = MIN(uptakeDIC, Dmd_min)
086a45f245 Oliv*1162 excretC = MAX(0 _d 0, uptakeDIC - growth)*FracExudeC(j)
c7b6c66d45 Oliv*1163 excC = excC + excretC
1164 storeC = uptakeDIC - growth - excretC
1165 #else /* without CSTORE */
1166 growth = uptakeDIC
1167 #endif /* DARWIN_ALLOW_CSTORE */
1168
1169
8fbfd1f382 Oliv*1170 #ifdef DARWIN_ALLOW_GEIDER
76f7482618 Oliv*1171 # ifdef DARWIN_ALLOW_CHLQUOTA
1172 # ifdef DARWIN_ALLOW_NQUOTA
8fbfd1f382 Oliv*1173
1174 IF (PARtot .GT. PARmin) THEN
1175 IF (alpha_I*chl2c .GT. 0.0 _d 0) THEN
c9c2f3a0a4 Oliv*1176 rhochl = Chl2Nmax*PC/(alpha_I*chl2c)
8fbfd1f382 Oliv*1177 ELSE
1178 rhochl = Chl2Nmax
1179 ENDIF
1180 synthChl = rhochl*uptakeN
1181 ELSE
1182 synthChl = 0 _d 0
1183 ENDIF
9de618f89c Oliv*1184
8fbfd1f382 Oliv*1185 uptakeDIC = uptakeDIC - synthcost*uptakeN
c7b6c66d45 Oliv*1186 growth = growth - synthcost*uptakeN
76f7482618 Oliv*1187 # else /* not DARWIN_ALLOW_NQUOTA */
1188 # ifdef DARWIN_GEIDER_RHO_SYNTH
8fbfd1f382 Oliv*1189 IF (alpha_I .GT. 0.0 _d 0 .AND. acclim .GT. 0.0 _d 0) THEN
c7b6c66d45 Oliv*1190
c9c2f3a0a4 Oliv*1191 rhochl = Chl2Cmax(j)*PC/(alpha_I*acclim)
8fbfd1f382 Oliv*1192 ELSE
1193 rhochl = 0.0 _d 0
1194 ENDIF
c7b6c66d45 Oliv*1195 synthChl = rhochl*growth +
8fbfd1f382 Oliv*1196 & acclimtimescl(j)*(acclim-chl2c)*X(j)
76f7482618 Oliv*1197 # else
c7b6c66d45 Oliv*1198 synthChl = acclim*growth +
8fbfd1f382 Oliv*1199 & acclimtimescl(j)*(acclim-chl2c)*X(j)
76f7482618 Oliv*1200 # endif
1201 # endif /* not DARWIN_ALLOW_NQUOTA */
1202 # else /* not DARWIN_ALLOW_CHLQUOTA */
8fbfd1f382 Oliv*1203 chlout(j) = X(j)*Qc(j)*chl2c
1204 synthChl = 0.0
76f7482618 Oliv*1205 # endif /* DARWIN_ALLOW_CHLQUOTA */
8fbfd1f382 Oliv*1206 #endif /* DARWIN_ALLOW_GEIDER */
9de618f89c Oliv*1207
c7b6c66d45 Oliv*1208
1209
9de618f89c Oliv*1210 #ifndef DARWIN_ALLOW_NQUOTA
c7b6c66d45 Oliv*1211 uptakeN = growth*R_NC(j)
8752612d6f Oliv*1212
1213 IF (uptakeN .GE. 0 _d 0) THEN
1214 uptakeNH4 = uptakeN*fracNH4
1215 uptakeNO2 = uptakeN*fracNO2
1216 uptakeNO3 = uptakeN*fracNO3
1217 ELSE
1218
1219
1220 uptakeNH4 = 0 _d 0
1221 uptakeNO2 = 0 _d 0
1222 uptakeNO3 = uptakeN
1223 ENDIF
9de618f89c Oliv*1224 #endif
1225 #ifndef DARWIN_ALLOW_PQUOTA
c7b6c66d45 Oliv*1226 uptakePO4 = growth*R_PC(j)
9de618f89c Oliv*1227 #endif
1228 #ifndef DARWIN_ALLOW_SIQUOTA
c7b6c66d45 Oliv*1229 uptakeSiO2 = growth*R_SiC(j)
9de618f89c Oliv*1230 #endif
1231 #ifndef DARWIN_ALLOW_FEQUOTA
c7b6c66d45 Oliv*1232 uptakeFeT = growth*R_FeC(j)
9de618f89c Oliv*1233 #endif
1234
c7b6c66d45 Oliv*1235
1236 consumDIC_PIC = consumDIC_PIC + growth*R_PICPOC(j)
8fbfd1f382 Oliv*1237 consumDIC = consumDIC + uptakeDIC
1238 consumNH4 = consumNH4 + uptakeNH4
1239 consumNO2 = consumNO2 + uptakeNO2
1240 consumNO3 = consumNO3 + uptakeNO3
1241 consumPO4 = consumPO4 + uptakePO4
1242 consumSiO2 = consumSiO2 + uptakeSiO2
1243 consumFeT = consumFeT + uptakeFeT
1244
9de618f89c Oliv*1245 diags(iPP) = diags(iPP) + uptakeDIC
ee4178dfbe Oliv*1246 #ifdef DARWIN_DIAG_PERTYPE
9de618f89c Oliv*1247 diags(iPPplank+j-1) = diags(iPPplank+j-1) + uptakeDIC
d5f8f1c735 Oliv*1248 diags(iPCplank+j-1) = diags(iPCplank+j-1) + PC
ee4178dfbe Oliv*1249 #endif
8fbfd1f382 Oliv*1250 IF (diazo(j) .GT. 0.0 _d 0) THEN
1251 diags(iNfix)=diags(iNfix)+uptakeN-uptakeNH4-uptakeNO2-uptakeNO3
1252 ENDIF
c7b6c66d45 Oliv*1253 #ifdef DARWIN_ALLOW_CSTORE
1254 diags(iEX) = diags(iEX) + excretC
1255 diags(iGW) = diags(iGW) + growth
1256 diags(iDN) = diags(iDN) + Dmd_NC
1257 diags(iDP) = diags(iDP) + Dmd_PC
1258 diags(iDFe) = diags(iDFe) + Dmd_FeC
1259 diags(iDSi) = diags(iDSi) + Dmd_SiC
1260 diags(iDmin)= diags(iDmin)+ Dmd_min
1261 #ifdef DARWIN_ALLOW_CSTORE_DIAGS
1262 diags(iEXplank+j-1) = diags(iEXplank+j-1) + excretC
1263 diags(iGWplank+j-1) = diags(iGWplank+j-1) + growth
1264 diags(iDNplank+j-1) = diags(iDNplank+j-1) + Dmd_NC
1265 diags(iDPplank+j-1) = diags(iDPplank+j-1) + Dmd_PC
1266 diags(iDFplank+j-1) = diags(iDFplank+j-1) + Dmd_FeC
1267 diags(iDSplank+j-1) = diags(iDSplank+j-1) + Dmd_SiC
1268 diags(iDminplank+j-1) = diags(iDminplank+j-1) + Dmd_min
1269 #endif
1270 #endif
1271
1272
1273
1274 gTr(ic+j-1)=gTr(ic+j-1) + growth
a092808e6b shlo*1275 #ifdef DARWIN_MACROMOLECULAR_GROWTH
1276 gTr(ic+j-1)=gTr(ic+j-1) - mmX*exQc
1277 gTr(iDOC) = gTr(iDOC) + mmX*exQc
1278 #endif
c7b6c66d45 Oliv*1279 #ifdef DARWIN_ALLOW_CSTORE
1280 gTr(ich+j-1)=gTr(ich+j-1) + storeC
1281 #endif
8fbfd1f382 Oliv*1282 #ifdef DARWIN_ALLOW_NQUOTA
1283 gTr(in+j-1)=gTr(in+j-1) + uptakeN
1284 #endif
1285 #ifdef DARWIN_ALLOW_PQUOTA
1286 gTr(ip+j-1)=gTr(ip+j-1) + uptakePO4
1287 #endif
1288 #ifdef DARWIN_ALLOW_SIQUOTA
1289 gTr(isi+j-1)=gTr(isi+j-1) + uptakeSiO2
1290 #endif
1291 #ifdef DARWIN_ALLOW_FEQUOTA
1292 gTr(ife+j-1)=gTr(ife+j-1) + uptakeFeT
1293 #endif
1294 #ifdef DARWIN_ALLOW_CHLQUOTA
1295 gTr(iChl+j-1)=gTr(iChl+j-1) + synthChl
1296 #endif
1297
1298 #ifdef DARWIN_DEBUG
6559acf5ff Oliv*1299 IF (k_debug.GT.0) THEN
1300 print*,'uptake',myiter,k_debug,j,
8fbfd1f382 Oliv*1301 & uptakeDIC,
1302 & uptakeNH4,
1303 & uptakeNO2,
1304 & uptakeNO3,
1305 & uptakeN,
1306 & uptakePO4,
1307 & uptakeSiO2,
1308 & uptakeFeT
1309 ENDIF
1310 #endif
1311
b6fafcd98a Oliv*1312 X_photo = X_photo + X(j)
1313
8fbfd1f382 Oliv*1314
1315 ENDIF
1316
1317 ENDDO
1318
b6fafcd98a Oliv*1319 IF (X_photo .GT. 0 _d 0) THEN
1320 fIph_sum = fIph_sum / X_photo
1321 fTph_sum = fTph_sum / X_photo
1322 fnut_sum = fnut_sum / X_photo
1323 ELSE
1324 fIph_sum = 0 _d 0
1325 fTph_sum = 0 _d 0
1326 fnut_sum = 0 _d 0
1327 ENDIF
1328 diags(ifIphavg) = fIph_sum
1329 diags(ifTphavg) = fTph_sum
1330 diags(ifnutavg) = fnut_sum
a092808e6b shlo*1331
8fbfd1f382 Oliv*1332
c7b6c66d45 Oliv*1333
8fbfd1f382 Oliv*1334
1335 DO j = 1, nplank
1336 IF (bactType(j) .NE. 0) THEN
1337
1338 uptakeO2 = 0. _d 0
1339 uptakeNO3 = 0. _d 0
1340 uptakePOC = 0. _d 0
1341 uptakePON = 0. _d 0
1342 uptakePOP = 0. _d 0
1343 uptakePOFe = 0. _d 0
1344 uptakeDOC = 0. _d 0
1345 uptakeDON = 0. _d 0
1346 uptakeDOP = 0. _d 0
1347 uptakeDOFe = 0. _d 0
1348 hydrolPOC = 0. _d 0
1349 hydrolPON = 0. _d 0
1350 hydrolPOP = 0. _d 0
1351 hydrolPOFe = 0. _d 0
1352 respPOC = 0. _d 0
1353 respPON = 0. _d 0
1354 respPOP = 0. _d 0
1355 respPOFe = 0. _d 0
1356 respDOC = 0. _d 0
1357 respDON = 0. _d 0
1358 respDOP = 0. _d 0
1359 respDOFe = 0. _d 0
1360 growth = 0. _d 0
1361
1362 IF (isAerobic(j) .NE. 0) THEN
1363 muO = yieldO2(j)*pcoefO2*O2
1364 ELSEIF (isDenit(j) .NE. 0) THEN
3f05298721 Oliv*1365 muO = yieldNO3(j)*pmaxDIN*NO3/(NO3 + ksatDIN)*hetTempFunc(j)
8fbfd1f382 Oliv*1366 ENDIF
1367
1368
1369 IF (bactType(j) .EQ. 1) THEN
1370
3f05298721 Oliv*1371 PCm = yield(j)*PCmax(j)*hetTempFunc(j)
8fbfd1f382 Oliv*1372 muPON = PCm*PON/(PON + ksatPON(j))
1373 muPOC = PCm*POC/(POC + ksatPOC(j))
1374 muPOP = PCm*POP/(POP + ksatPOP(j))
1375 muPOFe = PCm*POFe/(POFe + ksatPOFe(j))
1376 mu = MIN(muPON, muPOC, muPOP, muPOFe, muO)
1377
1378 growth = mu*X(j)
1379
1380 uptakePOC = alpha_hydrol*growth/yield(j)
1381 uptakePON = uptakePOC*R_NC(j)
1382 uptakePOP = uptakePOC*R_PC(j)
1383 uptakePOFe = uptakePOC*R_FeC(j)
1384
1385 uptakeO2 = isAerobic(j)*growth/yieldO2(j)
1386 uptakeNO3 = isDenit(j)*growth/yieldNO3(j)
1387
1388
1389 hydrolPOC = (alpha_hydrol-1)*growth/yield(j)
1390 hydrolPON = hydrolPOC*R_NC(j)
1391 hydrolPOP = hydrolPOC*R_PC(j)
1392 hydrolPOFe = hydrolPOC*R_FeC(j)
1393
1394
1395 respPOC = growth*(1/yield(j)-1)
1396 respPON = respPOC*R_NC(j)
1397 respPOP = respPOC*R_PC(j)
1398 respPOFe = respPOC*R_FeC(j)
1399
1400
1401 ELSEIF (bactType(j) .EQ. 2) THEN
1402
3f05298721 Oliv*1403 PCm = yield(j)*PCmax(j)*hetTempFunc(j)
8fbfd1f382 Oliv*1404 muDON = PCm*DON/(DON + ksatDON(j))
1405 muDOC = PCm*DOC/(DOC + ksatDOC(j))
1406 muDOP = PCm*DOP/(DOP + ksatDOP(j))
1407 muDOFe = PCm*DOFe/(DOFe + ksatDOFe(j))
1408 mu = MIN(muDON, muDOC, muDOP, muDOFe, muO)
1409
1410 growth = mu*X(j)
1411
1412 uptakeDOC = growth/yield(j)
1413 uptakeDON = uptakeDOC*R_NC(j)
1414 uptakeDOP = uptakeDOC*R_PC(j)
1415 uptakeDOFe = uptakeDOC*R_FeC(j)
1416 uptakeO2 = isAerobic(j)*growth/yieldO2(j)
1417 uptakeNO3 = isDenit(j)*growth/yieldNO3(j)
1418
1419
1420 respDOC = growth*(1/yield(j)-1)
1421 respDON = respDOC*R_NC(j)
1422 respDOP = respDOC*R_PC(j)
1423 respDOFe = respDOC*R_FeC(j)
1424
1425 ENDIF
1426
5e411acc9e Oliv*1427 diags(iDenitN) = diags(iDenitN) + uptakeNO3
ee4178dfbe Oliv*1428 #ifdef DARWIN_DIAG_PERTYPE
a93256cee4 Oliv*1429 diags(iHPplank+j-1) = diags(iHPplank+j-1) + growth
1430 diags(iHCplank+j-1) = diags(iHCplank+j-1) + mu
ee4178dfbe Oliv*1431 #endif
8fbfd1f382 Oliv*1432
90de433d90 Oliv*1433 gTr(ic+j-1) = gTr(ic+j-1) + growth
1434
1435
1436 #ifdef DARWIN_ALLOW_NQUOTA
1437 gTr(in+j-1) = gTr(in+j-1) + growth*R_NC(j)
1438 #endif
1439 #ifdef DARWIN_ALLOW_PQUOTA
1440 gTr(ip+j-1) = gTr(ip+j-1) + growth*R_PC(j)
1441 #endif
1442 #ifdef DARWIN_ALLOW_FEQUOTA
1443 gTr(ife+j-1) = gTr(ife+j-1) + growth*R_FeC(j)
1444 #endif
8fbfd1f382 Oliv*1445
1446
1447 consumNO3 = consumNO3 + uptakeNO3
1448
1449
1450 consumO2 = consumO2 + uptakeO2
1451
1452 consumDOC = consumDOC + uptakeDOC
1453 consumDON = consumDON + uptakeDON
1454 consumDOP = consumDOP + uptakeDOP
1455 consumDOFe = consumDOFe + uptakeDOFe
1456
1457 consumPOC = consumPOC + uptakePOC
1458 consumPON = consumPON + uptakePON
1459 consumPOP = consumPOP + uptakePOP
1460 consumPOFe = consumPOFe + uptakePOFe
1461
1462 reminPOC = reminPOC + respPOC
1463 reminPON = reminPON + respPON
1464 reminPOP = reminPOP + respPOP
1465 reminPOFe = reminPOFe + respPOFe
1466
1467 solubilPOC = solubilPOC + hydrolPOC
1468 solubilPON = solubilPON + hydrolPON
1469 solubilPOP = solubilPOP + hydrolPOP
1470 solubilPOFe = solubilPOFe + hydrolPOFe
1471
1472 reminDOC = reminDOC + respDOC
1473 reminDON = reminDON + respDON
1474 reminDOP = reminDOP + respDOP
1475 reminDOFe = reminDOFe + respDOFe
1476
1477 ENDIF
c74953b924 Oliv*1478
8fbfd1f382 Oliv*1479 ENDDO
1480
1481
c7b6c66d45 Oliv*1482
8fbfd1f382 Oliv*1483
1484 gTr(iDIC )=gTr(iDIC ) - consumDIC - consumDIC_PIC
b61dca872c Oliv*1485
1486 diags(iConsDIC) = consumDIC
1487 diags(iConsDIC_PIC) = consumDIC_PIC
1488
8fbfd1f382 Oliv*1489 gTr(iNH4 )=gTr(iNH4 ) - consumNH4
1490 gTr(iNO2 )=gTr(iNO2 ) - consumNO2
1491 gTr(iNO3 )=gTr(iNO3 ) - consumNO3
1492 gTr(iPO4 )=gTr(iPO4 ) - consumPO4
1493 gTr(iSiO2)=gTr(iSiO2) - consumSiO2
1494 gTr(iFeT )=gTr(iFeT ) - consumFeT
1495
c7b6c66d45 Oliv*1496
eff5247c2f Oliv*1497 #ifdef DARWIN_ALLOW_DENIT
1498 IF (O2 .GE. O2crit .OR. NO3 .GE. NO3crit) THEN
1499 #else
1500 IF (.TRUE.) THEN
1501 #endif
a092808e6b shlo*1502 IF (ksatO2remin .GT. 0 _d 0) THEN
1503 tmp = O2/(O2 + ksatO2remin)
1504 ELSE
1505 tmp = 1 _d 0
1506 ENDIF
8fbfd1f382 Oliv*1507
1508
a092808e6b shlo*1509
1510 respDOC = reminTempFunc*KDOC *DOC*tmp
1511 respDON = reminTempFunc*KDON *DON*tmp
1512 respDOP = reminTempFunc*KDOP *DOP*tmp
1513 respDOFe = reminTempFunc*KDOFe*DOFe*tmp
1514 respPOC = reminTempFunc*KPOC *POC*tmp
1515 respPON = reminTempFunc*KPON *PON*tmp
1516 respPOP = reminTempFunc*KPOP *POP*tmp
1517 respPOSi = reminTempFunc*KPOSi*POSi*tmp
1518 respPOFe = reminTempFunc*KPOFe*POFe*tmp
8fbfd1f382 Oliv*1519
1520 consumDOC = consumDOC + respDOC
1521 consumDON = consumDON + respDON
1522 consumDOP = consumDOP + respDOP
1523 consumDOFe = consumDOFe + respDOFe
1524 consumPOC = consumPOC + respPOC
1525 consumPON = consumPON + respPON
1526 consumPOP = consumPOP + respPOP
1527 consumPOSi = consumPOSi + respPOSi
1528 consumPOFe = consumPOFe + respPOFe
1529
1530 reminDOC = reminDOC + respDOC
1531 reminDON = reminDON + respDON
1532 reminDOP = reminDOP + respDOP
1533 reminDOFe = reminDOFe + respDOFe
1534 reminPOC = reminPOC + respPOC
1535 reminPON = reminPON + respPON
1536 reminPOP = reminPOP + respPOP
1537 reminPOSi = reminPOSi + respPOSi
1538 reminPOFe = reminPOFe + respPOFe
eff5247c2f Oliv*1539
1540 ENDIF
8fbfd1f382 Oliv*1541
1542 #ifdef DARWIN_ALLOW_CARBON
6100320f2e Oliv*1543 IF (O2 .GE. O2crit) THEN
eff5247c2f Oliv*1544 consumO2 = consumO2 + respDOP*R_OP
8fbfd1f382 Oliv*1545 #ifndef DARWIN_ALLOW_CDOM
eff5247c2f Oliv*1546 consumO2 = consumO2 + respPOP*R_OP
8fbfd1f382 Oliv*1547 #endif
eff5247c2f Oliv*1548 ENDIF
8fbfd1f382 Oliv*1549 #endif
1550
b5b44fea51 Oliv*1551 IF (darwin_disscSelect .EQ. 2) THEN
1552
1553 IF (omegaCl .LT. 1.0 _d 0) THEN
1554 IF (omegaCl .GT. 0.8272 _d 0) THEN
1555 disscPIC = PIC * 5.22 _d -9 * (1 _d 0 - omegaCl)**0.11 _d 0
1556 ELSE
1557 disscPIC = PIC * 1.65 _d -5 * (1 _d 0 - omegaCl)**4.7 _d 0
1558 ENDIF
1559 ELSE
1560 disscPIC = 0.0 _d 0
1561 ENDIF
1562 ELSEIF (darwin_disscSelect .EQ. 1) THEN
ba0b6d5d33 Oliv*1563
1564 IF (omegaCl .LT. 1.0 _d 0) THEN
1565 disscPIC = PIC*darwin_KeirCoeff
1566 & *(1 _d 0 - omegaCl)**darwin_KeirExp
1567 ELSE
1568 disscPIC = 0 _d 0
1569 ENDIF
1570 ELSE
1571 disscPIC = Kdissc*PIC
1572 ENDIF
8fbfd1f382 Oliv*1573
c7b6c66d45 Oliv*1574
8fbfd1f382 Oliv*1575
1576 prodNO2 = knita*NH4
1577 prodNO3 = knitb*NO2
1578 IF (PAR_oxi .NE. 0.0 _d 0) THEN
086a45f245 Oliv*1579 prodNO2 = prodNO2*MAX(0 _d 0, 1.0 - PARtot/PAR_oxi)
1580 prodNO3 = prodNO3*MAX(0 _d 0, 1.0 - PARtot/PAR_oxi)
8fbfd1f382 Oliv*1581 ENDIF
1582
c7b6c66d45 Oliv*1583
8fbfd1f382 Oliv*1584 #ifdef DARWIN_ALLOW_CDOM
1c72adde5c Oliv*1585 # ifdef DARWIN_CDOM_UNITS_CARBON
1586 reminPOC_CDOM = fracCDOM*reminPOC
1587 reminPOP_CDOM = R_PC_CDOM*reminPOC_CDOM
1588 reminPON_CDOM = R_NC_CDOM*reminPOC_CDOM
1589 reminPOFe_CDOM = R_FeC_CDOM*reminPOC_CDOM
1590 # else
8fbfd1f382 Oliv*1591 reminPOP_CDOM = fracCDOM*reminPOP
1592 reminPOC_CDOM = R_CP_CDOM*reminPOP_CDOM
1593 reminPON_CDOM = R_NP_CDOM*reminPOP_CDOM
1594 reminPOFe_CDOM = R_FeP_CDOM*reminPOP_CDOM
1c72adde5c Oliv*1595 # endif
eff5247c2f Oliv*1596
1597 tmp = CDOMdegrd
1598 #ifdef DARWIN_ALLOW_DENIT
1599 IF (O2 .LT. O2crit .AND. NO3 .LT. NO3crit) THEN
1600 tmp = 0 _d 0
1601 ENDIF
1602 #endif
1603
1604 tmp = tmp + CDOMbleach*MIN(1.0 _d 0, PARtot/PARCDOM)
1c72adde5c Oliv*1605 # ifdef DARWIN_CDOM_UNITS_CARBON
1606 degrCDOM_DOC = reminTempFunc*CDOM*tmp
1607 degrCDOM_DOP = R_PC_CDOM * degrCDOM_DOC
1608 degrCDOM_DON = R_NC_CDOM * degrCDOM_DOC
1609 degrCDOM_DOFe = R_FeC_CDOM * degrCDOM_DOC
1610 # else
eff5247c2f Oliv*1611 degrCDOM_DOP = reminTempFunc*CDOM*tmp
8fbfd1f382 Oliv*1612 degrCDOM_DOC = R_CP_CDOM * degrCDOM_DOP
1613 degrCDOM_DON = R_NP_CDOM * degrCDOM_DOP
1614 degrCDOM_DOFe = R_FeP_CDOM * degrCDOM_DOP
1c72adde5c Oliv*1615 # endif
8fbfd1f382 Oliv*1616 #endif
1617
c7b6c66d45 Oliv*1618
8fbfd1f382 Oliv*1619
1620 #ifdef DARWIN_ALLOW_CARBON
1621
1622 gTr(iO2 )=gTr(iO2 ) + R_OP*consumPO4
5e411acc9e Oliv*1623 diags(iProdO2) = diags(iProdO2) + R_OP*consumPO4
8fbfd1f382 Oliv*1624
6100320f2e Oliv*1625 IF (O2 .GE. O2crit) THEN
8fbfd1f382 Oliv*1626 gTr(iO2)=gTr(iO2) - consumO2
5e411acc9e Oliv*1627 diags(iConsO2) = diags(iConsO2) + consumO2
8fbfd1f382 Oliv*1628 ENDIF
1629
1630 gTr(iALK)=gTr(iALK) - (prodNO3 - consumNO3)
1631 & - 2.0 _d 0*(consumDIC_PIC - disscPIC)
5e411acc9e Oliv*1632 diags(iSrcAlk) = diags(iSrcAlk) - (prodNO3 - consumNO3)
1633 & - 2.0 _d 0*(consumDIC_PIC - disscPIC)
8fbfd1f382 Oliv*1634 #endif /* DARWIN_ALLOW_CARBON */
1635
1636 gTr(iDIC )=gTr(iDIC ) + reminDOC + disscPIC
b61dca872c Oliv*1637
1638 diags(iReminDIC_DOC) = reminDOC
1639 diags(iDisscDIC_PIC) = disscPIC
1640
8fbfd1f382 Oliv*1641 gTr(iNH4 )=gTr(iNH4 ) + reminDON - prodNO2
1642 gTr(iNO2 )=gTr(iNO2 ) + prodNO2 - prodNO3
1643 gTr(iNO3 )=gTr(iNO3 ) + prodNO3
1644 #ifdef DARWIN_ALLOW_DENIT
1645 IF (O2 .LT. O2crit) THEN
1646 denitNH4 = reminDON
1647 denit = denit_NP*reminDOP
1648 #ifndef DARWIN_ALLOW_CDOM
1649 denitNH4 = denitNH4 + reminPON
1650 denit = denit + denit_NP*reminPOP
1651 #endif
1652 diags(iDenit) = denit
1653 gTr(iNH4)=gTr(iNH4) - denitNH4
1654 gTr(iNO3)=gTr(iNO3) - denit_NO3/denit_np*denit
1655 gTr(iALK)=gTr(iALK) + denit_NO3/denit_np*denit
5e411acc9e Oliv*1656 diags(iDenitN)=diags(iDenitN)+denitNH4+denit_NO3/denit_np*denit
1657 diags(iSrcAlk)=diags(iSrcAlk)+denit_NO3/denit_np*denit
8fbfd1f382 Oliv*1658 ENDIF
1659 #endif /* DARWIN_ALLOW_DENIT */
1660
1661 gTr(iPO4 )=gTr(iPO4 ) + reminDOP
1662 gTr(iFeT )=gTr(iFeT ) + reminDOFe
1663 gTr(iSiO2)=gTr(iSiO2) + reminPOSi
1664
1665
1666 gTr(iDOC )=gTr(iDOC ) + solubilPOC - consumDOC
c7b6c66d45 Oliv*1667 #ifdef DARWIN_ALLOW_CSTORE
1668 gTr(iDOC )=gTr(iDOC ) + excC
1669 #endif
8fbfd1f382 Oliv*1670 gTr(iDON )=gTr(iDON ) + solubilPON - consumDON
1671 gTr(iDOP )=gTr(iDOP ) + solubilPOP - consumDOP
1672 gTr(iDOFe)=gTr(iDOFe) + solubilPOFe - consumDOFe
1673
1674 gTr(iPIC )=gTr(iPIC ) - disscPIC
1675 gTr(iPOC )=gTr(iPOC ) - consumPOC
1676 gTr(iPON )=gTr(iPON ) - consumPON
1677 gTr(iPOP )=gTr(iPOP ) - consumPOP
1678 gTr(iPOFe)=gTr(iPOFe) - consumPOFe
1679 gTr(iPOSi)=gTr(iPOSi) - consumPOSi
1680
1681 #ifdef DARWIN_ALLOW_CDOM
1682 gTr(iDOC )=gTr(iDOC ) + reminPOC - reminPOC_CDOM + degrCDOM_DOC
1683 gTr(iDON )=gTr(iDON ) + reminPON - reminPON_CDOM + degrCDOM_DON
1684 gTr(iDOP )=gTr(iDOP ) + reminPOP - reminPOP_CDOM + degrCDOM_DOP
1685 gTr(iDOFe)=gTr(iDOFe) + reminPOFe - reminPOFe_CDOM + degrCDOM_DOFe
1686
1c72adde5c Oliv*1687 # ifdef DARWIN_CDOM_UNITS_CARBON
1688 gTr(iCDOM)=gTr(iCDOM) + reminPOC_CDOM - degrCDOM_DOC
1689 # else
8fbfd1f382 Oliv*1690 gTr(iCDOM)=gTr(iCDOM) + reminPOP_CDOM - degrCDOM_DOP
1c72adde5c Oliv*1691 # endif
8fbfd1f382 Oliv*1692 #else
1693 gTr(iDIC )=gTr(iDIC ) + reminPOC
b61dca872c Oliv*1694
1695 diags(iReminDIC_POC) = reminPOC
1696
8fbfd1f382 Oliv*1697 gTr(iNH4 )=gTr(iNH4 ) + reminPON
1698 gTr(iPO4 )=gTr(iPO4 ) + reminPOP
1699 gTr(iFeT )=gTr(iFeT ) + reminPOFe
1700 #endif /* DARWIN_ALLOW_CDOM */
1701
b61dca872c Oliv*1702 diags(iConsALK) = (prodNO3 - consumNO3)
1703 & +2.0 _d 0*(consumDIC_PIC - disscPIC)
8fbfd1f382 Oliv*1704 diags(iConsDIN) = consumNH4 + consumNO2 + consumNO3
b61dca872c Oliv*1705 diags(iConsNO3) = consumNO3
1706 diags(iConsNO2) = consumNO2
1707 diags(iConsNH4) = consumNH4
8fbfd1f382 Oliv*1708 diags(iConsPO4) = consumPO4
1709 diags(iConsSi) = consumSiO2
1710 diags(iConsFe) = consumFeT
1711
c7b6c66d45 Oliv*1712
1713
8fbfd1f382 Oliv*1714
1715 DO j=1,nplank
1716 preygraz(j) = 0.0
1717 preygrazexp(j) = 0.0
a93256cee4 Oliv*1718 grazrate(j) = 0.0
8fbfd1f382 Oliv*1719 predgrazc(j) = 0.0
5e7acb36b1 daat*1720 sumprey(j) = 0.0
8fbfd1f382 Oliv*1721 #ifdef DARWIN_ALLOW_NQUOTA
1722 predgrazn(j) = 0.0
1723 #endif
1724 #ifdef DARWIN_ALLOW_PQUOTA
1725 predgrazp(j) = 0.0
1726 #endif
1727 #ifdef DARWIN_ALLOW_FEQUOTA
1728 predgrazfe(j) = 0.0
1729 #endif
1730 ENDDO
1731 graz2POC = 0.0
1732 graz2PON = 0.0
1733 graz2POP = 0.0
1734 graz2POSI = 0.0
1735 graz2POFE = 0.0
1736 graz2OC = 0.0
1737 graz2ON = 0.0
1738 graz2OP = 0.0
1739 graz2OFE = 0.0
1740 graz2PIC = 0.0
1741
1742 regQn = 1.0
1743 regQp = 1.0
1744 regQfe = 1.0
1745 regQc = 1.0
1746
1747
1748 DO jz = 1, nplank
1749 IF (isPred(jz).NE.0) THEN
1750
1751
1752 regQc = 1.0 _d 0
1753 #ifdef DARWIN_ALLOW_NQUOTA
086a45f245 Oliv*1754 regQn = MAX(0 _d 0, MIN(1 _d 0, (Qnmax(jz)-Qn(jz))/
1755 & (Qnmax(jz)-Qnmin(jz)) ))
8fbfd1f382 Oliv*1756 regQc = MIN(regQc, 1.0 _d 0 - regQn)
1757 regQn = regQn**hillnumGraz
1758 #endif
1759 #ifdef DARWIN_ALLOW_PQUOTA
086a45f245 Oliv*1760 regQp = MAX(0 _d 0, MIN(1 _d 0, (Qpmax(jz)-Qp(jz))/
1761 & (Qpmax(jz)-Qpmin(jz)) ))
8fbfd1f382 Oliv*1762 regQc = MIN(regQc, 1.0 _d 0 - regQp)
1763 regQp = regQp**hillnumGraz
1764 #endif
1765 #ifdef DARWIN_ALLOW_FEQUOTA
086a45f245 Oliv*1766 regQfe= MAX(0 _d 0, MIN(1 _d 0, (Qfemax(jz)-Qfe(jz))/
1767 & (Qfemax(jz)-Qfemin(jz)) ))
8fbfd1f382 Oliv*1768 regQc = MIN(regQc, 1.0 _d 0 - regQfe)
1769 regQfe=regQfe**hillnumGraz
1770 #endif
1771 regQc = regQc**hillnumGraz
1772
1773 sumpref = 0.0
1774 DO jp = 1, nplank
1775 IF (palat(jp,jz).NE.0 _d 0) THEN
5e7acb36b1 daat*1776 sumprey(jz) = sumprey(jz) + palat(jp,jz)*X(jp)
8fbfd1f382 Oliv*1777 #ifdef DARWIN_GRAZING_SWITCH
1778 sumpref = sumpref + palat(jp,jz)*palat(jp,jz)*X(jp)*X(jp)
1779 #else
1780 sumpref = sumpref + palat(jp,jz)*X(jp)
1781 #endif
1782 ENDIF
1783 ENDDO
5e7acb36b1 daat*1784 sumprey(jz) = MAX(0 _d 0, sumprey(jz) - phygrazmin)
8fbfd1f382 Oliv*1785 sumpref = MAX(phygrazmin, sumpref)
a93256cee4 Oliv*1786 tmp = grazemax(jz)*grazTempFunc(jz)**tempGraz(jz)*
5e7acb36b1 daat*1787 & (sumprey(jz)**hollexp/
1788 & (sumprey(jz)**hollexp + kgrazesat(jz)**hollexp))*
1789 & (1.0 - EXP(-inhib_graz*sumprey(jz)))**inhib_graz_exp
8fbfd1f382 Oliv*1790
1791 predexpc = 0.0 _d 0
1792 predexpn = 0.0 _d 0
1793 predexpp = 0.0 _d 0
1794 predexpfe = 0.0 _d 0
1795 DO jp = 1, nplank
1796 IF (palat(jp,jz).NE.0 _d 0) THEN
1797 #ifdef DARWIN_GRAZING_SWITCH
1798 grazphy = tmp*palat(jp,jz)*palat(jp,jz)*X(jp)*X(jp)/sumpref
1799 #else
1800 grazphy = tmp*palat(jp,jz)*X(jp)/sumpref
1801 #endif
a93256cee4 Oliv*1802 grazrate(jz) = grazrate(jz) + grazphy*asseff(jp,jz)*regQc
1803 grazphy = grazphy*X(jz)
8fbfd1f382 Oliv*1804
1805 expFrac = ExportFracPreyPred(jp,jz)
1806
1807 preygraz(jp) = preygraz(jp) + grazphy
1808 preygrazexp(jp) = preygrazexp(jp) + expFrac*grazphy
1809
c7b6c66d45 Oliv*1810 predgrazc(jz) = predgrazc(jz) + grazphy*asseff(jp,jz)*
1811 & regQc*Qctot(jp)
1812 predexpc = predexpc + expFrac*grazphy*asseff(jp,jz)*
1813 & regQc*Qctot(jp)
8fbfd1f382 Oliv*1814 #ifdef DARWIN_ALLOW_NQUOTA
1815 predgrazn(jz) = predgrazn(jz) + grazphy*asseff(jp,jz)*
1816 & regQn*Qn(jp)
1817 predexpn = predexpn + expFrac*grazphy*asseff(jp,jz)*
1818 & regQn*Qn(jp)
1819 #endif
1820 #ifdef DARWIN_ALLOW_PQUOTA
1821 predgrazp(jz) = predgrazp(jz) + grazphy*asseff(jp,jz)*
1822 & regQp*Qp(jp)
1823 predexpp = predexpp + expFrac*grazphy*asseff(jp,jz)*
1824 & regQp*Qp(jp)
1825 #endif
1826 #ifdef DARWIN_ALLOW_FEQUOTA
1827 predgrazfe(jz) = predgrazfe(jz) + grazphy*asseff(jp,jz)*
1828 & regQfe*Qfe(jp)
1829 predexpfe = predexpfe + expFrac*grazphy*asseff(jp,jz)*
1830 & regQfe*Qfe(jp)
1831 #endif
1832 ENDIF
1833 ENDDO
1834
1835
1836 graz2OC = graz2OC - predgrazc(jz)
1837 graz2POC = graz2POC - predexpc
1838
1839 #ifdef DARWIN_ALLOW_NQUOTA
1840 graz2ON = graz2ON - predgrazn(jz)
1841 graz2PON = graz2PON - predexpn
1842 #else
1843 graz2ON = graz2ON - predgrazc(jz)*Qn(jz)
1844 graz2PON = graz2PON - predexpc *Qn(jz)
1845 #endif
1846
1847 #ifdef DARWIN_ALLOW_PQUOTA
1848 graz2OP = graz2OP - predgrazp(jz)
1849 graz2POP = graz2POP - predexpp
1850 #else
1851 graz2OP = graz2OP - predgrazc(jz)*Qp(jz)
1852 graz2POP = graz2POP - predexpc *Qp(jz)
1853 #endif
1854
1855 #ifdef DARWIN_ALLOW_FEQUOTA
1856 graz2OFe = graz2OFe - predgrazfe(jz)
1857 graz2POFe = graz2POFe - predexpfe
1858 #else
1859 graz2OFe = graz2OFe - predgrazc(jz)*Qfe(jz)
1860 graz2POFe = graz2POFe - predexpc *Qfe(jz)
1861 #endif
1862
1863 ENDIF
1864
1865 ENDDO
1866
1867 DO jp = 1, nplank
1868 IF (isPrey(jp).NE.0) THEN
c7b6c66d45 Oliv*1869 graz2OC = graz2OC + preygraz(jp)*Qctot(jp)
8fbfd1f382 Oliv*1870 graz2ON = graz2ON + preygraz(jp)*Qn (jp)
1871 graz2OP = graz2OP + preygraz(jp)*Qp (jp)
1872 graz2POSi = graz2POSi + preygraz(jp)*Qsi(jp)
1873 graz2OFe = graz2OFe + preygraz(jp)*Qfe(jp)
1874 graz2PIC = graz2PIC + preygraz(jp)*R_PICPOC(jp)
1875
c7b6c66d45 Oliv*1876 graz2POC = graz2POC + preygrazexp(jp)*Qctot(jp)
8fbfd1f382 Oliv*1877 graz2PON = graz2PON + preygrazexp(jp)*Qn (jp)
1878 graz2POP = graz2POP + preygrazexp(jp)*Qp (jp)
1879 graz2POFe = graz2POFe + preygrazexp(jp)*Qfe(jp)
1880 ENDIF
1881 ENDDO
1882
c7b6c66d45 Oliv*1883
8fbfd1f382 Oliv*1884
1885 gTr(iDOC )=gTr(iDOC ) + graz2OC - graz2POC
1886 gTr(iDON )=gTr(iDON ) + graz2ON - graz2PON
1887 gTr(iDOP )=gTr(iDOP ) + graz2OP - graz2POP
1888 gTr(iDOFe)=gTr(iDOFe) + graz2OFe - graz2POFe
1889 gTr(iPOC )=gTr(iPOC ) + graz2POC
1890 gTr(iPON )=gTr(iPON ) + graz2PON
1891 gTr(iPOP )=gTr(iPOP ) + graz2POP
1892 gTr(iPOSi)=gTr(iPOSi) + graz2POSi
1893 gTr(iPOFe)=gTr(iPOFe) + graz2POFe
1894 gTr(iPIC )=gTr(iPIC ) + graz2PIC
1895 #ifdef DARWIN_ALLOW_CDOM
1c72adde5c Oliv*1896 # ifdef DARWIN_CDOM_UNITS_CARBON
1897 graz2CDOM = fracCDOM*(graz2OC - graz2POC)
1898 # else
8fbfd1f382 Oliv*1899 graz2CDOM = fracCDOM*(graz2OP - graz2POP)
1c72adde5c Oliv*1900 # endif
8fbfd1f382 Oliv*1901 gTr(iCDOM)=gTr(iCDOM) + graz2CDOM
1c72adde5c Oliv*1902 # ifdef DARWIN_CDOM_UNITS_CARBON
1903 gTr(iDOC )=gTr(iDOC ) - graz2CDOM
1904 gTr(iDON )=gTr(iDON ) - R_NC_CDOM*graz2CDOM
1905 gTr(iDOP )=gTr(iDOP ) - R_PC_CDOM*graz2CDOM
1906 gTr(iDOFe)=gTr(iDOFe) - R_FeC_CDOM*graz2CDOM
1907 # else
8fbfd1f382 Oliv*1908 gTr(iDOC )=gTr(iDOC ) - R_CP_CDOM*graz2CDOM
1909 gTr(iDON )=gTr(iDON ) - R_NP_CDOM*graz2CDOM
1910 gTr(iDOP )=gTr(iDOP ) - graz2CDOM
1911 gTr(iDOFe)=gTr(iDOFe) - R_FeP_CDOM*graz2CDOM
1c72adde5c Oliv*1912 # endif
8fbfd1f382 Oliv*1913 #endif
1914
1915 DO jp = 1, nplank
1916 IF (isPrey(jp).NE.0) THEN
1917 gTr(ic+jp-1)= gTr(ic+jp-1) - preygraz(jp)
1918 #ifdef DARWIN_ALLOW_NQUOTA
1919 gTr(in+jp-1)=gTr(in+jp-1) - preygraz(jp)*Qn(jp)
1920 #endif
1921 #ifdef DARWIN_ALLOW_PQUOTA
1922 gTr(ip+jp-1)=gTr(ip+jp-1) - preygraz(jp)*Qp(jp)
1923 #endif
1924 #ifdef DARWIN_ALLOW_SIQUOTA
1925 gTr(isi+jp-1)=gTr(isi+jp-1) - preygraz(jp)*Qsi(jp)
1926 #endif
1927 #ifdef DARWIN_ALLOW_FEQUOTA
1928 gTr(ife+jp-1)=gTr(ife+jp-1) - preygraz(jp)*Qfe(jp)
1929 #endif
1930 ENDIF
1931 ENDDO
1932 #ifdef DARWIN_ALLOW_CHLQUOTA
1933 DO jp = 1, nPhoto
1934 IF (isPrey(jp).NE.0) THEN
1935 gTr(iChl+jp-1)=gTr(iChl+jp-1) - preygraz(jp)*QChl(jp)
1936 ENDIF
1937 ENDDO
1938 #endif
c7b6c66d45 Oliv*1939 #ifdef DARWIN_ALLOW_CSTORE
1940 DO jp = 1, nPhoto
1941 IF (isPrey(jp).NE.0) THEN
1942 gTr(ich+jp-1)=gTr(ich+jp-1) - preygraz(jp)*Qch(jp)
1943 ENDIF
1944 ENDDO
1945 #endif
8fbfd1f382 Oliv*1946
1947 DO jz = 1, nplank
1948 IF (isPred(jz).NE.0) THEN
1949 gTr(ic+jz-1)=gTr(ic+jz-1) + predgrazc(jz)
1950 #ifdef DARWIN_ALLOW_NQUOTA
1951 gTr(in+jz-1)=gTr(in+jz-1) + predgrazn(jz)
1952 #endif
1953 #ifdef DARWIN_ALLOW_PQUOTA
1954 gTr(ip+jz-1)=gTr(ip+jz-1) + predgrazp(jz)
1955 #endif
1956 #ifdef DARWIN_ALLOW_FEQUOTA
1957 gTr(ife+jz-1)=gTr(ife+jz-1) + predgrazfe(jz)
1958 #endif
1959 ENDIF
1960 ENDDO
1961
ee4178dfbe Oliv*1962 #ifdef DARWIN_DIAG_PERTYPE
1963 DO jp = 1, nplank
8fbfd1f382 Oliv*1964 diags(iGRplank+jp-1) = preygraz(jp)
1965 ENDDO
ee4178dfbe Oliv*1966 DO jz = 1, nplank
73aabcca42 Oliv*1967 diags(iGrGn+jz-1) = predgrazc(jz)
a93256cee4 Oliv*1968 diags(iGrGC+jz-1) = grazrate(jz)
73aabcca42 Oliv*1969 ENDDO
ee4178dfbe Oliv*1970 #endif
73aabcca42 Oliv*1971
c7b6c66d45 Oliv*1972
1973
8fbfd1f382 Oliv*1974 exude_DOC = 0.0 _d 0
1975 exude_POC = 0.0 _d 0
1976 exude_DON = 0.0 _d 0
1977 exude_PON = 0.0 _d 0
1978 exude_DOFe = 0.0 _d 0
1979 exude_POFe = 0.0 _d 0
1980 exude_DOP = 0.0 _d 0
1981 exude_POP = 0.0 _d 0
1982 exude_POSi = 0.0 _d 0
1983 exude_PIC = 0.0 _d 0
1984 respir = 0.0 _d 0
8752612d6f Oliv*1985 respirN = 0.0 _d 0
1986 respirP = 0.0 _d 0
1987 respirFe = 0.0 _d 0
1988 respirSi = 0.0 _d 0
5e7acb36b1 daat*1989 mortDVM_DOC = 0.0 _d 0
1990 mortDVM_DON = 0.0 _d 0
1991 mortDVM_DOP = 0.0 _d 0
1992 mortDVM_DOFe = 0.0 _d 0
1993 mortDVM_POC = 0.0 _d 0
1994 mortDVM_PON = 0.0 _d 0
1995 mortDVM_POP = 0.0 _d 0
1996 mortDVM_POFe = 0.0 _d 0
1997 mortDVM_POSi = 0.0 _d 0
8fbfd1f382 Oliv*1998
1999 DO jp = 1, nplank
2000 Xe = MAX(0 _d 0, X(jp) - Xmin(jp))
7e97ec2956 Oliv*2001 mortX = mort(jp)*Xe*mortTempFunc**tempMort(jp)
2002 mortX2= mort2(jp)*Xe*Xe*mort2TempFunc**tempMort2(jp)
8fbfd1f382 Oliv*2003
2004 mort_c(jp) = mortX + mortX2
2005
c7b6c66d45 Oliv*2006 #ifdef DARWIN_ALLOW_CSTORE
2007 exude_DOC=exude_DOC+(1.-ExportFracMort(jp)) *mortX*Qctot(jp)
2008 & +(1.-ExportFracMort2(jp))*mortX2*Qctot(jp)
2009 exude_POC=exude_POC+ ExportFracMort(jp) *mortX*Qctot(jp)
2010 & + ExportFracMort2(jp) *mortX2*Qctot(jp)
2011 #else
8fbfd1f382 Oliv*2012 exude_DOC = exude_DOC + (1.-ExportFracMort(jp)) *mortX
2013 & + (1.-ExportFracMort2(jp))*mortX2
2014 exude_POC = exude_POC + ExportFracMort(jp) *mortX
2015 & + ExportFracMort2(jp) *mortX2
c7b6c66d45 Oliv*2016 #endif
8fbfd1f382 Oliv*2017
2018 exude_DON = exude_DON + (1.-ExportFracMort(jp)) *mortX *Qn(jp)
2019 & + (1.-ExportFracMort2(jp))*mortX2*Qn(jp)
2020 exude_PON = exude_PON + ExportFracMort(jp) *mortX *Qn(jp)
2021 & + ExportFracMort2(jp) *mortX2*Qn(jp)
2022
2023 exude_DOP = exude_DOP + (1.-ExportFracMort(jp)) *mortX *Qp(jp)
2024 & + (1.-ExportFracMort2(jp))*mortX2*Qp(jp)
2025 exude_POP = exude_POP + ExportFracMort(jp) *mortX *Qp(jp)
2026 & + ExportFracMort2(jp) *mortX2*Qp(jp)
2027
2028 exude_DOFe= exude_DOFe+ (1.-ExportFracMort(jp)) *mortX *Qfe(jp)
2029 & + (1.-ExportFracMort2(jp))*mortX2*Qfe(jp)
2030 exude_POFe= exude_POFe+ ExportFracMort(jp) *mortX *Qfe(jp)
2031 & + ExportFracMort2(jp) *mortX2*Qfe(jp)
2032
2033 exude_POSi = exude_POSi + mort_c(jp)*Qsi(jp)
2034
8752612d6f Oliv*2035 exude_PIC = exude_PIC + mort_c(jp)*R_PICPOC(jp)
8fbfd1f382 Oliv*2036
8752612d6f Oliv*2037
2038
2039
2040
2041 IF (isPhoto(jp) .EQ. 0) THEN
2042 respir_c = respRate(jp)*Xe*reminTempFunc
2043 gTr(ic+jp-1) = gTr(ic+jp-1) - respir_c
fd20fa810c Oliv*2044 #ifdef DARWIN_DIAG_PERTYPE
2045 diags(iResp+jp-1) = respir_c
2046 #endif
8752612d6f Oliv*2047 respir = respir + respir_c*(1 _d 0 + R_PICPOC(jp))
2048 #ifndef DARWIN_ALLOW_NQUOTA
2049 respirN = respirN + respir_c*R_NC(jp)
2050 #endif
2051 #ifndef DARWIN_ALLOW_PQUOTA
2052 respirP = respirP + respir_c*R_PC(jp)
2053 #endif
2054 #ifndef DARWIN_ALLOW_FEQUOTA
2055 respirFe = respirFe + respir_c*R_FeC(jp)
2056 #endif
2057 #ifndef DARWIN_ALLOW_SIQUOTA
2058 respirSi = respirSi + respir_c*R_SiC(jp)
2059 #endif
2060 ENDIF
65ac4e45b6 Oliv*2061
8752612d6f Oliv*2062 gTr(ic+jp-1)=gTr(ic+jp-1) - mort_c(jp)
8fbfd1f382 Oliv*2063 #ifdef DARWIN_ALLOW_NQUOTA
2064 gTr(in+jp-1)=gTr(in+jp-1) - mort_c(jp)*Qn(jp)
2065 #endif
2066 #ifdef DARWIN_ALLOW_PQUOTA
2067 gTr(ip+jp-1)=gTr(ip+jp-1) - mort_c(jp)*Qp(jp)
2068 #endif
2069 #ifdef DARWIN_ALLOW_SIQUOTA
2070 gTr(isi+jp-1)=gTr(isi+jp-1) - mort_c(jp)*Qsi(jp)
2071 #endif
2072 #ifdef DARWIN_ALLOW_FEQUOTA
2073 gTr(ife+jp-1)=gTr(ife+jp-1) - mort_c(jp)*Qfe(jp)
2074 #endif
fd20fa810c Oliv*2075 #ifdef DARWIN_DIAG_PERTYPE
2076 diags(iMort+jp-1) = mort_c(jp)
2077 #endif
2078
8fbfd1f382 Oliv*2079
2080 #ifdef DARWIN_ALLOW_EXUDE
2081 exude_DOC =
2082 & exude_DOC + (1.-ExportFracExude(jp))*kexcc(jp)*Xe
2083 exude_POC =
2084 & exude_POC + ExportFracExude(jp) *kexcc(jp)*Xe
2085 exude_DON =
2086 & exude_DON + (1.-ExportFracExude(jp))*kexcn(jp)*Xe*Qn(jp)
2087 exude_PON =
2088 & exude_PON + ExportFracExude(jp) *kexcn(jp)*Xe*Qn(jp)
2089 exude_DOP =
2090 & exude_DOP + (1.-ExportFracExude(jp))*kexcp(jp)*Xe*Qp(jp)
2091 exude_POP =
2092 & exude_POP + ExportFracExude(jp) *kexcp(jp)*Xe*Qp(jp)
2093 exude_DOFe =
2094 & exude_DOFe + (1.-ExportFracExude(jp))*kexcfe(jp)*Xe*Qfe(jp)
2095 exude_POFe =
2096 & exude_POFe + ExportFracExude(jp) *kexcfe(jp)*Xe*Qfe(jp)
2097 exude_POSi =
2098 & exude_POSi + kexcsi(jp)*Xe*Qsi(jp)
65ac4e45b6 Oliv*2099 exude_PIC = exude_PIC + kexcc(jp)*Xe*R_PICPOC(jp)
8fbfd1f382 Oliv*2100 gTr(ic+jp-1)=gTr(ic+jp-1) - kexcc(jp)*Xe
2101 #ifdef DARWIN_ALLOW_NQUOTA
2102 gTr(in+jp-1)=gTr(in+jp-1) - kexcn(jp)*Xe*Qn(jp)
2103 #endif
2104 #ifdef DARWIN_ALLOW_PQUOTA
2105 gTr(ip+jp-1)=gTr(ip+jp-1) - kexcp(jp)*Xe*Qp(jp)
2106 #endif
2107 #ifdef DARWIN_ALLOW_SIQUOTA
2108 gTr(isi+jp-1)=gTr(isi+jp-1) - kexcsi(jp)*Xe*Qsi(jp)
2109 #endif
2110 #ifdef DARWIN_ALLOW_FEQUOTA
2111 gTr(ife+jp-1)=gTr(ife+jp-1) - kexcfe(jp)*Xe*Qfe(jp)
2112 #endif
2113 #endif
5e7acb36b1 daat*2114
2115
2116
2117 #ifdef DARWIN_ALLOW_DVM
2118 IF (isPred(jp) .EQ. 1) THEN
2119 mortDVM_c = mortmaxDVM(jp)*Xe/(ksatDVM(jp)+Xe)*
2120 & ( 1 _d 0 - fracPARmort(jp) +
2121 & fracPARmort(jp)
2122 & *(PARtot/
2123 & ((ksatDVM(jp)/(ksatDVM(jp)+Xe))*ksatPARDVM(jp) + PARtot)
2124 & )
2125 & )*Xe
2126
2127 gTr(ic+jp-1)=gTr(ic+jp-1) - mortDVM_c
2128 # ifdef DARWIN_ALLOW_NQUOTA
2129 gTr(in+jp-1)=gTr(in+jp-1) - mortDVM_c*Qn(jp)
2130 # endif
2131 # ifdef DARWIN_ALLOW_PQUOTA
2132 gTr(ip+jp-1)=gTr(ip+jp-1) - mortDVM_c*Qp(jp)
2133 # endif
2134 # ifdef DARWIN_ALLOW_SIQUOTA
2135 gTr(isi+jp-1)=gTr(isi+jp-1) - mortDVM_c*Qsi(jp)
2136 # endif
2137 # ifdef DARWIN_ALLOW_FEQUOTA
2138 gTr(ife+jp-1)=gTr(ife+jp-1) - mortDVM_c*Qfe(jp)
2139 # endif
2140
2141 mortDVM_DOC = mortDVM_DOC + (1.-ExportFracDVM(jp))*mortDVM_c
2142 mortDVM_POC = mortDVM_POC + ExportFracDVM(jp)*mortDVM_c
2143
2144 mortDVM_DON =
2145 & mortDVM_DON + (1.-ExportFracDVM(jp))*mortDVM_c*Qn(jp)
2146 mortDVM_PON =
2147 & mortDVM_PON + ExportFracDVM(jp)*mortDVM_c*Qn(jp)
2148 mortDVM_DOP =
2149 & mortDVM_DOP + (1.-ExportFracDVM(jp))*mortDVM_c*Qp(jp)
2150 mortDVM_POP =
2151 & mortDVM_POP + ExportFracDVM(jp)*mortDVM_c*Qp(jp)
2152 mortDVM_DOFe =
2153 & mortDVM_DOFe + (1.-ExportFracDVM(jp))*mortDVM_c*Qfe(jp)
2154 mortDVM_POFe =
2155 & mortDVM_POFe + ExportFracDVM(jp)*mortDVM_c*Qfe(jp)
2156 mortDVM_POSi =
2157 & mortDVM_POSi + mortDVM_c*Qsi(jp)
2158 ENDIF
2159 #endif /* DARWIN_ALLOW_DVM */
2160
8fbfd1f382 Oliv*2161 ENDDO
2162
2163 #ifdef DARWIN_ALLOW_CHLQUOTA
2164 DO jp = 1, nPhoto
2165 gTr(iChl+jp-1)=gTr(iChl+jp-1) - mort_c(jp)*QChl(jp)
2166 ENDDO
2167 #endif
c7b6c66d45 Oliv*2168 #ifdef DARWIN_ALLOW_CSTORE
2169 DO jp = 1, nPhoto
2170 gTr(ich+jp-1)=gTr(ich+jp-1) - mort_c(jp)*Qch(jp)
2171 ENDDO
2172 #endif
8fbfd1f382 Oliv*2173
8752612d6f Oliv*2174 gTr(iDIC) = gTr(iDIC) + respir
2175 #ifndef DARWIN_ALLOW_NQUOTA
2176 gTr(iNO3) = gTr(iNO3) + respirN
2177 #endif
2178 #ifndef DARWIN_ALLOW_PQUOTA
2179 gTr(iPO4) = gTr(iPO4) + respirP
2180 #endif
2181 #ifndef DARWIN_ALLOW_FEQUOTA
2182 gTr(iFeT) = gTr(iFeT) + respirFe
2183 #endif
2184 #ifndef DARWIN_ALLOW_SIQUOTA
2185 gTr(iSiO2) = gTr(iSiO2) + respirSi
2186 #endif
8fbfd1f382 Oliv*2187
b61dca872c Oliv*2188 diags(iRespirDIC) = respir
2189
5e7acb36b1 daat*2190 gTr(iDOC )=gTr(iDOC ) + exude_DOC + mortDVM_DOC
2191 gTr(iDON )=gTr(iDON ) + exude_DON + mortDVM_DON
2192 gTr(iDOP )=gTr(iDOP ) + exude_DOP + mortDVM_DOP
2193 gTr(iDOFe)=gTr(iDOFe) + exude_DOFe + mortDVM_DOFe
8fbfd1f382 Oliv*2194
2195 gTr(iPIC )=gTr(iPIC ) + exude_PIC
5e7acb36b1 daat*2196 gTr(iPOC )=gTr(iPOC ) + exude_POC + mortDVM_POC
2197 gTr(iPON )=gTr(iPON ) + exude_PON + mortDVM_PON
2198 gTr(iPOP )=gTr(iPOP ) + exude_POP + mortDVM_POP
2199 gTr(iPOSi)=gTr(iPOSi) + exude_POSi + mortDVM_POSi
2200 gTr(iPOFe)=gTr(iPOFe) + exude_POFe + mortDVM_POFe
8fbfd1f382 Oliv*2201 #ifdef DARWIN_ALLOW_CDOM
1c72adde5c Oliv*2202 # ifdef DARWIN_CDOM_UNITS_CARBON
b81bfeb644 Oliv*2203 exude_CDOM = fracCDOM*exude_DOC
1c72adde5c Oliv*2204 gTr(iDOC )=gTr(iDOC ) - exude_CDOM
2205 gTr(iDON )=gTr(iDON ) - R_NC_CDOM*exude_CDOM
2206 gTr(iDOP )=gTr(iDOP ) - R_PC_CDOM*exude_CDOM
2207 gTr(iDOFe)=gTr(iDOFe) - R_FeC_CDOM*exude_CDOM
2208 # else
b81bfeb644 Oliv*2209 exude_CDOM = fracCDOM*exude_DOP
8fbfd1f382 Oliv*2210 gTr(iDOC )=gTr(iDOC ) - R_CP_CDOM*exude_CDOM
2211 gTr(iDON )=gTr(iDON ) - R_NP_CDOM*exude_CDOM
2212 gTr(iDOP )=gTr(iDOP ) - exude_CDOM
2213 gTr(iDOFe)=gTr(iDOFe) - R_FeP_CDOM*exude_CDOM
1c72adde5c Oliv*2214 # endif
b81bfeb644 Oliv*2215 gTr(iCDOM)=gTr(iCDOM) + exude_CDOM
8fbfd1f382 Oliv*2216 #endif
2217
2218 #endif /* ALLOW_DARWIN */
2219
2220 RETURN
2221 END SUBROUTINE