Changeset 10975 for NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/PISCES/P4Z/p4zlim.F90
- Timestamp:
- 2019-05-13T18:34:33+02:00 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/PISCES/P4Z/p4zlim.F90
r10425 r10975 74 74 CONTAINS 75 75 76 SUBROUTINE p4z_lim( kt, knt )76 SUBROUTINE p4z_lim( kt, knt, Kbb, Kmm ) 77 77 !!--------------------------------------------------------------------- 78 78 !! *** ROUTINE p4z_lim *** … … 84 84 !!--------------------------------------------------------------------- 85 85 INTEGER, INTENT(in) :: kt, knt 86 INTEGER, INTENT(in) :: Kbb, Kmm ! time level indices 86 87 ! 87 88 INTEGER :: ji, jj, jk … … 101 102 ! Tuning of the iron concentration to a minimum level that is set to the detection limit 102 103 !------------------------------------- 103 zno3 = tr b(ji,jj,jk,jpno3) / 40.e-6104 zno3 = tr(ji,jj,jk,jpno3,Kbb) / 40.e-6 104 105 zferlim = MAX( 3e-11 * zno3 * zno3, 5e-12 ) 105 106 zferlim = MIN( zferlim, 7e-11 ) 106 tr b(ji,jj,jk,jpfer) = MAX( trb(ji,jj,jk,jpfer), zferlim )107 tr(ji,jj,jk,jpfer,Kbb) = MAX( tr(ji,jj,jk,jpfer,Kbb), zferlim ) 107 108 108 109 ! Computation of a variable Ks for iron on diatoms taking into account 109 110 ! that increasing biomass is made of generally bigger cells 110 111 !------------------------------------------------ 111 zconcd = MAX( 0.e0 , tr b(ji,jj,jk,jpdia) - xsizedia )112 zconcd2 = tr b(ji,jj,jk,jpdia) - zconcd113 zconcn = MAX( 0.e0 , tr b(ji,jj,jk,jpphy) - xsizephy )114 zconcn2 = tr b(ji,jj,jk,jpphy) - zconcn115 z1_trbphy = 1. / ( tr b(ji,jj,jk,jpphy) + rtrn )116 z1_trbdia = 1. / ( tr b(ji,jj,jk,jpdia) + rtrn )112 zconcd = MAX( 0.e0 , tr(ji,jj,jk,jpdia,Kbb) - xsizedia ) 113 zconcd2 = tr(ji,jj,jk,jpdia,Kbb) - zconcd 114 zconcn = MAX( 0.e0 , tr(ji,jj,jk,jpphy,Kbb) - xsizephy ) 115 zconcn2 = tr(ji,jj,jk,jpphy,Kbb) - zconcn 116 z1_trbphy = 1. / ( tr(ji,jj,jk,jpphy,Kbb) + rtrn ) 117 z1_trbdia = 1. / ( tr(ji,jj,jk,jpdia,Kbb) + rtrn ) 117 118 118 119 concdfe(ji,jj,jk) = MAX( concdfer, ( zconcd2 * concdfer + concdfer * xsizerd * zconcd ) * z1_trbdia ) … … 126 127 ! Michaelis-Menten Limitation term for nutrients Small bacteria 127 128 ! ------------------------------------------------------------- 128 zdenom = 1. / ( concbno3 * concbnh4 + concbnh4 * tr b(ji,jj,jk,jpno3) + concbno3 * trb(ji,jj,jk,jpnh4) )129 xnanono3(ji,jj,jk) = tr b(ji,jj,jk,jpno3) * concbnh4 * zdenom130 xnanonh4(ji,jj,jk) = tr b(ji,jj,jk,jpnh4) * concbno3 * zdenom129 zdenom = 1. / ( concbno3 * concbnh4 + concbnh4 * tr(ji,jj,jk,jpno3,Kbb) + concbno3 * tr(ji,jj,jk,jpnh4,Kbb) ) 130 xnanono3(ji,jj,jk) = tr(ji,jj,jk,jpno3,Kbb) * concbnh4 * zdenom 131 xnanonh4(ji,jj,jk) = tr(ji,jj,jk,jpnh4,Kbb) * concbno3 * zdenom 131 132 ! 132 133 zlim1 = xnanono3(ji,jj,jk) + xnanonh4(ji,jj,jk) 133 zlim2 = tr b(ji,jj,jk,jppo4) / ( trb(ji,jj,jk,jppo4) + concbnh4 )134 zlim3 = tr b(ji,jj,jk,jpfer) / ( concbfe + trb(ji,jj,jk,jpfer) )135 zlim4 = tr b(ji,jj,jk,jpdoc) / ( xkdoc + trb(ji,jj,jk,jpdoc) )134 zlim2 = tr(ji,jj,jk,jppo4,Kbb) / ( tr(ji,jj,jk,jppo4,Kbb) + concbnh4 ) 135 zlim3 = tr(ji,jj,jk,jpfer,Kbb) / ( concbfe + tr(ji,jj,jk,jpfer,Kbb) ) 136 zlim4 = tr(ji,jj,jk,jpdoc,Kbb) / ( xkdoc + tr(ji,jj,jk,jpdoc,Kbb) ) 136 137 xlimbacl(ji,jj,jk) = MIN( zlim1, zlim2, zlim3 ) 137 138 xlimbac (ji,jj,jk) = MIN( zlim1, zlim2, zlim3 ) * zlim4 … … 139 140 ! Michaelis-Menten Limitation term for nutrients Small flagellates 140 141 ! ----------------------------------------------- 141 zdenom = 1. / ( zconc0n * zconc0nnh4 + zconc0nnh4 * tr b(ji,jj,jk,jpno3) + zconc0n * trb(ji,jj,jk,jpnh4) )142 xnanono3(ji,jj,jk) = tr b(ji,jj,jk,jpno3) * zconc0nnh4 * zdenom143 xnanonh4(ji,jj,jk) = tr b(ji,jj,jk,jpnh4) * zconc0n * zdenom142 zdenom = 1. / ( zconc0n * zconc0nnh4 + zconc0nnh4 * tr(ji,jj,jk,jpno3,Kbb) + zconc0n * tr(ji,jj,jk,jpnh4,Kbb) ) 143 xnanono3(ji,jj,jk) = tr(ji,jj,jk,jpno3,Kbb) * zconc0nnh4 * zdenom 144 xnanonh4(ji,jj,jk) = tr(ji,jj,jk,jpnh4,Kbb) * zconc0n * zdenom 144 145 ! 145 146 zlim1 = xnanono3(ji,jj,jk) + xnanonh4(ji,jj,jk) 146 zlim2 = tr b(ji,jj,jk,jppo4) / ( trb(ji,jj,jk,jppo4) + zconc0nnh4 )147 zratio = tr b(ji,jj,jk,jpnfe) * z1_trbphy148 zironmin = xcoef1 * tr b(ji,jj,jk,jpnch) * z1_trbphy + xcoef2 * zlim1 + xcoef3 * xnanono3(ji,jj,jk)147 zlim2 = tr(ji,jj,jk,jppo4,Kbb) / ( tr(ji,jj,jk,jppo4,Kbb) + zconc0nnh4 ) 148 zratio = tr(ji,jj,jk,jpnfe,Kbb) * z1_trbphy 149 zironmin = xcoef1 * tr(ji,jj,jk,jpnch,Kbb) * z1_trbphy + xcoef2 * zlim1 + xcoef3 * xnanono3(ji,jj,jk) 149 150 zlim3 = MAX( 0.,( zratio - zironmin ) / qnfelim ) 150 151 xnanopo4(ji,jj,jk) = zlim2 … … 154 155 ! Michaelis-Menten Limitation term for nutrients Diatoms 155 156 ! ---------------------------------------------- 156 zdenom = 1. / ( zconc1d * zconc1dnh4 + zconc1dnh4 * tr b(ji,jj,jk,jpno3) + zconc1d * trb(ji,jj,jk,jpnh4) )157 xdiatno3(ji,jj,jk) = tr b(ji,jj,jk,jpno3) * zconc1dnh4 * zdenom158 xdiatnh4(ji,jj,jk) = tr b(ji,jj,jk,jpnh4) * zconc1d * zdenom157 zdenom = 1. / ( zconc1d * zconc1dnh4 + zconc1dnh4 * tr(ji,jj,jk,jpno3,Kbb) + zconc1d * tr(ji,jj,jk,jpnh4,Kbb) ) 158 xdiatno3(ji,jj,jk) = tr(ji,jj,jk,jpno3,Kbb) * zconc1dnh4 * zdenom 159 xdiatnh4(ji,jj,jk) = tr(ji,jj,jk,jpnh4,Kbb) * zconc1d * zdenom 159 160 ! 160 161 zlim1 = xdiatno3(ji,jj,jk) + xdiatnh4(ji,jj,jk) 161 zlim2 = tr b(ji,jj,jk,jppo4) / ( trb(ji,jj,jk,jppo4) + zconc1dnh4 )162 zlim3 = tr b(ji,jj,jk,jpsil) / ( trb(ji,jj,jk,jpsil) + xksi(ji,jj) )163 zratio = tr b(ji,jj,jk,jpdfe) * z1_trbdia164 zironmin = xcoef1 * tr b(ji,jj,jk,jpdch) * z1_trbdia + xcoef2 * zlim1 + xcoef3 * xdiatno3(ji,jj,jk)162 zlim2 = tr(ji,jj,jk,jppo4,Kbb) / ( tr(ji,jj,jk,jppo4,Kbb) + zconc1dnh4 ) 163 zlim3 = tr(ji,jj,jk,jpsil,Kbb) / ( tr(ji,jj,jk,jpsil,Kbb) + xksi(ji,jj) ) 164 zratio = tr(ji,jj,jk,jpdfe,Kbb) * z1_trbdia 165 zironmin = xcoef1 * tr(ji,jj,jk,jpdch,Kbb) * z1_trbdia + xcoef2 * zlim1 + xcoef3 * xdiatno3(ji,jj,jk) 165 166 zlim4 = MAX( 0., ( zratio - zironmin ) / qdfelim ) 166 167 xdiatpo4(ji,jj,jk) = zlim2 … … 177 178 DO jj = 1, jpj 178 179 DO ji = 1, jpi 179 zlim1 = ( tr b(ji,jj,jk,jpno3) * concnnh4 + trb(ji,jj,jk,jpnh4) * concnno3 ) &180 & / ( concnno3 * concnnh4 + concnnh4 * tr b(ji,jj,jk,jpno3) + concnno3 * trb(ji,jj,jk,jpnh4) )181 zlim2 = tr b(ji,jj,jk,jppo4) / ( trb(ji,jj,jk,jppo4) + concnnh4 )182 zlim3 = tr b(ji,jj,jk,jpfer) / ( trb(ji,jj,jk,jpfer) + 5.E-11 )183 ztem1 = MAX( 0., ts n(ji,jj,jk,jp_tem) )184 ztem2 = ts n(ji,jj,jk,jp_tem) - 10.180 zlim1 = ( tr(ji,jj,jk,jpno3,Kbb) * concnnh4 + tr(ji,jj,jk,jpnh4,Kbb) * concnno3 ) & 181 & / ( concnno3 * concnnh4 + concnnh4 * tr(ji,jj,jk,jpno3,Kbb) + concnno3 * tr(ji,jj,jk,jpnh4,Kbb) ) 182 zlim2 = tr(ji,jj,jk,jppo4,Kbb) / ( tr(ji,jj,jk,jppo4,Kbb) + concnnh4 ) 183 zlim3 = tr(ji,jj,jk,jpfer,Kbb) / ( tr(ji,jj,jk,jpfer,Kbb) + 5.E-11 ) 184 ztem1 = MAX( 0., ts(ji,jj,jk,jp_tem,Kmm) ) 185 ztem2 = ts(ji,jj,jk,jp_tem,Kmm) - 10. 185 186 zetot1 = MAX( 0., etot_ndcy(ji,jj,jk) - 1.) / ( 4. + etot_ndcy(ji,jj,jk) ) 186 187 zetot2 = 30. / ( 30. + etot_ndcy(ji,jj,jk) ) … … 188 189 xfracal(ji,jj,jk) = caco3r * MIN( zlim1, zlim2, zlim3 ) & 189 190 & * ztem1 / ( 0.1 + ztem1 ) & 190 & * MAX( 1., tr b(ji,jj,jk,jpphy) * 1.e6 / 2. ) &191 & * MAX( 1., tr(ji,jj,jk,jpphy,Kbb) * 1.e6 / 2. ) & 191 192 & * zetot1 * zetot2 & 192 193 & * ( 1. + EXP(-ztem2 * ztem2 / 25. ) ) & … … 202 203 DO ji = 1, jpi 203 204 ! denitrification factor computed from O2 levels 204 nitrfac(ji,jj,jk) = MAX( 0.e0, 0.4 * ( 6.e-6 - tr b(ji,jj,jk,jpoxy) ) &205 & / ( oxymin + tr b(ji,jj,jk,jpoxy) ) )205 nitrfac(ji,jj,jk) = MAX( 0.e0, 0.4 * ( 6.e-6 - tr(ji,jj,jk,jpoxy,Kbb) ) & 206 & / ( oxymin + tr(ji,jj,jk,jpoxy,Kbb) ) ) 206 207 nitrfac(ji,jj,jk) = MIN( 1., nitrfac(ji,jj,jk) ) 207 208 ! 208 209 ! denitrification factor computed from NO3 levels 209 nitrfac2(ji,jj,jk) = MAX( 0.e0, ( 1.E-6 - tr b(ji,jj,jk,jpno3) ) &210 & / ( 1.E-6 + tr b(ji,jj,jk,jpno3) ) )210 nitrfac2(ji,jj,jk) = MAX( 0.e0, ( 1.E-6 - tr(ji,jj,jk,jpno3,Kbb) ) & 211 & / ( 1.E-6 + tr(ji,jj,jk,jpno3,Kbb) ) ) 211 212 nitrfac2(ji,jj,jk) = MIN( 1., nitrfac2(ji,jj,jk) ) 212 213 END DO
Note: See TracChangeset
for help on using the changeset viewer.