/[MITgcm]/MITgcm_contrib/darwin2/pkg/monod/monod_plankton.F
ViewVC logotype

Diff of /MITgcm_contrib/darwin2/pkg/monod/monod_plankton.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.5 by jahn, Tue Nov 15 20:16:34 2011 UTC revision 1.13 by stephd, Thu Mar 28 18:14:17 2013 UTC
# Line 48  c ANNA pass extra variables if WAVEBANDS Line 48  c ANNA pass extra variables if WAVEBANDS
48       I                       phytoup, popuplocal, ponuplocal,       I                       phytoup, popuplocal, ponuplocal,
49       I                       pofeuplocal, psiuplocal,       I                       pofeuplocal, psiuplocal,
50       I                       PARlocal,Tlocal, Slocal,       I                       PARlocal,Tlocal, Slocal,
51         I                       pCO2local,
52       I                       freefelocal, inputFelocal,       I                       freefelocal, inputFelocal,
53       I                       bottom, dzlocal,       I                       bottom, dzlocal,
54       O                       Rstarlocal, RNstarlocal,       O                       Rstarlocal, RNstarlocal,
# Line 74  c ANNA pass extra variables if WAVEBANDS Line 75  c ANNA pass extra variables if WAVEBANDS
75  #endif  #endif
76  #ifdef GEIDER  #ifdef GEIDER
77       I                       phychl,       I                       phychl,
78    #ifdef DAR_DIAG_EK
79         O                       Ek, EkoverE,
80    #endif
81    #ifdef DAR_DIAG_PARW
82         O                       chl2c,
83    #endif
84  #ifdef DYNAMIC_CHL  #ifdef DYNAMIC_CHL
85       O                       dphychl, Chlup,       O                       dphychl, Chlup,
86    #ifdef DAR_DIAG_EK
87         O                       acclim,
88    #endif
89    #endif
90    #ifdef ALLOW_CDOM
91         O                       dcdomdt   ,
92         I                       cdomlocal,
93  #endif  #endif
94  #ifdef WAVEBANDS  #ifdef WAVEBANDS
95       I                       PARwlocal,       I                       PARwlocal,
96    #ifdef DAR_DIAG_EK
97         O                       Ek_nl, EkoverE_nl,
98    #endif
99  #endif  #endif
100  #endif  #endif
101  #ifdef ALLOW_PAR_DAY  #ifdef ALLOW_PAR_DAY
# Line 144  c zoo   = zooplankton Line 161  c zoo   = zooplankton
161           _RL PARlocal           _RL PARlocal
162           _RL Tlocal           _RL Tlocal
163           _RL Slocal           _RL Slocal
164             _RL pCO2local
165           _RL freefelocal           _RL freefelocal
166           _RL inputFelocal           _RL inputFelocal
167           _RL bottom           _RL bottom
# Line 198  c zoo   = zooplankton Line 216  c zoo   = zooplankton
216  #endif  #endif
217  #ifdef GEIDER  #ifdef GEIDER
218           _RL phychl(npmax)           _RL phychl(npmax)
219             _RL Ek(npmax)
220             _RL EkoverE(npmax)
221             _RL chl2c(npmax)
222  #ifdef DYNAMIC_CHL  #ifdef DYNAMIC_CHL
223           _RL dphychl(npmax)           _RL dphychl(npmax)
224           _RL Chlup(npmax)           _RL Chlup(npmax)
225             _RL acclim(npmax)
226    #endif
227    #endif
228    #ifdef ALLOW_CDOM
229             _RL cdomlocal
230             _RL dcdomdt  
231    #ifdef ALLOW_CARBON
232             _RL cdomclocal, dcdomcdt    
233  #endif  #endif
234  #endif  #endif
235  #ifdef ALLOW_PAR_DAY  #ifdef ALLOW_PAR_DAY
# Line 215  c ANNA Global variables for WAVEBANDS Line 244  c ANNA Global variables for WAVEBANDS
244  c ANNA these variables are passed in/out of darwin_forcing.F  c ANNA these variables are passed in/out of darwin_forcing.F
245  #ifdef WAVEBANDS  #ifdef WAVEBANDS
246           _RL PARwlocal(tlam)      !PAR at midpoint of previous(in) and local(out) gridcell           _RL PARwlocal(tlam)      !PAR at midpoint of previous(in) and local(out) gridcell
247             _RL Ek_nl(npmax,tlam)
248             _RL EkoverE_nl(npmax,tlam)
249  #endif  #endif
250  c ANNA endif  c ANNA endif
251    
   
   
   
   
252  c LOCAL VARIABLES  c LOCAL VARIABLES
253  c -------------------------------------------------------------  c -------------------------------------------------------------
254    
# Line 236  c phytoplankton specific nutrient limita Line 263  c phytoplankton specific nutrient limita
263           _RL limit(npmax)           _RL limit(npmax)
264  c phytoplankton light limitation term  c phytoplankton light limitation term
265           _RL ilimit(npmax)           _RL ilimit(npmax)
266             _RL pCO2limit(npmax)
267           _RL ngrow(npmax)           _RL ngrow(npmax)
268           _RL grow(npmax)           _RL grow(npmax)
269           _RL PspecificPO4(npmax)           _RL PspecificPO4(npmax)
270           _RL phytoTempFunction(npmax)           _RL phytoTempFunction(npmax)
271             _RL mortPTempFunction
272           _RL dummy           _RL dummy
273           _RL Ndummy           _RL Ndummy
274           _RL Nsourcelimit(npmax)           _RL Nsourcelimit(npmax)
# Line 270  c varible for mimumum phyto Line 299  c varible for mimumum phyto
299  #ifdef OLD_GRAZE  #ifdef OLD_GRAZE
300  c  variables for zooplankton grazing rates  c  variables for zooplankton grazing rates
301           _RL zooTempFunction(nzmax)           _RL zooTempFunction(nzmax)
302             _RL mortZTempFunction
303             _RL mortZ2TempFunction
304           _RL grazing_phyto(npmax)           _RL grazing_phyto(npmax)
305           _RL grazingP(nzmax)           _RL grazingP(nzmax)
306           _RL grazingN(nzmax)           _RL grazingN(nzmax)
# Line 278  c  variables for zooplankton grazing rat Line 309  c  variables for zooplankton grazing rat
309  #else  #else
310  c  variables for zooplankton grazing rates  c  variables for zooplankton grazing rates
311           _RL zooTempFunction(nzmax)           _RL zooTempFunction(nzmax)
312             _RL mortZTempFunction
313             _RL mortZ2TempFunction
314           _RL allphyto(nzmax)           _RL allphyto(nzmax)
315           _RL denphyto(nzmax)           _RL denphyto(nzmax)
316           _RL grazphy(npmax,nzmax)           _RL grazphy(npmax,nzmax)
# Line 296  c  variables for zooplankton grazing rat Line 329  c  variables for zooplankton grazing rat
329          _RL alpha_I(npmax)          _RL alpha_I(npmax)
330          _RL pcarbon(npmax)          _RL pcarbon(npmax)
331          _RL pcm(npmax)          _RL pcm(npmax)
         _RL chl2c(npmax)  
332  #ifdef DYNAMIC_CHL  #ifdef DYNAMIC_CHL
         _RL acclim(npmax)  
333          _RL psinkchl(npmax)          _RL psinkchl(npmax)
334          _RL rhochl(npmax)          _RL rhochl(npmax)
335  #endif  #endif
336  #endif  #endif
337    
338    #ifdef ALLOW_CDOM
339            _RL cdomp_degrd, cdomn_degrd, cdomfe_degrd
340            _RL preminP_cdom, preminN_cdom, preminFe_cdom
341    #ifdef ALLOW_CARBON
342            _RL cdomc_degrd
343            _RL preminC_cdom
344    #endif
345    #endif
346    
347  #ifdef DAR_DIAG_CHL  #ifdef DAR_DIAG_CHL
348           _RL tmppcm           _RL tmppcm
349           _RL tmpchl2c           _RL tmpchl2c
# Line 376  c variables for conversions from phyto a Line 416  c variables for conversions from phyto a
416           _RL totzoo_pofe           _RL totzoo_pofe
417           _RL totzoo_posi           _RL totzoo_posi
418    
419    #ifdef ALLOW_CDOM
420             _RL totphy_cdomp
421             _RL totphy_cdomn
422             _RL totphy_cdomfe
423             _RL totzoo_cdomp
424             _RL totzoo_cdomn
425             _RL totzoo_cdomfe
426    #ifdef ALLOW_CARBON
427             _RL totphy_cdomc
428             _RL totzoo_cdomc
429    #endif
430    #endif
431    
432           _RL NO2prod           _RL NO2prod
433           _RL NO3prod           _RL NO3prod
434        
# Line 414  c ANNA inportant but local variables tha Line 467  c ANNA inportant but local variables tha
467  #endif  #endif
468  c ANNA endif  c ANNA endif
469    
 c ANNA - for inhib  
          _RL Ek  
          _RL EkoverE  
   
470  c.................................................................  c.................................................................
471    
472  #ifdef ALLOW_MUTANTS  #ifdef ALLOW_MUTANTS
# Line 475  c energetic disadvantage of using NO2/No Line 524  c energetic disadvantage of using NO2/No
524             pcarbon(np) = 0. _d 0             pcarbon(np) = 0. _d 0
525             pcm(np)=0. _d 0             pcm(np)=0. _d 0
526             chl2c(np)=0. _d 0             chl2c(np)=0. _d 0
527               Ek(np)=0. _d 0
528               EkoverE(np)=0. _d 0
529  #ifdef DYNAMIC_CHL  #ifdef DYNAMIC_CHL
530             acclim(np)=0. _d 0             acclim(np)=0. _d 0
531             psinkChl(np)=0. _d 0             psinkChl(np)=0. _d 0
532  #endif  #endif
533    #ifdef WAVEBANDS
534               do ilam=1,tlam
535                Ek_nl(np,ilam)=0. _d 0
536                EkoverE_nl(np,ilam)=0. _d 0
537               enddo
538    #endif
539           enddo           enddo
540  #endif  #endif
541                    
# Line 567  ccccccccccccccccccccccccccccccc Line 624  ccccccccccccccccccccccccccccccc
624    
625  c cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc  c cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
626            call MONOD_TEMPFUNC(Tlocal,phytoTempFunction,            call MONOD_TEMPFUNC(Tlocal,phytoTempFunction,
627       &            zooTempFunction, reminTempFunction, myThid)       &            zooTempFunction, reminTempFunction,
628         &            mortPTempFunction, mortZTempFunction,
629         &            mortZ2TempFunction, myThid)
630            if (debug.eq.1) print*,'phytoTempFunction',            if (debug.eq.1) print*,'phytoTempFunction',
631       &                          phytoTempFunction, Tlocal       &                          phytoTempFunction, Tlocal
632  ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc  ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
# Line 596  c using Platt-like equations with inhibi Line 655  c using Platt-like equations with inhibi
655  #endif  #endif
656  c ANNA endif  c ANNA endif
657    
658    c pCO2 limit - default to non
659             do np=1,npmax
660               pCO2limit(np)=1. _d 0
661    c          if (np.eq.6) then
662    c             pCO2limit(np)=1. _d 0 + (pCO2local-400. _d -6)/600 _d -6
663    c             pCO2limit(np)=max(pCO2limit(np),1. _d 0)
664    c             pCO2limit(np)=min(pCO2limit(np),2. _d 0)
665    c          endif
666               if (debug.eq.15) print*,'pco2limit',pCO2limit(np),pCO2local
667             enddo
668    
669    
670  ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc  ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
671  c Determine phytoplankton nutrient limitation as mimimum of  c Determine phytoplankton nutrient limitation as mimimum of
672  c P,N,Si,Fe. However N can be utilized in several forms, so  c P,N,Si,Fe. However N can be utilized in several forms, so
# Line 813  c ANNA endif Line 884  c ANNA endif
884  #endif  #endif
885    
886            do np = 1, npmax            do np = 1, npmax
887             pcm(np)=pcmax(np)*limit(np)*phytoTempFunction(np)             pcm(np)=pcmax(np)*limit(np)*phytoTempFunction(np)*
888         &                                         pCO2limit(np)
889  #ifdef DYNAMIC_CHL  #ifdef DYNAMIC_CHL
890             if (phyto(np).gt. 0. _d 0) then             if (phyto(np).gt. 0. _d 0) then
891               chl2c(np)=phychl(np)/(phyto(np)*R_PC(np))               chl2c(np)=phychl(np)/(phyto(np)*R_PC(np))
# Line 834  c assumes balanced growth, eq A14 in Gei Line 906  c assumes balanced growth, eq A14 in Gei
906  c Eq A1 in Geider et al 1997  c Eq A1 in Geider et al 1997
907                 pcarbon(np)=pcm(np)*( 1 -                 pcarbon(np)=pcm(np)*( 1 -
908       &          exp((-alpha_I(np)*chl2c(np))/(pcm(np))) )       &          exp((-alpha_I(np)*chl2c(np))/(pcm(np))) )
 c for inhibition  
                if (inhibcoef_geid(np).gt.0. _d 0) then  
909  #ifdef WAVEBANDS  #ifdef WAVEBANDS
910                   Ek = pcm(np)/(chl2c(np)*alpha_mean(np))                 Ek(np) = pcm(np)/(chl2c(np)*alpha_mean(np))
911                   EkoverE(np) = Ek(np) / PARlocal
912                   do nl=1, tlam
913                      Ek_nl(np,nl)=pcm(np)/(chl2c(np)*alphachl_nl(np,nl))
914                      EkoverE_nl(np,nl) = Ek_nl(np,nl) / PARwlocal(nl)
915                   enddo
916  #else  #else
917                   Ek = pcm(np)/(chl2c(np)*alphachl(np))                 Ek(np) = pcm(np)/(chl2c(np)*alphachl(np))
918                   EkoverE(np) = Ek(np) / PARlocal
919  #endif  #endif
920                   EkoverE = Ek / PARlocal  c for inhibition
921                   if (PARlocal .ge. Ek) then !photoinhibition begins                 if (inhibcoef_geid(np).gt.0. _d 0) then
922                    pcarbon(np) = pcarbon(np)*(EkoverE*inhibcoef_geid(np))                   if (PARlocal .ge. Ek(np)) then !photoinhibition begins
923                      pcarbon(np) = pcarbon(np)*
924         &                            (EkoverE(np)*inhibcoef_geid(np))
925                   endif                   endif
926                 endif                 endif
927  c end inhib  c end inhib
# Line 859  c end inhib Line 937  c end inhib
937                 pcarbon(np)=0. _d 0                 pcarbon(np)=0. _d 0
938               endif               endif
939             else ! if pcm 0             else ! if pcm 0
940               pcm(np)=0.d0               pcm(np)=0. _d 0
941  #ifndef DYNAMIC_CHL  #ifndef DYNAMIC_CHL
942               chl2c(np)=chl2cmin(np)               chl2c(np)=chl2cmin(np)
943  #endif  #endif
944               pcarbon(np)=0.d0               pcarbon(np)=0. _d 0
945               ilimit(np)=0.d0               ilimit(np)=0. _d 0
946             endif             endif
947  #ifdef DYNAMIC_CHL  #ifdef DYNAMIC_CHL
948  c Chl:C acclimated to current conditions  c Chl:C acclimated to current conditions
# Line 890  c         acclim(np)=max(acclim(np),chl2 Line 968  c         acclim(np)=max(acclim(np),chl2
968  c diagnostic version of the above that does not feed back to growth  c diagnostic version of the above that does not feed back to growth
969            ChlGeiderlocal = 0. _d 0            ChlGeiderlocal = 0. _d 0
970            do np = 1, npmax            do np = 1, npmax
971             tmppcm = mu(np)*limit(np)*phytoTempFunction(np)             tmppcm = mu(np)*limit(np)*phytoTempFunction(np)*
972         &                                       pCO2limit(np)
973             if (tmppcm.gt.0.d0) then             if (tmppcm.gt.0.d0) then
974               tmpchl2c = Geider_chl2cmax(np)/               tmpchl2c = Geider_chl2cmax(np)/
975       &         (1+(Geider_chl2cmax(np)*Geider_alphachl(np)*PARdaylocal)/       &         (1+(Geider_chl2cmax(np)*Geider_alphachl(np)*PARdaylocal)/
# Line 961  c sum all palatability*phyto and find ph Line 1040  c sum all palatability*phyto and find ph
1040  #endif  #endif
1041             do np=1,npmax             do np=1,npmax
1042              tmpz=max(0. _d 0,(allphyto(nz)-phygrazmin) )              tmpz=max(0. _d 0,(allphyto(nz)-phygrazmin) )
1043              grazphy(np,nz)=grazemax(nz)*              grazphy(np,nz)=grazemax(nz)*zooTempFunction(nz)*
1044  #ifdef SER_GRAZ  #ifdef SER_GRAZ
1045  c as in Vallina et al, 2011  c as in Vallina et al, 2011
1046       &          (((palat(np,nz)*phyto(np)/allphyto(nz))*phyto(np))/       &          (((palat(np,nz)*phyto(np)/allphyto(nz))*phyto(np))/
# Line 1049  cccccccccccccccccccccccccccccccccccccccc Line 1128  cccccccccccccccccccccccccccccccccccccccc
1128  c accumulate particulate and dissolved detritus  c accumulate particulate and dissolved detritus
1129             do np=1, npmax             do np=1, npmax
1130                 totphy_pop=totphy_pop+                 totphy_pop=totphy_pop+
1131       &                ExportFracP(np)*mortphy(np)*phytomin(np)       &                ExportFracP(np)*mortphy(np)*
1132         &                mortPTempFunction*phytomin(np)
1133                 totphy_dop=totphy_dop+                 totphy_dop=totphy_dop+
1134       &                (1. _d 0-ExportFracP(np))*mortphy(np)*phytomin(np)       &                (1. _d 0-ExportFracP(np))*mortphy(np)*
1135         &                mortPTempFunction*phytomin(np)
1136                 totphy_pon=totphy_pon+ R_NP(np)*                 totphy_pon=totphy_pon+ R_NP(np)*
1137       &                ExportFracP(np)*mortphy(np)*phytomin(np)       &                ExportFracP(np)*mortphy(np)*
1138         &                mortPTempFunction*phytomin(np)
1139                 totphy_don=totphy_don+ R_NP(np)*                 totphy_don=totphy_don+ R_NP(np)*
1140       &               (1. _d 0-ExportFracP(np))*mortphy(np)*phytomin(np)       &               (1. _d 0-ExportFracP(np))*mortphy(np)*
1141         &                mortPTempFunction*phytomin(np)
1142                 totphy_pofe=totphy_pofe+ R_FeP(np)*                 totphy_pofe=totphy_pofe+ R_FeP(np)*
1143       &                ExportFracP(np)*mortphy(np)*phytomin(np)       &                ExportFracP(np)*mortphy(np)*
1144         &                mortPTempFunction*phytomin(np)
1145                 totphy_dofe=totphy_dofe+ R_FeP(np)*                 totphy_dofe=totphy_dofe+ R_FeP(np)*
1146       &               (1. _d 0-ExportFracP(np))*mortphy(np)*phytomin(np)       &               (1. _d 0-ExportFracP(np))*mortphy(np)*
1147         &                mortPTempFunction*phytomin(np)
1148                 totphy_posi=totphy_posi+ R_SiP(np)*                 totphy_posi=totphy_posi+ R_SiP(np)*
1149       &                mortphy(np)*phytomin(np)       &                mortphy(np)*
1150         &                mortPTempFunction*phytomin(np)
1151  #ifdef ALLOW_CARBON  #ifdef ALLOW_CARBON
1152                 totphy_poc=totphy_poc+ R_PC(np)*                 totphy_poc=totphy_poc+ R_PC(np)*
1153       &                ExportFracP(np)*mortphy(np)*phytomin(np)       &                ExportFracP(np)*mortphy(np)*
1154         &                mortPTempFunction*phytomin(np)
1155                 totphy_doc=totphy_doc+ R_PC(np)*                 totphy_doc=totphy_doc+ R_PC(np)*
1156       &               (1. _d 0-ExportFracP(np))*mortphy(np)*phytomin(np)       &               (1. _d 0-ExportFracP(np))*mortphy(np)*
1157         &                mortPTempFunction*phytomin(np)
1158                 totphy_pic=totphy_pic+ R_PC(np)*R_PICPOC(np)*                 totphy_pic=totphy_pic+ R_PC(np)*R_PICPOC(np)*
1159       &                mortphy(np)*phytomin(np)       &                mortphy(np)*
1160         &                mortPTempFunction*phytomin(np)
1161  #endif  #endif
1162              enddo              enddo
1163    #ifdef ALLOW_CDOM
1164                   totphy_cdomp=(fraccdom)*totphy_dop
1165                   totphy_dop=totphy_dop-totphy_cdomp
1166                   totphy_cdomn=rnp_cdom*totphy_cdomp
1167                   totphy_don=totphy_don-totphy_cdomn
1168                   totphy_cdomfe=rfep_cdom*totphy_cdomp
1169                   totphy_dofe=totphy_dofe-totphy_cdomfe
1170    #ifdef ALLOW_CARBON
1171                   totphy_cdomc=rcp_cdom*totphy_cdomp
1172                   totphy_doc=totphy_doc-totphy_cdomc
1173    #endif
1174    #endif
1175              if (debug.eq.3) print*,'tot_phy_pop',totphy_pop              if (debug.eq.3) print*,'tot_phy_pop',totphy_pop
1176              if (debug.eq.3) print*,'tot_phy_dop',totphy_dop              if (debug.eq.3) print*,'tot_phy_dop',totphy_dop
1177              if (debug.eq.3) print*,'tot_phy_pon',totphy_pon              if (debug.eq.3) print*,'tot_phy_pon',totphy_pon
# Line 1122  cccccccccccccccccccccccccccccccccccccccc Line 1223  cccccccccccccccccccccccccccccccccccccccc
1223  c accumulate particulate and dissolved detritus  c accumulate particulate and dissolved detritus
1224              do nz=1, nzmax              do nz=1, nzmax
1225                 totzoo_pop=totzoo_pop+                 totzoo_pop=totzoo_pop+
1226       &                     ExportFracZ(nz)*( mortzoo(nz)*zooP(nz)       &                     ExportFracZ(nz)*( mortzoo(nz)*
1227       &                     +  mortzoo2(nz)*zooP(nz)**2 )       &                     mortZTempFunction*zooP(nz)
1228         &                     +  mortzoo2(nz)*
1229         &                     mortZ2TempFunction*zooP(nz)**2 )
1230                 totzoo_dop=totzoo_dop+                 totzoo_dop=totzoo_dop+
1231       &                    (1. _d 0-ExportFracZ(nz))*(       &                    (1. _d 0-ExportFracZ(nz))*(
1232       &                     mortzoo(nz)*zooP(nz)+       &                     mortzoo(nz)*
1233       &                     mortzoo2(nz)*zooP(nz)**2 )       &                     mortZTempFunction*zooP(nz)+
1234         &                     mortzoo2(nz)*
1235         &                     mortZ2TempFunction*zooP(nz)**2 )
1236                 totzoo_pon=totzoo_pon+                 totzoo_pon=totzoo_pon+
1237       &                     ExportFracZ(nz)*( mortzoo(nz)*zooN(nz)       &                     ExportFracZ(nz)*( mortzoo(nz)*
1238       &                     +  mortzoo2(nz)*zooN(nz)**2 )       &                     mortZTempFunction*zooN(nz)
1239         &                     +  mortzoo2(nz)*
1240         &                     mortZ2TempFunction*zooN(nz)*zooP(nz) )
1241                 totzoo_don=totzoo_don+                 totzoo_don=totzoo_don+
1242       &                    (1. _d 0-ExportFracZ(nz))*(       &                    (1. _d 0-ExportFracZ(nz))*(
1243       &                     mortzoo(nz)*zooN(nz)+       &                     mortzoo(nz)*
1244       &                     mortzoo2(nz)*zooN(nz)**2 )       &                     mortZTempFunction*zooN(nz)+
1245         &                     mortzoo2(nz)*
1246         &                     mortZ2TempFunction*zooN(nz)*zooP(nz) )
1247                 totzoo_pofe=totzoo_pofe+                 totzoo_pofe=totzoo_pofe+
1248       &                     ExportFracZ(nz)*( mortzoo(nz)*zooFe(nz)       &                     ExportFracZ(nz)*( mortzoo(nz)*
1249       &                     +  mortzoo2(nz)*zooFe(nz)**2 )       &                     mortZTempFunction*zooFe(nz)
1250         &                     +  mortzoo2(nz)*
1251         &                     mortZ2TempFunction*zooFe(nz)*zooP(nz) )
1252                 totzoo_dofe=totzoo_dofe+                 totzoo_dofe=totzoo_dofe+
1253       &                   (1. _d 0-ExportFracZ(nz))*(       &                   (1. _d 0-ExportFracZ(nz))*(
1254       &                    mortzoo(nz)*zooFe(nz) +       &                    mortzoo(nz)*
1255       &                    mortzoo2(nz)*zooFe(nz)**2 )       &                    mortZTempFunction*zooFe(nz) +
1256         &                    mortzoo2(nz)*
1257         &                    mortZ2TempFunction*zooFe(nz)*zooP(nz) )
1258                 totzoo_posi=totzoo_posi+                 totzoo_posi=totzoo_posi+
1259       &                     ( mortzoo(nz)*zooSi(nz)+       &                     ( mortzoo(nz)*
1260       &                       mortzoo2(nz)*zooSi(nz)**2 )       &                       mortZTempFunction*zooSi(nz)+
1261         &                       mortzoo2(nz)*
1262         &                       mortZ2TempFunction*zooSi(nz)*zooP(nz) )
1263  #ifdef ALLOW_CARBON  #ifdef ALLOW_CARBON
1264                 totzoo_poc=totzoo_poc+                 totzoo_poc=totzoo_poc+
1265       &                    ExportFracZ(nz)*( mortzoo(nz)*zooClocal(nz)       &                    ExportFracZ(nz)*( mortzoo(nz)*
1266       &                      +  mortzoo2(nz)*zooClocal(nz)**2 )       &                         mortZTempFunction*zooClocal(nz)
1267         &                      +  mortzoo2(nz)*
1268         &                       mortZ2TempFunction*zooClocal(nz)*zooP(nz) )
1269                 totzoo_doc=totzoo_doc+                 totzoo_doc=totzoo_doc+
1270       &           (1. _d 0-ExportFracZ(nz))*( mortzoo(nz)*zooClocal(nz)       &           (1. _d 0-ExportFracZ(nz))*( mortzoo(nz)*
1271       &                      +  mortzoo2(nz)*zooClocal(nz)**2 )       &                         mortZTempFunction*zooClocal(nz)
1272         &                      +  mortzoo2(nz)*
1273         &                       mortZ2TempFunction*zooClocal(nz)*zooP(nz) )
1274  #endif  #endif
1275              enddo              enddo
1276    
# Line 1181  c accumulate particulate and dissolved d Line 1300  c accumulate particulate and dissolved d
1300  #endif  #endif
1301              enddo              enddo
1302  #endif  #endif
1303    
1304    #ifdef ALLOW_CDOM
1305                   totzoo_cdomp=(fraccdom)*totzoo_dop
1306                   totzoo_dop=totzoo_dop-totzoo_cdomp
1307                   totzoo_cdomn=rnp_cdom*totzoo_cdomp
1308                   totzoo_don=totzoo_don-totzoo_cdomn
1309                   totzoo_cdomfe=rfep_cdom*totzoo_cdomp
1310                   totzoo_dofe=totzoo_dofe-totzoo_cdomfe
1311    #ifdef ALLOW_CARBON
1312                   totzoo_cdomc=rcp_cdom*totzoo_cdomp
1313                   totzoo_doc=totzoo_doc-totzoo_cdomc
1314    #endif
1315    #endif
1316              if (debug.eq.5) print*,'totzoo_pop',totzoo_pop              if (debug.eq.5) print*,'totzoo_pop',totzoo_pop
1317              if (debug.eq.5) print*,'totzoo_dop',totzoo_dop              if (debug.eq.5) print*,'totzoo_dop',totzoo_dop
1318              if (debug.eq.5) print*,'totzoo_pon',totzoo_pon              if (debug.eq.5) print*,'totzoo_pon',totzoo_pon
# Line 1197  c consumption - sum of phytoplankton con Line 1329  c consumption - sum of phytoplankton con
1329  c phospate uptake by each phytoplankton  c phospate uptake by each phytoplankton
1330  #ifndef GEIDER  #ifndef GEIDER
1331                 grow(np)=ngrow(np)*mu(np)*limit(np)*ilimit(np)*                 grow(np)=ngrow(np)*mu(np)*limit(np)*ilimit(np)*
1332       &                            phytoTempFunction(np)       &                            phytoTempFunction(np)*pCO2limit(np)
1333  #endif  #endif
1334  #ifdef GEIDER  #ifdef GEIDER
1335                 grow(np)=ngrow(np)*pcarbon(np)                 grow(np)=ngrow(np)*pcarbon(np)
# Line 1205  c phospate uptake by each phytoplankton Line 1337  c phospate uptake by each phytoplankton
1337                 if (debug.eq.14) print*,'grow', grow(np), pcarbon(np)                 if (debug.eq.14) print*,'grow', grow(np), pcarbon(np)
1338  #ifdef DYNAMIC_CHL  #ifdef DYNAMIC_CHL
1339  c geider 97 for dChl/dt (source part) Eq. 3  c geider 97 for dChl/dt (source part) Eq. 3
1340                 if (acclim(np).gt. 0. _d 0) then                 if (acclim(np).gt. 0. _d 0.and.
1341         &                                 alpha_I(np).gt. 0. _d 0) then
1342                  rhochl(np)=chl2cmax(np) *                  rhochl(np)=chl2cmax(np) *
1343       &                      (grow(np)/(alpha_I(np)*acclim(np)) )       &                      (grow(np)/(alpha_I(np)*acclim(np)) )
1344                 else                 else
# Line 1315  c remineralization of sinking particulat Line 1448  c remineralization of sinking particulat
1448              preminN  = reminTempFunction * Kpremin_N*PONlocal              preminN  = reminTempFunction * Kpremin_N*PONlocal
1449              preminFe = reminTempFunction * Kpremin_Fe*POFelocal              preminFe = reminTempFunction * Kpremin_Fe*POFelocal
1450              preminSi = reminTempFunction * Kpremin_Si*PSilocal              preminSi = reminTempFunction * Kpremin_Si*PSilocal
1451    #ifdef ALLOW_CDOM
1452                preminP_cdom = fraccdom*preminP
1453                preminP=preminP-preminP_cdom
1454                preminN_cdom = rnp_cdom*preminP_cdom
1455                preminN=preminN-preminN_cdom
1456                preminFe_cdom = rfep_cdom*preminP_cdom
1457                preminFe=preminFe-preminFe_cdom
1458    #endif
1459    
1460  #ifdef ALLOW_CARBON  #ifdef ALLOW_CARBON
1461             DOCremin =  reminTempFunction * Kdoc * DOClocal             DOCremin =  reminTempFunction * Kdoc * DOClocal
1462             preminC  = reminTempFunction * Kpremin_C*POClocal             preminC  = reminTempFunction * Kpremin_C*POClocal
1463    #ifdef ALLOW_CDOM
1464                preminC_cdom = rcp_cdom*preminP_cdom
1465                preminC=preminC-preminC_cdom
1466    #endif
1467  c dissolution  c dissolution
1468             disscPIC = Kdissc*PIClocal             disscPIC = Kdissc*PIClocal
1469  #endif  #endif
1470    
1471    #ifdef ALLOW_CDOM
1472    c degradation of  CDOM - high when bleached by light
1473               cdomp_degrd = reminTempFunction * cdomlocal
1474         &            *(cdomdegrd+cdombleach*min(PARlocal/PARcdom,1. _d 0) )
1475               cdomn_degrd = rnp_cdom * cdomp_degrd
1476               cdomfe_degrd= rfep_cdom * cdomp_degrd
1477    #ifdef ALLOW_CARBON
1478               cdomc_degrd = rcp_cdom  * cdomp_degrd
1479    #endif
1480    #endif
1481    
1482    #ifdef ALLOW_DENIT
1483               if (O2local.lt.O2crit) then
1484                  if (NO3local.lt.no3crit) then
1485    c no remineralization for N, P, Fe (not Si?)
1486                   DOPremin = 0. _d 0
1487                   DONremin = 0. _d 0
1488                   DOFeremin = 0. _d 0
1489                   preminP  = 0. _d 0
1490                   preminN  = 0. _d 0
1491                   preminFe =  0. _d 0
1492    #ifdef ALLOW_CDOM
1493                   preminP_cdom =  0. _d 0
1494                   preminN_cdom =  0. _d 0
1495                   preminFe_cdom =  0. _d 0
1496    #endif
1497    #ifdef ALLOW_CARBON
1498                  DOCremin = 0. _d 0
1499                  preminC  = 0. _d 0
1500    #ifdef ALLOW_CDOM
1501                  preminC_cdom =  0. _d 0
1502    #endif
1503    #endif
1504    
1505    #ifdef ALLOW_CDOM
1506    c degradation of  CDOM - high when bleached by light
1507               cdomp_degrd = reminTempFunction * cdomlocal
1508         &            *(cdombleach*min(PARlocal/PARcdom,1. _d 0) )
1509               cdomn_degrd = rnp_cdom * cdomp_degrd
1510               cdomfe_degrd= rfep_cdom * cdomp_degrd
1511    #ifdef ALLOW_CARBON
1512               cdomc_degrd = rcp_cdom  * cdomp_degrd
1513    #endif
1514    #endif
1515                  endif
1516               endif
1517    #endif
1518    c end denit caveats
1519    
1520  c chemistry  c chemistry
1521  c NH4 -> NO2 -> NO3 by bacterial action  c NH4 -> NO2 -> NO3 by bacterial action
1522              NO2prod = knita*( 1. _d 0-min(PARlocal/PAR0,1. _d 0) )              NO2prod = knita*( 1. _d 0-min(PARlocal/PAR0,1. _d 0) )
# Line 1349  c phytoplankton Line 1543  c phytoplankton
1543  #else  #else
1544       &                        - sumgrazphy(np)       &                        - sumgrazphy(np)
1545  #endif  #endif
1546       &                        - mortphy(np)*phytomin(np)       &                        - mortphy(np)*
1547         &                          mortPTempFunction*phytomin(np)
1548       &                        + psinkphy(np)       &                        + psinkphy(np)
1549  #ifdef GEIDER  #ifdef GEIDER
1550  #ifdef DYNAMIC_CHL  #ifdef DYNAMIC_CHL
# Line 1364  c             dphychl(np) = rhochl(np)*P Line 1559  c             dphychl(np) = rhochl(np)*P
1559  #else  #else
1560       &                   - sumgrazphy(np)       &                   - sumgrazphy(np)
1561  #endif  #endif
1562       &                   - mortphy(np)*phytomin(np)) *chl2c(np)*R_PC(np)       &                   - mortphy(np)*
1563         &                     mortPTempFunction*phytomin(np))
1564         &                       *chl2c(np)*R_PC(np)
1565       &                        + psinkChl(np)       &                        + psinkChl(np)
1566  #endif  #endif
1567                Chl=Chl + phychl(np)                Chl=Chl + phychl(np)
# Line 1375  c%%% Line 1572  c%%%
1572  #ifdef OLD_GRAZE  #ifdef OLD_GRAZE
1573                tmpr=grazing_phyto(np)*                tmpr=grazing_phyto(np)*
1574       &              (phytomin(np)/(phytomin(np) + kgrazesat))       &              (phytomin(np)/(phytomin(np) + kgrazesat))
1575       &                        + mortphy(np)*phytomin(np)       &                        + mortphy(np)*
1576         &                          mortPTempFunction*phytomin(np)
1577       &                        - psinkphy(np)       &                        - psinkphy(np)
1578  #else  #else
1579                tmpr=sumgrazphy(np)                tmpr=sumgrazphy(np)
1580       &                        + mortphy(np)*phytomin(np)       &                        + mortphy(np)*
1581         &                          mortPTempFunction*phytomin(np)
1582       &                        - psinkphy(np)       &                        - psinkphy(np)
1583  #endif  #endif
1584  #ifdef DAR_DIAG_RSTAR  #ifdef DAR_DIAG_RSTAR
1585  #ifndef GEIDER  #ifndef GEIDER
1586                tmpgrow=ngrow(np)*mu(np)*ilimit(np)*                tmpgrow=ngrow(np)*mu(np)*ilimit(np)*
1587       &              phytoTempFunction(np)       &              phytoTempFunction(np)*pCO2limit(np)
1588  #endif  #endif
1589  #ifdef GEIDER  #ifdef GEIDER
1590                tmpgrow=grow(np)/limit(np)                tmpgrow=grow(np)/limit(np)
# Line 1446  c zooplankton mortality Line 1645  c zooplankton mortality
1645              do nz=1,nzmax              do nz=1,nzmax
1646  c zoo in P currency  c zoo in P currency
1647                dzooPdt(nz)  = dzooPdt(nz)                dzooPdt(nz)  = dzooPdt(nz)
1648       &                           - mortzoo(nz)*zooP(nz)       &                           - mortzoo(nz)*
1649       &                           - mortzoo2(nz)*zooP(nz)**2       &                             mortZTempFunction*zooP(nz)
1650         &                           - mortzoo2(nz)*
1651         &                             mortZ2TempFunction*zooP(nz)**2
1652  c zooplankton in other currencies  c zooplankton in other currencies
1653  C zooplankton stoichiometry varies according to food source  C zooplankton stoichiometry varies according to food source
1654                dzooNdt(nz)  = dzooNdt(nz)                dzooNdt(nz)  = dzooNdt(nz)
1655       &                           - mortzoo(nz)*zooN(nz)       &                           - mortzoo(nz)*
1656       &                           - mortzoo2(nz)*zooN(nz)**2       &                             mortZTempFunction*zooN(nz)
1657         &                           - mortzoo2(nz)*
1658         &                             mortZ2TempFunction*zooN(nz)*zooP(nz)
1659                dzooFedt(nz) = dzooFedt(nz)                dzooFedt(nz) = dzooFedt(nz)
1660       &                           - mortzoo(nz)*zooFe(nz)       &                           - mortzoo(nz)*
1661       &                           - mortzoo2(nz)*zooFe(nz)**2       &                             mortZTempFunction*zooFe(nz)
1662         &                           - mortzoo2(nz)*
1663         &                             mortZ2TempFunction*zooFe(nz)*zooP(nz)
1664                dzooSidt(nz) = dzooSidt(nz)                dzooSidt(nz) = dzooSidt(nz)
1665       &                           - mortzoo(nz)*zooSi(nz)       &                           - mortzoo(nz)*
1666       &                           - mortzoo2(nz)*zooSi(nz)**2       &                             mortZTempFunction*zooSi(nz)
1667         &                           - mortzoo2(nz)*
1668         &                             mortZ2TempFunction*zooSi(nz)*zooP(nz)
1669              enddo              enddo
1670    
1671    
1672  c sum contributions to inorganic nutrient tendencies  c sum contributions to inorganic nutrient tendencies
1673              dPO4dt =  - consumpPO4 +  preminP  + DOPremin              dPO4dt =  - consumpPO4 +  
1674              dNH4dt =  - consumpNH4 +  preminN  + DONremin  #ifdef ALLOW_CDOM
1675         &                 DOPremin
1676    #else
1677         &                 preminP  + DOPremin
1678    #endif
1679                dNH4dt =  - consumpNH4 +  
1680    #ifdef ALLOW_CDOM
1681         &                 DONremin
1682    #else
1683         &                 preminN  +  DONremin
1684    #endif
1685       &                                   - NO2prod       &                                   - NO2prod
1686              dNO2dt =  - consumpNO2                                      dNO2dt =  - consumpNO2                        
1687       &                                   + NO2prod - NO3prod       &                                   + NO2prod - NO3prod
# Line 1473  c sum contributions to inorganic nutrien Line 1690  c sum contributions to inorganic nutrien
1690  c-ONLYNO3   dNO3dt =  - consumpNO3 +  preminN  + DONremin  c-ONLYNO3   dNO3dt =  - consumpNO3 +  preminN  + DONremin
1691  #ifdef ALLOW_DENIT  #ifdef ALLOW_DENIT
1692              if (O2local.le.O2crit) then              if (O2local.le.O2crit) then
1693                denit =  denit_np*(preminP  + DOPremin)                denit =  denit_np
1694                dNO3dt = dNO3dt - denit  #ifdef ALLOW_CDOM
1695                dNH4dt = dNH4dt -  (preminN  + DONremin)       &                *(DOPremin)
1696    #else
1697         &                *(preminP  + DOPremin)
1698    #endif
1699                  dNO3dt = dNO3dt - (denit_no3/denit_np)*denit
1700                  dNH4dt = dNH4dt -  
1701    #ifdef ALLOW_CDOM
1702         &                 (DONremin)
1703    #else
1704         &                 (preminN  + DONremin)
1705    #endif
1706              endif              endif
1707  #endif  #endif
1708              dFeTdt =  - consumpFeT +  preminFe + DOFeremin              dFeTdt =  - consumpFeT +  
1709    #ifdef ALLOW_CDOM
1710         &                 DOFeremin
1711    #else
1712         &                 preminFe + DOFeremin
1713    #endif
1714  #ifdef PART_SCAV  #ifdef PART_SCAV
1715       &                 - scav_part*freefelocal +       &                 - scav_part*freefelocal +
1716  #else  #else
# Line 1489  c-ONLYNO3   dNO3dt =  - consumpNO3 +  pr Line 1721  c-ONLYNO3   dNO3dt =  - consumpNO3 +  pr
1721    
1722  c tendency of dissolved organic pool  c tendency of dissolved organic pool
1723              dDOPdt  = totphy_dop  + totzoo_dop  - DOPremin              dDOPdt  = totphy_dop  + totzoo_dop  - DOPremin
1724    #ifdef ALLOW_CDOM
1725         &                +preminP + cdomp_degrd
1726    #endif
1727              dDONdt  = totphy_don  + totzoo_don  - DONremin              dDONdt  = totphy_don  + totzoo_don  - DONremin
1728    #ifdef ALLOW_CDOM
1729         &                +preminN + cdomn_degrd
1730    #endif
1731              dDOFedt = totphy_dofe + totzoo_dofe - DOFeremin              dDOFedt = totphy_dofe + totzoo_dofe - DOFeremin
1732    #ifdef ALLOW_CDOM
1733         &                +preminFe + cdomfe_degrd
1734    #endif
1735    
1736  c tendency of particulate detritus pools  c tendency of particulate detritus pools
1737              dpopdt  = totphy_pop  + totzoo_pop   - preminP + psinkP              dpopdt  = totphy_pop  + totzoo_pop   - preminP + psinkP
1738    #ifdef ALLOW_CDOM
1739         &                -preminP_cdom
1740    #endif
1741              dpondt  = totphy_pon  + totzoo_pon   - preminN + psinkN              dpondt  = totphy_pon  + totzoo_pon   - preminN + psinkN
1742    #ifdef ALLOW_CDOM
1743         &                -preminN_cdom
1744    #endif
1745              dpofedt = totphy_pofe + totzoo_pofe  - preminFe + psinkFe              dpofedt = totphy_pofe + totzoo_pofe  - preminFe + psinkFe
1746    #ifdef ALLOW_CDOM
1747         &                -preminFe_cdom
1748    #endif
1749              dpSidt  = totphy_posi + totzoo_posi  - preminSi + psinkSi              dpSidt  = totphy_posi + totzoo_posi  - preminSi + psinkSi
1750  #ifdef ALLOW_CARBON  #ifdef ALLOW_CARBON
1751              dDICdt =  - consumpDIC - consumpDIC_PIC              dDICdt =  - consumpDIC - consumpDIC_PIC
1752    #ifdef ALLOW_CDOM
1753         &                                         +  DOCremin
1754    #else
1755       &                                         +  preminC  + DOCremin       &                                         +  preminC  + DOCremin
1756    #endif
1757       &                                         + disscPIC       &                                         + disscPIC
1758              dDOCdt  = totphy_doc  + totzoo_doc  - DOCremin              dDOCdt  = totphy_doc  + totzoo_doc  - DOCremin
1759    #ifdef ALLOW_CDOM
1760         &                    +preminC + cdomc_degrd
1761    #endif
1762              dPOCdt  = totphy_poc  + totzoo_poc  - preminC + psinkC              dPOCdt  = totphy_poc  + totzoo_poc  - preminC + psinkC
1763    #ifdef ALLOW_CDOM
1764         &                -preminC_cdom
1765    #endif
1766              dPICdt  = totphy_pic  + totzoo_pic  - disscPIC + psinkPIC              dPICdt  = totphy_pic  + totzoo_pic  - disscPIC + psinkPIC
1767              dALKdt  = - dNO3dt    - 2.d0 * (consumpDIC_PIC - disscPIC)              dALKdt  = - dNO3dt    - 2.d0 * (consumpDIC_PIC - disscPIC)
1768  c should be = O2prod - preminP - DOPremin?  c should be = O2prod - preminP - DOPremin?
# Line 1511  c production of O2 by photosynthesis Line 1772  c production of O2 by photosynthesis
1772               dO2dt   = R_OP*consumpPO4               dO2dt   = R_OP*consumpPO4
1773  c loss of O2 by remineralization  c loss of O2 by remineralization
1774               if (O2local.gt.O2crit) then               if (O2local.gt.O2crit) then
1775                 dO2dt   = dO2dt - R_OP*(preminP  + DOPremin)                 dO2dt   = dO2dt - R_OP
1776    #ifdef ALLOW_CDOM
1777         &                      *(DOPremin)
1778    #else
1779         &                      *(preminP  + DOPremin)
1780    #endif
1781               endif               endif
1782  #ifdef OLD_GRAZE  #ifdef OLD_GRAZE
1783              do nz=1,nzmax              do nz=1,nzmax
1784                dzooCdt(nz)  = grazingC(nz)*zooClocal(nz)                dzooCdt(nz)  = grazingC(nz)*zooClocal(nz)
1785       &                           - mortzoo(nz)*zooClocal(nz)       &                           - mortzoo(nz)*
1786       &                           - mortzoo2(nz)*zooClocal(nz)**2       &                             mortZTempFunction*zooClocal(nz)
1787         &                           - mortzoo2(nz)*
1788         &                         mortZ2TempFunction*zooClocal(nz)*zooP(nz)
1789              enddo              enddo
1790  #else  #else
1791              do nz=1,nzmax              do nz=1,nzmax
1792                dzooCdt(nz)  = sumgrazzooc(nz)                dzooCdt(nz)  = sumgrazzooc(nz)
1793       &                           - mortzoo(nz)*zooClocal(nz)       &                           - mortzoo(nz)*
1794       &                           - mortzoo2(nz)*zooClocal(nz)**2       &                             mortZTempFunction*zooClocal(nz)
1795         &                           - mortzoo2(nz)*
1796         &                         mortZ2TempFunction*zooClocal(nz)*zooP(nz)
1797              enddo              enddo
1798  #endif  #endif
1799    
1800    #ifdef ALLOW_CDOM
1801                dcdomdt = totphy_cdomp + totzoo_cdomp +  preminP_cdom
1802         &                  -cdomp_degrd
1803    #endif
1804    
1805  #endif  #endif
1806    
1807              if (debug.eq.10) print*,'dDOPdt', dDOPdt              if (debug.eq.10) print*,'dDOPdt', dDOPdt

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.13

  ViewVC Help
Powered by ViewVC 1.1.22