- Timestamp:
- 2020-03-11T16:02:54+01:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zlim.F90
r11536 r12537 2 2 !!====================================================================== 3 3 !! *** MODULE p4zlim *** 4 !! TOP : PISCES4 !! TOP : Computes the nutrient limitation terms of phytoplankton 5 5 !!====================================================================== 6 6 !! History : 1.0 ! 2004 (O. Aumont) Original code … … 14 14 USE trc ! Tracers defined 15 15 USE sms_pisces ! PISCES variables 16 USE iom ! 16 USE iom ! I/O manager 17 17 18 18 IMPLICIT NONE 19 19 PRIVATE 20 20 21 PUBLIC p4z_lim 22 PUBLIC p4z_lim_init 23 PUBLIC p4z_lim_alloc 21 PUBLIC p4z_lim ! called in p4zbio.F90 22 PUBLIC p4z_lim_init ! called in trcsms_pisces.F90 23 PUBLIC p4z_lim_alloc ! called in trcini_pisces.F90 24 24 25 25 !! * Shared module variables 26 26 REAL(wp), PUBLIC :: concnno3 !: NO3, PO4 half saturation 27 27 REAL(wp), PUBLIC :: concdno3 !: Phosphate half saturation for diatoms 28 REAL(wp), PUBLIC :: concnnh4 !: NH4 half saturation for phyto28 REAL(wp), PUBLIC :: concnnh4 !: NH4 half saturation for nanophyto 29 29 REAL(wp), PUBLIC :: concdnh4 !: NH4 half saturation for diatoms 30 30 REAL(wp), PUBLIC :: concnfer !: Iron half saturation for nanophyto … … 46 46 47 47 !!* Phytoplankton limitation terms 48 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xnanono3 !: ???49 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xdiatno3 !: ???50 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xnanonh4 !: ???51 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xdiatnh4 !: ???52 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xnanopo4 !: ???53 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xdiatpo4 !: ???54 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xlimphy !: ???55 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xlimdia !: ???56 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xlimnfe !: ???57 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xlimdfe !: ???58 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xlimsi !: ???59 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xlimbac !: ??60 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xlimbacl !: ??61 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: concdfe !: ???62 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: concnfe !: ???63 64 ! Coefficient for iron limitation 48 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xnanono3 !: Nanophyto limitation by NO3 49 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xdiatno3 !: Diatoms limitation by NO3 50 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xnanonh4 !: Nanophyto limitation by NH4 51 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xdiatnh4 !: Diatoms limitation by NH4 52 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xnanopo4 !: Nanophyto limitation by PO4 53 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xdiatpo4 !: Diatoms limitation by PO4 54 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xlimphy !: Nutrient limitation term of nanophytoplankton 55 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xlimdia !: Nutrient limitation term of diatoms 56 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xlimnfe !: Nanophyto limitation by Iron 57 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xlimdfe !: Diatoms limitation by iron 58 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xlimsi !: Diatoms limitation by Si 59 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xlimbac !: Bacterial limitation term 60 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xlimbacl !: Bacterial limitation term 61 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: concdfe !: Limitation of diatoms uptake of Fe 62 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: concnfe !: Limitation of Nano uptake of Fe 63 64 ! Coefficient for iron limitation following Flynn and Hipkin (1999) 65 65 REAL(wp) :: xcoef1 = 0.0016 / 55.85 66 66 REAL(wp) :: xcoef2 = 1.21E-5 * 14. / 55.85 / 7.625 * 0.5 * 1.5 … … 79 79 !! 80 80 !! ** Purpose : Compute the co-limitations by the various nutrients 81 !! for the various phytoplankton species82 !! 83 !! ** Method : - ???81 !! for the various phytoplankton species 82 !! 83 !! ** Method : - Limitation follows the Liebieg law of the minimum 84 84 !!--------------------------------------------------------------------- 85 85 INTEGER, INTENT(in) :: kt, knt … … 99 99 DO ji = 1, jpi 100 100 101 ! Tuning of the iron concentration to a minimum level that is set to the detection limit 102 !------------------------------------- 101 ! Tuning of the iron concentration to a minimum level that 102 ! is set to the detection limit 103 ! -------------------------------------------------------- 103 104 zno3 = trb(ji,jj,jk,jpno3) / 40.e-6 104 105 zferlim = MAX( 3e-11 * zno3 * zno3, 5e-12 ) … … 106 107 trb(ji,jj,jk,jpfer) = MAX( trb(ji,jj,jk,jpfer), zferlim ) 107 108 108 ! Computation of a variable Ks for iron ondiatoms taking into account109 ! Computation of a variable Ks of diatoms taking into account 109 110 ! that increasing biomass is made of generally bigger cells 110 !------------------------------------------------ 111 !------------------------------------------------------------ 111 112 zconcd = MAX( 0.e0 , trb(ji,jj,jk,jpdia) - xsizedia ) 112 113 zconcd2 = trb(ji,jj,jk,jpdia) - zconcd … … 124 125 zconc0nnh4 = MAX( concnnh4, ( zconcn2 * concnnh4 + concnnh4 * xsizern * zconcn ) * z1_trbphy ) 125 126 126 ! Michaelis-Menten Limitation term for nutrients Small bacteria 127 ! ------------------------------------------------------------- 127 ! Michaelis-Menten Limitation term by nutrients of 128 ! heterotrophic bacteria 129 ! ------------------------------------------------- 128 130 zdenom = 1. / ( concbno3 * concbnh4 + concbnh4 * trb(ji,jj,jk,jpno3) + concbno3 * trb(ji,jj,jk,jpnh4) ) 129 131 xnanono3(ji,jj,jk) = trb(ji,jj,jk,jpno3) * concbnh4 * zdenom … … 134 136 zlim3 = trb(ji,jj,jk,jpfer) / ( concbfe + trb(ji,jj,jk,jpfer) ) 135 137 zlim4 = trb(ji,jj,jk,jpdoc) / ( xkdoc + trb(ji,jj,jk,jpdoc) ) 138 ! Xlimbac is used for DOC solubilization whereas xlimbacl 139 ! is used for all the other bacterial-dependent terms 140 ! ------------------------------------------------------- 136 141 xlimbacl(ji,jj,jk) = MIN( zlim1, zlim2, zlim3 ) 137 142 xlimbac (ji,jj,jk) = MIN( zlim1, zlim2, zlim3 ) * zlim4 138 143 139 ! Michaelis-Menten Limitation term for nutrients Small flagellates140 ! ----------------------------------------------- 144 ! Michaelis-Menten Limitation term by nutrients: Nanophyto 145 ! -------------------------------------------------------- 141 146 zdenom = 1. / ( zconc0n * zconc0nnh4 + zconc0nnh4 * trb(ji,jj,jk,jpno3) + zconc0n * trb(ji,jj,jk,jpnh4) ) 142 147 xnanono3(ji,jj,jk) = trb(ji,jj,jk,jpno3) * zconc0nnh4 * zdenom … … 146 151 zlim2 = trb(ji,jj,jk,jppo4) / ( trb(ji,jj,jk,jppo4) + zconc0nnh4 ) 147 152 zratio = trb(ji,jj,jk,jpnfe) * z1_trbphy 153 154 ! The minimum iron quota depends on the size of PSU, respiration 155 ! and the reduction of nitrate following the parameterization 156 ! proposed by Flynn and Hipkin (1999) 148 157 zironmin = xcoef1 * trb(ji,jj,jk,jpnch) * z1_trbphy + xcoef2 * zlim1 + xcoef3 * xnanono3(ji,jj,jk) 149 158 zlim3 = MAX( 0.,( zratio - zironmin ) / qnfelim ) … … 151 160 xlimnfe (ji,jj,jk) = MIN( 1., zlim3 ) 152 161 xlimphy (ji,jj,jk) = MIN( zlim1, zlim2, zlim3 ) 153 !154 ! Michaelis-Menten Limitation term for nutrientsDiatoms155 ! ---------------------------------------------- 162 163 ! Michaelis-Menten Limitation term by nutrients : Diatoms 164 ! ------------------------------------------------------- 156 165 zdenom = 1. / ( zconc1d * zconc1dnh4 + zconc1dnh4 * trb(ji,jj,jk,jpno3) + zconc1d * trb(ji,jj,jk,jpnh4) ) 157 166 xdiatno3(ji,jj,jk) = trb(ji,jj,jk,jpno3) * zconc1dnh4 * zdenom … … 162 171 zlim3 = trb(ji,jj,jk,jpsil) / ( trb(ji,jj,jk,jpsil) + xksi(ji,jj) ) 163 172 zratio = trb(ji,jj,jk,jpdfe) * z1_trbdia 173 174 ! The minimum iron quota depends on the size of PSU, respiration 175 ! and the reduction of nitrate following the parameterization 176 ! proposed by Flynn and Hipkin (1999) 164 177 zironmin = xcoef1 * trb(ji,jj,jk,jpdch) * z1_trbdia + xcoef2 * zlim1 + xcoef3 * xdiatno3(ji,jj,jk) 165 178 zlim4 = MAX( 0., ( zratio - zironmin ) / qdfelim ) … … 173 186 174 187 ! Compute the fraction of nanophytoplankton that is made of calcifiers 188 ! This is a purely adhoc formulation described in Aumont et al. (2015) 189 ! This fraction depends on nutrient limitation, light, temperature 175 190 ! -------------------------------------------------------------------- 176 191 DO jk = 1, jpkm1 … … 206 221 nitrfac(ji,jj,jk) = MIN( 1., nitrfac(ji,jj,jk) ) 207 222 ! 208 ! denitrificationfactor computed from NO3 levels223 ! redox factor computed from NO3 levels 209 224 nitrfac2(ji,jj,jk) = MAX( 0.e0, ( 1.E-6 - trb(ji,jj,jk,jpno3) ) & 210 225 & / ( 1.E-6 + trb(ji,jj,jk,jpno3) ) ) … … 215 230 ! 216 231 IF( lk_iomput .AND. knt == nrdttrc ) THEN ! save output diagnostics 217 IF( iom_use( "xfracal" ) ) CALL iom_put( "xfracal", xfracal(:,:,:) * tmask(:,:,:) ) ! euphotic layer deptht232 IF( iom_use( "xfracal" ) ) CALL iom_put( "xfracal", xfracal(:,:,:) * tmask(:,:,:) ) ! Faction of nanophytoplankton that is calcifiers 218 233 IF( iom_use( "LNnut" ) ) CALL iom_put( "LNnut" , xlimphy(:,:,:) * tmask(:,:,:) ) ! Nutrient limitation term 219 234 IF( iom_use( "LDnut" ) ) CALL iom_put( "LDnut" , xlimdia(:,:,:) * tmask(:,:,:) ) ! Nutrient limitation term … … 231 246 !! *** ROUTINE p4z_lim_init *** 232 247 !! 233 !! ** Purpose : Initialization of nutrient limitation parameters234 !! 235 !! ** Method : Read the namp islim namelist and check the parameters248 !! ** Purpose : Initialization of the nutrient limitation parameters 249 !! 250 !! ** Method : Read the namp4zlim namelist and check the parameters 236 251 !! called at the first timestep (nittrc000) 237 252 !! 238 !! ** input : Namelist namp islim253 !! ** input : Namelist namp4zlim 239 254 !! 240 255 !!---------------------------------------------------------------------- … … 252 267 ENDIF 253 268 ! 254 REWIND( numnatp_ref ) ! Namelist namp islim in reference namelist : Pisces nutrient limitation parameters269 REWIND( numnatp_ref ) ! Namelist namp4zlim in reference namelist : Pisces nutrient limitation parameters 255 270 READ ( numnatp_ref, namp4zlim, IOSTAT = ios, ERR = 901) 256 271 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp4zlim in reference namelist' ) 257 REWIND( numnatp_cfg ) ! Namelist namp islim in configuration namelist : Pisces nutrient limitation parameters272 REWIND( numnatp_cfg ) ! Namelist namp4zlim in configuration namelist : Pisces nutrient limitation parameters 258 273 READ ( numnatp_cfg, namp4zlim, IOSTAT = ios, ERR = 902 ) 259 274 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namp4zlim in configuration namelist' )
Note: See TracChangeset
for help on using the changeset viewer.