/[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.6 by stephd, Thu May 31 21:08:25 2012 UTC revision 1.8 by stephd, Fri Jun 29 20:41:59 2012 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 148  c zoo   = zooplankton Line 149  c zoo   = zooplankton
149           _RL PARlocal           _RL PARlocal
150           _RL Tlocal           _RL Tlocal
151           _RL Slocal           _RL Slocal
152             _RL pCO2local
153           _RL freefelocal           _RL freefelocal
154           _RL inputFelocal           _RL inputFelocal
155           _RL bottom           _RL bottom
# Line 247  c phytoplankton specific nutrient limita Line 249  c phytoplankton specific nutrient limita
249           _RL limit(npmax)           _RL limit(npmax)
250  c phytoplankton light limitation term  c phytoplankton light limitation term
251           _RL ilimit(npmax)           _RL ilimit(npmax)
252             _RL pCO2limit(npmax)
253           _RL ngrow(npmax)           _RL ngrow(npmax)
254           _RL grow(npmax)           _RL grow(npmax)
255           _RL PspecificPO4(npmax)           _RL PspecificPO4(npmax)
256           _RL phytoTempFunction(npmax)           _RL phytoTempFunction(npmax)
257             _RL mortPTempFunction
258           _RL dummy           _RL dummy
259           _RL Ndummy           _RL Ndummy
260           _RL Nsourcelimit(npmax)           _RL Nsourcelimit(npmax)
# Line 281  c varible for mimumum phyto Line 285  c varible for mimumum phyto
285  #ifdef OLD_GRAZE  #ifdef OLD_GRAZE
286  c  variables for zooplankton grazing rates  c  variables for zooplankton grazing rates
287           _RL zooTempFunction(nzmax)           _RL zooTempFunction(nzmax)
288             _RL mortZTempFunction
289             _RL mortZ2TempFunction
290           _RL grazing_phyto(npmax)           _RL grazing_phyto(npmax)
291           _RL grazingP(nzmax)           _RL grazingP(nzmax)
292           _RL grazingN(nzmax)           _RL grazingN(nzmax)
# Line 289  c  variables for zooplankton grazing rat Line 295  c  variables for zooplankton grazing rat
295  #else  #else
296  c  variables for zooplankton grazing rates  c  variables for zooplankton grazing rates
297           _RL zooTempFunction(nzmax)           _RL zooTempFunction(nzmax)
298             _RL mortZTempFunction
299             _RL mortZ2TempFunction
300           _RL allphyto(nzmax)           _RL allphyto(nzmax)
301           _RL denphyto(nzmax)           _RL denphyto(nzmax)
302           _RL grazphy(npmax,nzmax)           _RL grazphy(npmax,nzmax)
# Line 600  ccccccccccccccccccccccccccccccc Line 608  ccccccccccccccccccccccccccccccc
608    
609  c cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc  c cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
610            call MONOD_TEMPFUNC(Tlocal,phytoTempFunction,            call MONOD_TEMPFUNC(Tlocal,phytoTempFunction,
611       &            zooTempFunction, reminTempFunction, myThid)       &            zooTempFunction, reminTempFunction,
612         &            mortPTempFunction, mortZTempFunction,
613         &            mortZ2TempFunction, myThid)
614            if (debug.eq.1) print*,'phytoTempFunction',            if (debug.eq.1) print*,'phytoTempFunction',
615       &                          phytoTempFunction, Tlocal       &                          phytoTempFunction, Tlocal
616  ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc  ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
# Line 629  c using Platt-like equations with inhibi Line 639  c using Platt-like equations with inhibi
639  #endif  #endif
640  c ANNA endif  c ANNA endif
641    
642    c pCO2 limit - default to non
643             do np=1,npmax
644               pCO2limit(np)=1. _d 0
645    c          if (np.eq.6) then
646    c             pCO2limit(np)=1. _d 0 + (pCO2local-400. _d -6)/600 _d -6
647    c             pCO2limit(np)=max(pCO2limit(np),1. _d 0)
648    c             pCO2limit(np)=min(pCO2limit(np),2. _d 0)
649    c          endif
650               if (debug.eq.15) print*,'pco2limit',pCO2limit(np),pCO2local
651             enddo
652    
653    
654  ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc  ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
655  c Determine phytoplankton nutrient limitation as mimimum of  c Determine phytoplankton nutrient limitation as mimimum of
656  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 846  c ANNA endif Line 868  c ANNA endif
868  #endif  #endif
869    
870            do np = 1, npmax            do np = 1, npmax
871             pcm(np)=pcmax(np)*limit(np)*phytoTempFunction(np)             pcm(np)=pcmax(np)*limit(np)*phytoTempFunction(np)*
872         &                                         pCO2limit(np)
873  #ifdef DYNAMIC_CHL  #ifdef DYNAMIC_CHL
874             if (phyto(np).gt. 0. _d 0) then             if (phyto(np).gt. 0. _d 0) then
875               chl2c(np)=phychl(np)/(phyto(np)*R_PC(np))               chl2c(np)=phychl(np)/(phyto(np)*R_PC(np))
# Line 923  c         acclim(np)=max(acclim(np),chl2 Line 946  c         acclim(np)=max(acclim(np),chl2
946  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
947            ChlGeiderlocal = 0. _d 0            ChlGeiderlocal = 0. _d 0
948            do np = 1, npmax            do np = 1, npmax
949             tmppcm = mu(np)*limit(np)*phytoTempFunction(np)             tmppcm = mu(np)*limit(np)*phytoTempFunction(np)*
950         &                                       pCO2limit(np)
951             if (tmppcm.gt.0.d0) then             if (tmppcm.gt.0.d0) then
952               tmpchl2c = Geider_chl2cmax(np)/               tmpchl2c = Geider_chl2cmax(np)/
953       &         (1+(Geider_chl2cmax(np)*Geider_alphachl(np)*PARdaylocal)/       &         (1+(Geider_chl2cmax(np)*Geider_alphachl(np)*PARdaylocal)/
# Line 1082  cccccccccccccccccccccccccccccccccccccccc Line 1106  cccccccccccccccccccccccccccccccccccccccc
1106  c accumulate particulate and dissolved detritus  c accumulate particulate and dissolved detritus
1107             do np=1, npmax             do np=1, npmax
1108                 totphy_pop=totphy_pop+                 totphy_pop=totphy_pop+
1109       &                ExportFracP(np)*mortphy(np)*phytomin(np)       &                ExportFracP(np)*mortphy(np)*
1110         &                mortPTempFunction*phytomin(np)
1111                 totphy_dop=totphy_dop+                 totphy_dop=totphy_dop+
1112       &                (1. _d 0-ExportFracP(np))*mortphy(np)*phytomin(np)       &                (1. _d 0-ExportFracP(np))*mortphy(np)*
1113         &                mortPTempFunction*phytomin(np)
1114                 totphy_pon=totphy_pon+ R_NP(np)*                 totphy_pon=totphy_pon+ R_NP(np)*
1115       &                ExportFracP(np)*mortphy(np)*phytomin(np)       &                ExportFracP(np)*mortphy(np)*
1116         &                mortPTempFunction*phytomin(np)
1117                 totphy_don=totphy_don+ R_NP(np)*                 totphy_don=totphy_don+ R_NP(np)*
1118       &               (1. _d 0-ExportFracP(np))*mortphy(np)*phytomin(np)       &               (1. _d 0-ExportFracP(np))*mortphy(np)*
1119         &                mortPTempFunction*phytomin(np)
1120                 totphy_pofe=totphy_pofe+ R_FeP(np)*                 totphy_pofe=totphy_pofe+ R_FeP(np)*
1121       &                ExportFracP(np)*mortphy(np)*phytomin(np)       &                ExportFracP(np)*mortphy(np)*
1122         &                mortPTempFunction*phytomin(np)
1123                 totphy_dofe=totphy_dofe+ R_FeP(np)*                 totphy_dofe=totphy_dofe+ R_FeP(np)*
1124       &               (1. _d 0-ExportFracP(np))*mortphy(np)*phytomin(np)       &               (1. _d 0-ExportFracP(np))*mortphy(np)*
1125         &                mortPTempFunction*phytomin(np)
1126                 totphy_posi=totphy_posi+ R_SiP(np)*                 totphy_posi=totphy_posi+ R_SiP(np)*
1127       &                mortphy(np)*phytomin(np)       &                mortphy(np)*
1128         &                mortPTempFunction*phytomin(np)
1129  #ifdef ALLOW_CARBON  #ifdef ALLOW_CARBON
1130                 totphy_poc=totphy_poc+ R_PC(np)*                 totphy_poc=totphy_poc+ R_PC(np)*
1131       &                ExportFracP(np)*mortphy(np)*phytomin(np)       &                ExportFracP(np)*mortphy(np)*
1132         &                mortPTempFunction*phytomin(np)
1133                 totphy_doc=totphy_doc+ R_PC(np)*                 totphy_doc=totphy_doc+ R_PC(np)*
1134       &               (1. _d 0-ExportFracP(np))*mortphy(np)*phytomin(np)       &               (1. _d 0-ExportFracP(np))*mortphy(np)*
1135         &                mortPTempFunction*phytomin(np)
1136                 totphy_pic=totphy_pic+ R_PC(np)*R_PICPOC(np)*                 totphy_pic=totphy_pic+ R_PC(np)*R_PICPOC(np)*
1137       &                mortphy(np)*phytomin(np)       &                mortphy(np)*
1138         &                mortPTempFunction*phytomin(np)
1139  #endif  #endif
1140              enddo              enddo
1141  #ifdef ALLOW_CDOM  #ifdef ALLOW_CDOM
# Line 1167  cccccccccccccccccccccccccccccccccccccccc Line 1201  cccccccccccccccccccccccccccccccccccccccc
1201  c accumulate particulate and dissolved detritus  c accumulate particulate and dissolved detritus
1202              do nz=1, nzmax              do nz=1, nzmax
1203                 totzoo_pop=totzoo_pop+                 totzoo_pop=totzoo_pop+
1204       &                     ExportFracZ(nz)*( mortzoo(nz)*zooP(nz)       &                     ExportFracZ(nz)*( mortzoo(nz)*
1205       &                     +  mortzoo2(nz)*zooP(nz)**2 )       &                     mortZTempFunction*zooP(nz)
1206         &                     +  mortzoo2(nz)*
1207         &                     mortZ2TempFunction*zooP(nz)**2 )
1208                 totzoo_dop=totzoo_dop+                 totzoo_dop=totzoo_dop+
1209       &                    (1. _d 0-ExportFracZ(nz))*(       &                    (1. _d 0-ExportFracZ(nz))*(
1210       &                     mortzoo(nz)*zooP(nz)+       &                     mortzoo(nz)*
1211       &                     mortzoo2(nz)*zooP(nz)**2 )       &                     mortZTempFunction*zooP(nz)+
1212         &                     mortzoo2(nz)*
1213         &                     mortZ2TempFunction*zooP(nz)**2 )
1214                 totzoo_pon=totzoo_pon+                 totzoo_pon=totzoo_pon+
1215       &                     ExportFracZ(nz)*( mortzoo(nz)*zooN(nz)       &                     ExportFracZ(nz)*( mortzoo(nz)*
1216       &                     +  mortzoo2(nz)*zooN(nz)**2 )       &                     mortZTempFunction*zooN(nz)
1217         &                     +  mortzoo2(nz)*
1218         &                     mortZ2TempFunction*zooN(nz)**2 )
1219                 totzoo_don=totzoo_don+                 totzoo_don=totzoo_don+
1220       &                    (1. _d 0-ExportFracZ(nz))*(       &                    (1. _d 0-ExportFracZ(nz))*(
1221       &                     mortzoo(nz)*zooN(nz)+       &                     mortzoo(nz)*
1222       &                     mortzoo2(nz)*zooN(nz)**2 )       &                     mortZTempFunction*zooN(nz)+
1223         &                     mortzoo2(nz)*
1224         &                     mortZ2TempFunction*zooN(nz)**2 )
1225                 totzoo_pofe=totzoo_pofe+                 totzoo_pofe=totzoo_pofe+
1226       &                     ExportFracZ(nz)*( mortzoo(nz)*zooFe(nz)       &                     ExportFracZ(nz)*( mortzoo(nz)*
1227       &                     +  mortzoo2(nz)*zooFe(nz)**2 )       &                     mortZTempFunction*zooFe(nz)
1228         &                     +  mortzoo2(nz)*
1229         &                     mortZ2TempFunction*zooFe(nz)**2 )
1230                 totzoo_dofe=totzoo_dofe+                 totzoo_dofe=totzoo_dofe+
1231       &                   (1. _d 0-ExportFracZ(nz))*(       &                   (1. _d 0-ExportFracZ(nz))*(
1232       &                    mortzoo(nz)*zooFe(nz) +       &                    mortzoo(nz)*
1233       &                    mortzoo2(nz)*zooFe(nz)**2 )       &                    mortZTempFunction*zooFe(nz) +
1234         &                    mortzoo2(nz)*
1235         &                    mortZ2TempFunction*zooFe(nz)**2 )
1236                 totzoo_posi=totzoo_posi+                 totzoo_posi=totzoo_posi+
1237       &                     ( mortzoo(nz)*zooSi(nz)+       &                     ( mortzoo(nz)*
1238       &                       mortzoo2(nz)*zooSi(nz)**2 )       &                       mortZTempFunction*zooSi(nz)+
1239         &                       mortzoo2(nz)*
1240         &                       mortZ2TempFunction*zooSi(nz)**2 )
1241  #ifdef ALLOW_CARBON  #ifdef ALLOW_CARBON
1242                 totzoo_poc=totzoo_poc+                 totzoo_poc=totzoo_poc+
1243       &                    ExportFracZ(nz)*( mortzoo(nz)*zooClocal(nz)       &                    ExportFracZ(nz)*( mortzoo(nz)*
1244       &                      +  mortzoo2(nz)*zooClocal(nz)**2 )       &                         mortZTempFunction*zooClocal(nz)
1245         &                      +  mortzoo2(nz)*
1246         &                         mortZ2TempFunction*zooClocal(nz)**2 )
1247                 totzoo_doc=totzoo_doc+                 totzoo_doc=totzoo_doc+
1248       &           (1. _d 0-ExportFracZ(nz))*( mortzoo(nz)*zooClocal(nz)       &           (1. _d 0-ExportFracZ(nz))*( mortzoo(nz)*
1249       &                      +  mortzoo2(nz)*zooClocal(nz)**2 )       &                         mortZTempFunction*zooClocal(nz)
1250         &                      +  mortzoo2(nz)*
1251         &                         mortZ2TempFunction*zooClocal(nz)**2 )
1252  #endif  #endif
1253              enddo              enddo
1254    
# Line 1255  c consumption - sum of phytoplankton con Line 1307  c consumption - sum of phytoplankton con
1307  c phospate uptake by each phytoplankton  c phospate uptake by each phytoplankton
1308  #ifndef GEIDER  #ifndef GEIDER
1309                 grow(np)=ngrow(np)*mu(np)*limit(np)*ilimit(np)*                 grow(np)=ngrow(np)*mu(np)*limit(np)*ilimit(np)*
1310       &                            phytoTempFunction(np)       &                            phytoTempFunction(np)*pCO2limit(np)
1311  #endif  #endif
1312  #ifdef GEIDER  #ifdef GEIDER
1313                 grow(np)=ngrow(np)*pcarbon(np)                 grow(np)=ngrow(np)*pcarbon(np)
# Line 1430  c phytoplankton Line 1482  c phytoplankton
1482  #else  #else
1483       &                        - sumgrazphy(np)       &                        - sumgrazphy(np)
1484  #endif  #endif
1485       &                        - mortphy(np)*phytomin(np)       &                        - mortphy(np)*
1486         &                          mortPTempFunction*phytomin(np)
1487       &                        + psinkphy(np)       &                        + psinkphy(np)
1488  #ifdef GEIDER  #ifdef GEIDER
1489  #ifdef DYNAMIC_CHL  #ifdef DYNAMIC_CHL
# Line 1445  c             dphychl(np) = rhochl(np)*P Line 1498  c             dphychl(np) = rhochl(np)*P
1498  #else  #else
1499       &                   - sumgrazphy(np)       &                   - sumgrazphy(np)
1500  #endif  #endif
1501       &                   - mortphy(np)*phytomin(np)) *chl2c(np)*R_PC(np)       &                   - mortphy(np)*
1502         &                     mortPTempFunction*phytomin(np))
1503         &                       *chl2c(np)*R_PC(np)
1504       &                        + psinkChl(np)       &                        + psinkChl(np)
1505  #endif  #endif
1506                Chl=Chl + phychl(np)                Chl=Chl + phychl(np)
# Line 1456  c%%% Line 1511  c%%%
1511  #ifdef OLD_GRAZE  #ifdef OLD_GRAZE
1512                tmpr=grazing_phyto(np)*                tmpr=grazing_phyto(np)*
1513       &              (phytomin(np)/(phytomin(np) + kgrazesat))       &              (phytomin(np)/(phytomin(np) + kgrazesat))
1514       &                        + mortphy(np)*phytomin(np)       &                        + mortphy(np)*
1515         &                          mortPTempFunction*phytomin(np)
1516       &                        - psinkphy(np)       &                        - psinkphy(np)
1517  #else  #else
1518                tmpr=sumgrazphy(np)                tmpr=sumgrazphy(np)
1519       &                        + mortphy(np)*phytomin(np)       &                        + mortphy(np)*
1520         &                          mortPTempFunction*phytomin(np)
1521       &                        - psinkphy(np)       &                        - psinkphy(np)
1522  #endif  #endif
1523  #ifdef DAR_DIAG_RSTAR  #ifdef DAR_DIAG_RSTAR
1524  #ifndef GEIDER  #ifndef GEIDER
1525                tmpgrow=ngrow(np)*mu(np)*ilimit(np)*                tmpgrow=ngrow(np)*mu(np)*ilimit(np)*
1526       &              phytoTempFunction(np)       &              phytoTempFunction(np)*pCO2limit(np)
1527  #endif  #endif
1528  #ifdef GEIDER  #ifdef GEIDER
1529                tmpgrow=grow(np)/limit(np)                tmpgrow=grow(np)/limit(np)
# Line 1527  c zooplankton mortality Line 1584  c zooplankton mortality
1584              do nz=1,nzmax              do nz=1,nzmax
1585  c zoo in P currency  c zoo in P currency
1586                dzooPdt(nz)  = dzooPdt(nz)                dzooPdt(nz)  = dzooPdt(nz)
1587       &                           - mortzoo(nz)*zooP(nz)       &                           - mortzoo(nz)*
1588       &                           - mortzoo2(nz)*zooP(nz)**2       &                             mortZTempFunction*zooP(nz)
1589         &                           - mortzoo2(nz)*
1590         &                             mortZ2TempFunction*zooP(nz)**2
1591  c zooplankton in other currencies  c zooplankton in other currencies
1592  C zooplankton stoichiometry varies according to food source  C zooplankton stoichiometry varies according to food source
1593                dzooNdt(nz)  = dzooNdt(nz)                dzooNdt(nz)  = dzooNdt(nz)
1594       &                           - mortzoo(nz)*zooN(nz)       &                           - mortzoo(nz)*
1595       &                           - mortzoo2(nz)*zooN(nz)**2       &                             mortZTempFunction*zooN(nz)
1596         &                           - mortzoo2(nz)*
1597         &                             mortZ2TempFunction*zooN(nz)**2
1598                dzooFedt(nz) = dzooFedt(nz)                dzooFedt(nz) = dzooFedt(nz)
1599       &                           - mortzoo(nz)*zooFe(nz)       &                           - mortzoo(nz)*
1600       &                           - mortzoo2(nz)*zooFe(nz)**2       &                             mortZTempFunction*zooFe(nz)
1601         &                           - mortzoo2(nz)*
1602         &                             mortZ2TempFunction*zooFe(nz)**2
1603                dzooSidt(nz) = dzooSidt(nz)                dzooSidt(nz) = dzooSidt(nz)
1604       &                           - mortzoo(nz)*zooSi(nz)       &                           - mortzoo(nz)*
1605       &                           - mortzoo2(nz)*zooSi(nz)**2       &                             mortZTempFunction*zooSi(nz)
1606         &                           - mortzoo2(nz)*
1607         &                             mortZ2TempFunction*zooSi(nz)**2
1608              enddo              enddo
1609    
1610    
# Line 1656  c loss of O2 by remineralization Line 1721  c loss of O2 by remineralization
1721  #ifdef OLD_GRAZE  #ifdef OLD_GRAZE
1722              do nz=1,nzmax              do nz=1,nzmax
1723                dzooCdt(nz)  = grazingC(nz)*zooClocal(nz)                dzooCdt(nz)  = grazingC(nz)*zooClocal(nz)
1724       &                           - mortzoo(nz)*zooClocal(nz)       &                           - mortzoo(nz)*
1725       &                           - mortzoo2(nz)*zooClocal(nz)**2       &                             mortZTempFunction*zooClocal(nz)
1726         &                           - mortzoo2(nz)*
1727         &                             mortZ2TempFunction*zooClocal(nz)**2
1728              enddo              enddo
1729  #else  #else
1730              do nz=1,nzmax              do nz=1,nzmax
1731                dzooCdt(nz)  = sumgrazzooc(nz)                dzooCdt(nz)  = sumgrazzooc(nz)
1732       &                           - mortzoo(nz)*zooClocal(nz)       &                           - mortzoo(nz)*
1733       &                           - mortzoo2(nz)*zooClocal(nz)**2       &                             mortZTempFunction*zooClocal(nz)
1734         &                           - mortzoo2(nz)*
1735         &                             mortZ2TempFunction*zooClocal(nz)**2
1736              enddo              enddo
1737  #endif  #endif
1738    

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.8

  ViewVC Help
Powered by ViewVC 1.1.22