- Timestamp:
- 2011-08-09T13:11:24+02:00 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2011/dev_r2787_PISCES_improvment/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zlim.F90
r2528 r2823 6 6 !! History : 1.0 ! 2004 (O. Aumont) Original code 7 7 !! 2.0 ! 2007-12 (C. Ethe, G. Madec) F90 8 !! 3.4 ! 2011-04 (O. Aumont, C. Ethe) Limitation for iron modelled in quota 8 9 !!---------------------------------------------------------------------- 9 10 #if defined key_pisces … … 14 15 !! p4z_lim_init : Read the namelist 15 16 !!---------------------------------------------------------------------- 16 USE trc17 USE oce_trc !18 USE trc !19 USE sms_pisces !17 USE oce_trc ! Shared ocean-passive tracers variables 18 USE trc ! Tracers defined 19 USE sms_pisces ! PISCES variables 20 USE p4zopt ! Optical 20 21 21 22 IMPLICIT NONE … … 26 27 27 28 !! * Shared module variables 28 REAL(wp), PUBLIC :: & 29 conc0 = 2.e-6_wp , & !: 30 conc1 = 10.e-6_wp , & !: 31 conc2 = 2.e-11_wp , & !: 32 conc2m = 8.E-11_wp , & !: 33 conc3 = 1.e-10_wp , & !: 34 conc3m = 4.e-10_wp , & !: 35 concnnh4 = 1.e-7_wp , & !: 36 concdnh4 = 5.e-7_wp , & !: 37 xksi1 = 2.E-6_wp , & !: 38 xksi2 = 3.33E-6_wp , & !: 39 xkdoc = 417.E-6_wp , & !: 40 caco3r = 0.3_wp !: 41 42 29 REAL(wp), PUBLIC :: conc0 = 2.e-6_wp !: NO3, PO4 half saturation 30 REAL(wp), PUBLIC :: conc1 = 8.e-6_wp !: Phosphate half saturation for diatoms 31 REAL(wp), PUBLIC :: conc2 = 1.e-9_wp !: Iron half saturation for nanophyto 32 REAL(wp), PUBLIC :: conc2m = 3.e-9_wp !: Max iron half saturation for nanophyto 33 REAL(wp), PUBLIC :: conc3 = 2.e-9_wp !: Iron half saturation for diatoms 34 REAL(wp), PUBLIC :: conc3m = 8.e-9_wp !: Max iron half saturation for diatoms 35 REAL(wp), PUBLIC :: concnnh4 = 1.e-7_wp !: NH4 half saturation for phyto 36 REAL(wp), PUBLIC :: concdnh4 = 4.e-7_wp !: NH4 half saturation for diatoms 37 REAL(wp), PUBLIC :: xksi1 = 2.E-6_wp !: half saturation constant for Si uptake 38 REAL(wp), PUBLIC :: xksi2 = 3.33e-6_wp !: half saturation constant for Si/C 39 REAL(wp), PUBLIC :: xkdoc = 417.e-6_wp !: 2nd half-sat. of DOC remineralization 40 REAL(wp), PUBLIC :: concfebac = 1.E-11_wp !: Fe half saturation for bacteria 41 REAL(wp), PUBLIC :: qnfelim = 7.E-6_wp !: optimal Fe quota for nanophyto 42 REAL(wp), PUBLIC :: qdfelim = 7.E-6_wp !: optimal Fe quota for diatoms 43 REAL(wp), PUBLIC :: caco3r = 0.16_wp !: mean rainratio 44 45 ! Coefficient for iron limitation 46 ! REAL(wp) :: xcoef1 = 0.0016 47 ! REAL(wp) :: xcoef2 = 1.21E-5 * 1.5 48 ! REAL(wp) :: xcoef3 = 1.15E-4 / 7.625 / 55.85 49 REAL(wp) :: xcoef1 = 0.0016 / 55.85 50 REAL(wp) :: xcoef2 = 1.21E-5 * 14. / 55.85 / 7.625 * 0.5 * 1.5 51 REAL(wp) :: xcoef3 = 1.15E-4 * 14. / 55.85 / 7.625 * 0.5 43 52 !!* Substitution 44 53 # include "top_substitute.h90" … … 60 69 !! ** Method : - ??? 61 70 !!--------------------------------------------------------------------- 71 ! 62 72 INTEGER, INTENT(in) :: kt 73 ! 63 74 INTEGER :: ji, jj, jk 64 75 REAL(wp) :: zlim1, zlim2, zlim3, zlim4, zno3, zferlim 65 REAL(wp) :: zconctemp, zconctemp2, zconctempn, zconctempn2 66 REAL(wp) :: ztemp, zdenom 76 REAL(wp) :: zconcd, zconcd2, zconcn, zconcn2 77 REAL(wp) :: z1_trndia, z1_trnphy, ztem1, ztem2, zetot1, zetot2 78 REAL(wp) :: zdenom, zratio, zironmin 79 REAL(wp) :: zconc1d, zconc1dnh4, zconc0n, zconc0nnh4 67 80 !!--------------------------------------------------------------------- 68 69 70 ! Tuning of the iron concentration to a minimum71 ! level that is set to the detection limit72 ! -------------------------------------73 81 74 82 DO jk = 1, jpkm1 75 83 DO jj = 1, jpj 76 84 DO ji = 1, jpi 77 zno3=trn(ji,jj,jk,jpno3) 78 zferlim = MAX( 1.5e-11*(zno3/40E-6)**2, 3e-12 ) 79 zferlim = MIN( zferlim, 1.5e-11 ) 85 86 ! Tuning of the iron concentration to a minimum level that is set to the detection limit 87 !------------------------------------- 88 zno3 = trn(ji,jj,jk,jpno3) / 40.e-6 89 zferlim = MAX( 2e-11 * zno3 * zno3, 5e-12 ) 90 zferlim = MIN( zferlim, 3e-11 ) 80 91 trn(ji,jj,jk,jpfer) = MAX( trn(ji,jj,jk,jpfer), zferlim ) 81 END DO 92 93 ! Computation of a variable Ks for iron on diatoms taking into account 94 ! that increasing biomass is made of generally bigger cells 95 !------------------------------------------------ 96 zconcd = MAX( 0.e0 , trn(ji,jj,jk,jpdia) - 5.e-7 ) 97 zconcd2 = trn(ji,jj,jk,jpdia) - zconcd 98 zconcn = MAX( 0.e0 , trn(ji,jj,jk,jpphy) - 1.e-6 ) 99 zconcn2 = trn(ji,jj,jk,jpphy) - zconcn 100 z1_trnphy = 1. / ( trn(ji,jj,jk,jpphy) + rtrn ) 101 z1_trndia = 1. / ( trn(ji,jj,jk,jpdia) + rtrn ) 102 103 concdfe(ji,jj,jk) = MAX( conc3 , ( zconcd2 * conc3 + conc3m * zconcd ) * z1_trndia ) 104 zconc1d = MAX( 2.* conc0 , ( zconcd2 * 2. * conc0 + conc1 * zconcd ) * z1_trndia ) 105 zconc1dnh4 = MAX( 2.* concnnh4, ( zconcd2 * 2. * concnnh4 + concdnh4 * zconcd ) * z1_trndia ) 106 107 concnfe(ji,jj,jk) = MAX( conc2 , ( zconcn2 * conc2 + conc2m * zconcn ) * z1_trnphy ) 108 zconc0n = MAX( conc0 , ( zconcn2 * conc0 + 2. * conc0 * zconcn ) * z1_trnphy ) 109 zconc0nnh4 = MAX( concnnh4 , ( zconcn2 * concnnh4 + 2. * concnnh4 * zconcn ) * z1_trnphy ) 110 111 ! Michaelis-Menten Limitation term for nutrients Small flagellates 112 ! ----------------------------------------------- 113 zdenom = 1. / ( zconc0n * zconc0nnh4 + zconc0nnh4 * trn(ji,jj,jk,jpno3) + zconc0n * trn(ji,jj,jk,jpnh4) ) 114 xnanono3(ji,jj,jk) = trn(ji,jj,jk,jpno3) * zconc0nnh4 * zdenom 115 xnanonh4(ji,jj,jk) = trn(ji,jj,jk,jpnh4) * zconc0n * zdenom 116 ! 117 zlim1 = xnanono3(ji,jj,jk) + xnanonh4(ji,jj,jk) 118 zlim2 = trn(ji,jj,jk,jppo4) / ( trn(ji,jj,jk,jppo4) + zconc0nnh4 ) 119 zratio = trn(ji,jj,jk,jpnfe) * z1_trnphy 120 zironmin = xcoef1 * trn(ji,jj,jk,jpnch) * z1_trnphy + xcoef2 * zlim1 + xcoef3 * xnanono3(ji,jj,jk) 121 zlim3 = MAX( 0.,( zratio - zironmin ) / qnfelim ) 122 xlimnfe(ji,jj,jk) = MIN( 1., zlim3 ) 123 xlimphy(ji,jj,jk) = MIN( zlim1, zlim2, zlim3 ) 124 ! 125 zlim1 = trn(ji,jj,jk,jpnh4) / ( concnnh4 + trn(ji,jj,jk,jpnh4) ) 126 zlim3 = trn(ji,jj,jk,jpfer) / ( concfebac+ trn(ji,jj,jk,jpfer) ) 127 zlim4 = trn(ji,jj,jk,jpdoc) / ( xkdoc + trn(ji,jj,jk,jpdoc) ) 128 xlimbac(ji,jj,jk) = MIN( zlim1, zlim2, zlim3 ) * zlim4 129 130 ! Michaelis-Menten Limitation term for nutrients Diatoms 131 ! ---------------------------------------------- 132 zdenom = 1. / ( zconc1d * zconc1dnh4 + zconc1dnh4 * trn(ji,jj,jk,jpno3) + zconc1d * trn(ji,jj,jk,jpnh4) ) 133 xdiatno3(ji,jj,jk) = trn(ji,jj,jk,jpno3) * zconc1dnh4 * zdenom 134 xdiatnh4(ji,jj,jk) = trn(ji,jj,jk,jpnh4) * zconc1d * zdenom 135 ! 136 zlim1 = xdiatno3(ji,jj,jk) + xdiatnh4(ji,jj,jk) 137 zlim2 = trn(ji,jj,jk,jppo4) / ( trn(ji,jj,jk,jppo4) + zconc1dnh4 ) 138 zlim3 = trn(ji,jj,jk,jpsil) / ( trn(ji,jj,jk,jpsil) + xksi(ji,jj) ) 139 zratio = trn(ji,jj,jk,jpdfe)/(trn(ji,jj,jk,jpdia)+rtrn) 140 zironmin = xcoef1 * trn(ji,jj,jk,jpdch) * z1_trndia + xcoef2 * zlim1 + xcoef3 * xdiatno3(ji,jj,jk) 141 zlim4 = MAX( 0., ( zratio - zironmin ) / qdfelim ) 142 xlimdfe(ji,jj,jk) = MIN( 1., zlim4 ) 143 xlimdia(ji,jj,jk) = MIN( zlim1, zlim2, zlim3, zlim4 ) 144 xlimsi(ji,jj,jk) = MIN( zlim1, zlim2, zlim4 ) 145 END DO 82 146 END DO 83 147 END DO 84 148 85 ! Computation of a variable Ks for iron on diatoms taking into account 86 ! that increasing biomass is made of generally bigger cells 87 ! ------------------------------------------------ 88 149 ! Compute the fraction of nanophytoplankton that is made of calcifiers 150 ! -------------------------------------------------------------------- 89 151 DO jk = 1, jpkm1 90 152 DO jj = 1, jpj 91 153 DO ji = 1, jpi 92 zconctemp = MAX( 0.e0 , trn(ji,jj,jk,jpdia)-5e-7 ) 93 zconctemp2 = trn(ji,jj,jk,jpdia) - zconctemp 94 zconctempn = MAX( 0.e0 , trn(ji,jj,jk,jpphy)-1e-6 ) 95 zconctempn2 = trn(ji,jj,jk,jpphy) - zconctempn 96 concdfe(ji,jj,jk) = ( zconctemp2 * conc3 + conc3m * zconctemp) & 97 & / ( trn(ji,jj,jk,jpdia) + rtrn ) 98 concdfe(ji,jj,jk) = MAX( conc3, concdfe(ji,jj,jk) ) 99 concnfe(ji,jj,jk) = ( zconctempn2 * conc2 + conc2m * zconctempn) & 100 & / ( trn(ji,jj,jk,jpphy) + rtrn ) 101 concnfe(ji,jj,jk) = MAX( conc2, concnfe(ji,jj,jk) ) 102 END DO 103 END DO 104 END DO 105 106 ! Michaelis-Menten Limitation term for nutrients Small flagellates 107 ! ----------------------------------------------- 108 DO jk = 1, jpkm1 109 DO jj = 1, jpj 110 DO ji = 1, jpi 111 zdenom = 1. / & 112 & ( conc0 * concnnh4 + concnnh4 * trn(ji,jj,jk,jpno3) + conc0 * trn(ji,jj,jk,jpnh4) ) 113 xnanono3(ji,jj,jk) = trn(ji,jj,jk,jpno3) * concnnh4 * zdenom 114 xnanonh4(ji,jj,jk) = trn(ji,jj,jk,jpnh4) * conc0 * zdenom 115 116 zlim1 = xnanono3(ji,jj,jk) + xnanonh4(ji,jj,jk) 117 zlim2 = trn(ji,jj,jk,jppo4) / ( trn(ji,jj,jk,jppo4) + concnnh4 ) 118 zlim3 = trn(ji,jj,jk,jpfer) / ( trn(ji,jj,jk,jpfer) + concnfe(ji,jj,jk) ) 119 xlimphy(ji,jj,jk) = MIN( zlim1, zlim2, zlim3 ) 120 zlim1 = trn(ji,jj,jk,jpnh4) / ( concnnh4 + trn(ji,jj,jk,jpnh4) ) 121 zlim3 = trn(ji,jj,jk,jpfer) / ( conc2 + trn(ji,jj,jk,jpfer) ) 122 zlim4 = trn(ji,jj,jk,jpdoc) / ( xkdoc + trn(ji,jj,jk,jpdoc) ) 123 xlimbac(ji,jj,jk) = MIN( zlim1, zlim2, zlim3 ) * zlim4 124 125 END DO 126 END DO 127 END DO 128 129 ! Michaelis-Menten Limitation term for nutrients Diatoms 130 ! ---------------------------------------------- 131 DO jk = 1, jpkm1 132 DO jj = 1, jpj 133 DO ji = 1, jpi 134 zdenom = 1. / & 135 & ( conc1 * concdnh4 + concdnh4 * trn(ji,jj,jk,jpno3) + conc1 * trn(ji,jj,jk,jpnh4) ) 136 137 xdiatno3(ji,jj,jk) = trn(ji,jj,jk,jpno3) * concdnh4 * zdenom 138 xdiatnh4(ji,jj,jk) = trn(ji,jj,jk,jpnh4) * conc1 * zdenom 139 140 zlim1 = xdiatno3(ji,jj,jk) + xdiatnh4(ji,jj,jk) 141 zlim2 = trn(ji,jj,jk,jppo4) / ( trn(ji,jj,jk,jppo4) + concdnh4 ) 142 zlim3 = trn(ji,jj,jk,jpsil) / ( trn(ji,jj,jk,jpsil) + xksi (ji,jj) ) 143 zlim4 = trn(ji,jj,jk,jpfer) / ( trn(ji,jj,jk,jpfer) + concdfe(ji,jj,jk) ) 144 xlimdia(ji,jj,jk) = MIN( zlim1, zlim2, zlim3, zlim4 ) 145 146 END DO 147 END DO 148 END DO 149 150 151 ! Compute the fraction of nanophytoplankton that is made of calcifiers 152 ! -------------------------------------------------------------------- 153 154 DO jk = 1, jpkm1 155 DO jj = 1, jpj 156 DO ji = 1, jpi 157 ztemp = MAX( 0., tsn(ji,jj,jk,jp_tem) ) 158 xfracal(ji,jj,jk) = caco3r * xlimphy(ji,jj,jk) & 159 & * MAX( 0.0001, ztemp / ( 2.+ ztemp ) ) & 160 & * MAX( 1., trn(ji,jj,jk,jpphy) * 1.e6 / 2. ) 154 zlim1 = ( trn(ji,jj,jk,jpno3) * concnnh4 + trn(ji,jj,jk,jpnh4) * conc0 ) & 155 & / ( conc0 * concnnh4 + concnnh4 * trn(ji,jj,jk,jpno3) + conc0 * trn(ji,jj,jk,jpnh4) ) 156 zlim2 = trn(ji,jj,jk,jppo4) / ( trn(ji,jj,jk,jppo4) + concnnh4 ) 157 zlim3 = trn(ji,jj,jk,jpfer) / ( trn(ji,jj,jk,jpfer) + concfebac ) 158 ztem1 = MAX( 0., tsn(ji,jj,jk,jp_tem) ) 159 ztem2 = tsn(ji,jj,jk,jp_tem) - 10. 160 zetot1 = MAX( 0., etot(ji,jj,jk) - 1.) / ( 4. + etot(ji,jj,jk) ) 161 zetot2 = 1. / ( 30. + etot(ji,jj,jk) ) 162 163 xfracal(ji,jj,jk) = caco3r * MIN( zlim1, zlim2, zlim3 ) & 164 & * ztem1 / ( 0.1 + ztem1 ) & 165 & * MAX( 1., trn(ji,jj,jk,jpphy) * 1.e6 / 2. ) & 166 & * 2.325 * zetot1 * 30. * zetot2 & 167 & * ( 1. + EXP(-ztem2 * ztem2 / 25. ) ) & 168 & * MIN( 1., 50. / ( hmld(ji,jj) + rtrn ) ) 161 169 xfracal(ji,jj,jk) = MIN( 0.8 , xfracal(ji,jj,jk) ) 162 xfracal(ji,jj,jk) = MAX( 0.0 1, xfracal(ji,jj,jk) )170 xfracal(ji,jj,jk) = MAX( 0.02, xfracal(ji,jj,jk) ) 163 171 END DO 164 172 END DO … … 182 190 183 191 NAMELIST/nampislim/ conc0, conc1, conc2, conc2m, conc3, conc3m, & 184 & concnnh4, concdnh4, xksi1, xksi2, xkdoc, caco3r 185 186 REWIND( numnat ) ! read numnat 187 READ ( numnat, nampislim ) 192 & concnnh4, concdnh4, xksi1, xksi2, xkdoc, & 193 & concfebac, qnfelim, qdfelim, caco3r 194 195 REWIND( numnatp ) ! read numnat 196 READ ( numnatp, nampislim ) 188 197 189 198 IF(lwp) THEN ! control print … … 192 201 WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' 193 202 WRITE(numout,*) ' mean rainratio caco3r =', caco3r 194 WRITE(numout,*) ' NO3, PO4 half saturation conc0 203 WRITE(numout,*) ' NO3, PO4 half saturation conc0 =', conc0 195 204 WRITE(numout,*) ' half saturation constant for Si uptake xksi1 =', xksi1 196 205 WRITE(numout,*) ' half saturation constant for Si/C xksi2 =', xksi2 197 WRITE(numout,*) ' 2nd half-sat. of DOC remineralization xkdoc =', xkdoc206 WRITE(numout,*) ' 2nd half-sat. of DOC remineralization xkdoc =', xkdoc 198 207 WRITE(numout,*) ' Phosphate half saturation for diatoms conc1 =', conc1 199 208 WRITE(numout,*) ' Iron half saturation for phyto conc2 =', conc2 … … 203 212 WRITE(numout,*) ' NH4 half saturation for phyto concnnh4 =', concnnh4 204 213 WRITE(numout,*) ' NH4 half saturation for diatoms concdnh4 =', concdnh4 214 WRITE(numout,*) ' Fe half saturation for bacteria concfebac =', concfebac 215 WRITE(numout,*) ' optimal Fe quota for nano. qnfelim =', qnfelim 216 WRITE(numout,*) ' Optimal Fe quota for diatoms qdfelim =', qdfelim 205 217 ENDIF 206 218
Note: See TracChangeset
for help on using the changeset viewer.