- Timestamp:
- 2019-11-22T15:29:17+01:00 (4 years ago)
- Location:
- NEMO/branches/2019/dev_r11943_MERGE_2019/src
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11943_MERGE_2019/src
- Property svn:mergeinfo deleted
-
NEMO/branches/2019/dev_r11943_MERGE_2019/src/TOP/PISCES/P4Z/p4zrem.F90
r11536 r11949 49 49 CONTAINS 50 50 51 SUBROUTINE p4z_rem( kt, knt )51 SUBROUTINE p4z_rem( kt, knt, Kbb, Kmm, Krhs ) 52 52 !!--------------------------------------------------------------------- 53 53 !! *** ROUTINE p4z_rem *** … … 57 57 !! ** Method : - ??? 58 58 !!--------------------------------------------------------------------- 59 INTEGER, INTENT(in) :: kt, knt ! ocean time step 59 INTEGER, INTENT(in) :: kt, knt ! ocean time step 60 INTEGER, INTENT(in) :: Kbb, Kmm, Krhs ! time level indices 60 61 ! 61 62 INTEGER :: ji, jj, jk … … 90 91 DO ji = 1, jpi 91 92 zdep = MAX( hmld(ji,jj), heup(ji,jj) ) 92 IF( gdept _n(ji,jj,jk) < zdep ) THEN93 zdepbac(ji,jj,jk) = MIN( 0.7 * ( tr b(ji,jj,jk,jpzoo) + 2.* trb(ji,jj,jk,jpmes) ), 4.e-6 )93 IF( gdept(ji,jj,jk,Kmm) < zdep ) THEN 94 zdepbac(ji,jj,jk) = MIN( 0.7 * ( tr(ji,jj,jk,jpzoo,Kbb) + 2.* tr(ji,jj,jk,jpmes,Kbb) ), 4.e-6 ) 94 95 ztempbac(ji,jj) = zdepbac(ji,jj,jk) 95 96 ELSE 96 zdepmin = MIN( 1., zdep / gdept _n(ji,jj,jk) )97 zdepmin = MIN( 1., zdep / gdept(ji,jj,jk,Kmm) ) 97 98 zdepbac (ji,jj,jk) = zdepmin**0.683 * ztempbac(ji,jj) 98 99 zdepprod(ji,jj,jk) = zdepmin**0.273 … … 113 114 ! Ammonification in oxic waters with oxygen consumption 114 115 ! ----------------------------------------------------- 115 zolimit = zremik * ( 1.- nitrfac(ji,jj,jk) ) * tr b(ji,jj,jk,jpdoc)116 zolimi(ji,jj,jk) = MIN( ( tr b(ji,jj,jk,jpoxy) - rtrn ) / o2ut, zolimit )116 zolimit = zremik * ( 1.- nitrfac(ji,jj,jk) ) * tr(ji,jj,jk,jpdoc,Kbb) 117 zolimi(ji,jj,jk) = MIN( ( tr(ji,jj,jk,jpoxy,Kbb) - rtrn ) / o2ut, zolimit ) 117 118 ! Ammonification in suboxic waters with denitrification 118 119 ! ------------------------------------------------------- 119 zammonic = zremik * nitrfac(ji,jj,jk) * tr b(ji,jj,jk,jpdoc)120 zammonic = zremik * nitrfac(ji,jj,jk) * tr(ji,jj,jk,jpdoc,Kbb) 120 121 denitr(ji,jj,jk) = zammonic * ( 1. - nitrfac2(ji,jj,jk) ) 121 denitr(ji,jj,jk) = MIN( ( tr b(ji,jj,jk,jpno3) - rtrn ) / rdenit, denitr(ji,jj,jk) )122 denitr(ji,jj,jk) = MIN( ( tr(ji,jj,jk,jpno3,Kbb) - rtrn ) / rdenit, denitr(ji,jj,jk) ) 122 123 zoxyremc = zammonic - denitr(ji,jj,jk) 123 124 ! … … 127 128 128 129 ! 129 tr a(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) + zolimi (ji,jj,jk) + denitr(ji,jj,jk) + zoxyremc130 tr a(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + zolimi (ji,jj,jk) + denitr(ji,jj,jk) + zoxyremc131 tr a(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) - denitr (ji,jj,jk) * rdenit132 tr a(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) - zolimi (ji,jj,jk) - denitr(ji,jj,jk) - zoxyremc133 tr a(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - zolimi (ji,jj,jk) * o2ut134 tr a(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zolimi (ji,jj,jk) + denitr(ji,jj,jk) + zoxyremc135 tr a(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + rno3 * ( zolimi(ji,jj,jk) + zoxyremc &130 tr(ji,jj,jk,jppo4,Krhs) = tr(ji,jj,jk,jppo4,Krhs) + zolimi (ji,jj,jk) + denitr(ji,jj,jk) + zoxyremc 131 tr(ji,jj,jk,jpnh4,Krhs) = tr(ji,jj,jk,jpnh4,Krhs) + zolimi (ji,jj,jk) + denitr(ji,jj,jk) + zoxyremc 132 tr(ji,jj,jk,jpno3,Krhs) = tr(ji,jj,jk,jpno3,Krhs) - denitr (ji,jj,jk) * rdenit 133 tr(ji,jj,jk,jpdoc,Krhs) = tr(ji,jj,jk,jpdoc,Krhs) - zolimi (ji,jj,jk) - denitr(ji,jj,jk) - zoxyremc 134 tr(ji,jj,jk,jpoxy,Krhs) = tr(ji,jj,jk,jpoxy,Krhs) - zolimi (ji,jj,jk) * o2ut 135 tr(ji,jj,jk,jpdic,Krhs) = tr(ji,jj,jk,jpdic,Krhs) + zolimi (ji,jj,jk) + denitr(ji,jj,jk) + zoxyremc 136 tr(ji,jj,jk,jptal,Krhs) = tr(ji,jj,jk,jptal,Krhs) + rno3 * ( zolimi(ji,jj,jk) + zoxyremc & 136 137 & + ( rdenit + 1.) * denitr(ji,jj,jk) ) 137 138 END DO … … 154 155 ! Ammonification in oxic waters with oxygen consumption 155 156 ! ----------------------------------------------------- 156 zolimit = zremikc * ( 1.- nitrfac(ji,jj,jk) ) * tr b(ji,jj,jk,jpdoc)157 zolimic = MAX( 0.e0, MIN( ( tr b(ji,jj,jk,jpoxy) - rtrn ) / o2ut, zolimit ) )157 zolimit = zremikc * ( 1.- nitrfac(ji,jj,jk) ) * tr(ji,jj,jk,jpdoc,Kbb) 158 zolimic = MAX( 0.e0, MIN( ( tr(ji,jj,jk,jpoxy,Kbb) - rtrn ) / o2ut, zolimit ) ) 158 159 zolimi(ji,jj,jk) = zolimic 159 zolimin = zremikn * zolimic * tr b(ji,jj,jk,jpdon) / ( trb(ji,jj,jk,jpdoc) + rtrn )160 zolimip = zremikp * zolimic * tr b(ji,jj,jk,jpdop) / ( trb(ji,jj,jk,jpdoc) + rtrn )160 zolimin = zremikn * zolimic * tr(ji,jj,jk,jpdon,Kbb) / ( tr(ji,jj,jk,jpdoc,Kbb) + rtrn ) 161 zolimip = zremikp * zolimic * tr(ji,jj,jk,jpdop,Kbb) / ( tr(ji,jj,jk,jpdoc,Kbb) + rtrn ) 161 162 162 163 ! Ammonification in suboxic waters with denitrification 163 164 ! ------------------------------------------------------- 164 zammonic = zremikc * nitrfac(ji,jj,jk) * tr b(ji,jj,jk,jpdoc)165 zammonic = zremikc * nitrfac(ji,jj,jk) * tr(ji,jj,jk,jpdoc,Kbb) 165 166 denitr(ji,jj,jk) = zammonic * ( 1. - nitrfac2(ji,jj,jk) ) 166 denitr(ji,jj,jk) = MAX(0., MIN( ( tr b(ji,jj,jk,jpno3) - rtrn ) / rdenit, denitr(ji,jj,jk) ) )167 denitr(ji,jj,jk) = MAX(0., MIN( ( tr(ji,jj,jk,jpno3,Kbb) - rtrn ) / rdenit, denitr(ji,jj,jk) ) ) 167 168 zoxyremc = MAX(0., zammonic - denitr(ji,jj,jk)) 168 zdenitrn = zremikn * denitr(ji,jj,jk) * tr b(ji,jj,jk,jpdon) / ( trb(ji,jj,jk,jpdoc) + rtrn )169 zdenitrp = zremikp * denitr(ji,jj,jk) * tr b(ji,jj,jk,jpdop) / ( trb(ji,jj,jk,jpdoc) + rtrn )170 zoxyremn = zremikn * zoxyremc * tr b(ji,jj,jk,jpdon) / ( trb(ji,jj,jk,jpdoc) + rtrn )171 zoxyremp = zremikp * zoxyremc * tr b(ji,jj,jk,jpdop) / ( trb(ji,jj,jk,jpdoc) + rtrn )172 173 tr a(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) + zolimip + zdenitrp + zoxyremp174 tr a(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + zolimin + zdenitrn + zoxyremn175 tr a(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) - denitr(ji,jj,jk) * rdenit176 tr a(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) - zolimic - denitr(ji,jj,jk) - zoxyremc177 tr a(ji,jj,jk,jpdon) = tra(ji,jj,jk,jpdon) - zolimin - zdenitrn - zoxyremn178 tr a(ji,jj,jk,jpdop) = tra(ji,jj,jk,jpdop) - zolimip - zdenitrp - zoxyremp179 tr a(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - zolimic * o2ut180 tr a(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zolimic + denitr(ji,jj,jk) + zoxyremc181 tr a(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + rno3 * ( zolimin + zoxyremn + ( rdenit + 1.) * zdenitrn )169 zdenitrn = zremikn * denitr(ji,jj,jk) * tr(ji,jj,jk,jpdon,Kbb) / ( tr(ji,jj,jk,jpdoc,Kbb) + rtrn ) 170 zdenitrp = zremikp * denitr(ji,jj,jk) * tr(ji,jj,jk,jpdop,Kbb) / ( tr(ji,jj,jk,jpdoc,Kbb) + rtrn ) 171 zoxyremn = zremikn * zoxyremc * tr(ji,jj,jk,jpdon,Kbb) / ( tr(ji,jj,jk,jpdoc,Kbb) + rtrn ) 172 zoxyremp = zremikp * zoxyremc * tr(ji,jj,jk,jpdop,Kbb) / ( tr(ji,jj,jk,jpdoc,Kbb) + rtrn ) 173 174 tr(ji,jj,jk,jppo4,Krhs) = tr(ji,jj,jk,jppo4,Krhs) + zolimip + zdenitrp + zoxyremp 175 tr(ji,jj,jk,jpnh4,Krhs) = tr(ji,jj,jk,jpnh4,Krhs) + zolimin + zdenitrn + zoxyremn 176 tr(ji,jj,jk,jpno3,Krhs) = tr(ji,jj,jk,jpno3,Krhs) - denitr(ji,jj,jk) * rdenit 177 tr(ji,jj,jk,jpdoc,Krhs) = tr(ji,jj,jk,jpdoc,Krhs) - zolimic - denitr(ji,jj,jk) - zoxyremc 178 tr(ji,jj,jk,jpdon,Krhs) = tr(ji,jj,jk,jpdon,Krhs) - zolimin - zdenitrn - zoxyremn 179 tr(ji,jj,jk,jpdop,Krhs) = tr(ji,jj,jk,jpdop,Krhs) - zolimip - zdenitrp - zoxyremp 180 tr(ji,jj,jk,jpoxy,Krhs) = tr(ji,jj,jk,jpoxy,Krhs) - zolimic * o2ut 181 tr(ji,jj,jk,jpdic,Krhs) = tr(ji,jj,jk,jpdic,Krhs) + zolimic + denitr(ji,jj,jk) + zoxyremc 182 tr(ji,jj,jk,jptal,Krhs) = tr(ji,jj,jk,jptal,Krhs) + rno3 * ( zolimin + zoxyremn + ( rdenit + 1.) * zdenitrn ) 182 183 END DO 183 184 END DO … … 193 194 ! below 2 umol/L. Inhibited at strong light 194 195 ! ---------------------------------------------------------- 195 zonitr = nitrif * xstep * tr b(ji,jj,jk,jpnh4) * ( 1.- nitrfac(ji,jj,jk) ) &196 zonitr = nitrif * xstep * tr(ji,jj,jk,jpnh4,Kbb) * ( 1.- nitrfac(ji,jj,jk) ) & 196 197 & / ( 1.+ emoy(ji,jj,jk) ) * ( 1. + fr_i(ji,jj) * emoy(ji,jj,jk) ) 197 zdenitnh4 = nitrif * xstep * tr b(ji,jj,jk,jpnh4) * nitrfac(ji,jj,jk)198 zdenitnh4 = MIN( ( tr b(ji,jj,jk,jpno3) - rtrn ) / rdenita, zdenitnh4 )198 zdenitnh4 = nitrif * xstep * tr(ji,jj,jk,jpnh4,Kbb) * nitrfac(ji,jj,jk) 199 zdenitnh4 = MIN( ( tr(ji,jj,jk,jpno3,Kbb) - rtrn ) / rdenita, zdenitnh4 ) 199 200 ! Update of the tracers trends 200 201 ! ---------------------------- 201 tr a(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) - zonitr - zdenitnh4202 tr a(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) + zonitr - rdenita * zdenitnh4203 tr a(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - o2nit * zonitr204 tr a(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - 2 * rno3 * zonitr + rno3 * ( rdenita - 1. ) * zdenitnh4202 tr(ji,jj,jk,jpnh4,Krhs) = tr(ji,jj,jk,jpnh4,Krhs) - zonitr - zdenitnh4 203 tr(ji,jj,jk,jpno3,Krhs) = tr(ji,jj,jk,jpno3,Krhs) + zonitr - rdenita * zdenitnh4 204 tr(ji,jj,jk,jpoxy,Krhs) = tr(ji,jj,jk,jpoxy,Krhs) - o2nit * zonitr 205 tr(ji,jj,jk,jptal,Krhs) = tr(ji,jj,jk,jptal,Krhs) - 2 * rno3 * zonitr + rno3 * ( rdenita - 1. ) * zdenitnh4 205 206 END DO 206 207 END DO … … 210 211 WRITE(charout, FMT="('rem1')") 211 212 CALL prt_ctl_trc_info(charout) 212 CALL prt_ctl_trc(tab4d=tr a, mask=tmask, clinfo=ctrcnm)213 CALL prt_ctl_trc(tab4d=tr(:,:,:,:,Krhs), mask=tmask, clinfo=ctrcnm) 213 214 ENDIF 214 215 … … 222 223 ! ---------------------------------------------------------- 223 224 zbactfer = feratb * rfact2 * 0.6_wp / rday * tgfunc(ji,jj,jk) * xlimbacl(ji,jj,jk) & 224 & * tr b(ji,jj,jk,jpfer) / ( xkferb + trb(ji,jj,jk,jpfer) ) &225 & * tr(ji,jj,jk,jpfer,Kbb) / ( xkferb + tr(ji,jj,jk,jpfer,Kbb) ) & 225 226 & * zdepprod(ji,jj,jk) * zdepeff(ji,jj,jk) * zdepbac(ji,jj,jk) 226 tr a(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zbactfer*0.33227 tr a(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zbactfer*0.25228 tr a(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zbactfer*0.08227 tr(ji,jj,jk,jpfer,Krhs) = tr(ji,jj,jk,jpfer,Krhs) - zbactfer*0.33 228 tr(ji,jj,jk,jpsfe,Krhs) = tr(ji,jj,jk,jpsfe,Krhs) + zbactfer*0.25 229 tr(ji,jj,jk,jpbfe,Krhs) = tr(ji,jj,jk,jpbfe,Krhs) + zbactfer*0.08 229 230 zfebact(ji,jj,jk) = zbactfer * 0.33 230 231 blim(ji,jj,jk) = xlimbacl(ji,jj,jk) * zdepbac(ji,jj,jk) / 1.e-6 * zdepprod(ji,jj,jk) … … 236 237 WRITE(charout, FMT="('rem2')") 237 238 CALL prt_ctl_trc_info(charout) 238 CALL prt_ctl_trc(tab4d=tr a, mask=tmask, clinfo=ctrcnm)239 CALL prt_ctl_trc(tab4d=tr(:,:,:,:,Krhs), mask=tmask, clinfo=ctrcnm) 239 240 ENDIF 240 241 … … 247 248 DO ji = 1, jpi 248 249 zdep = MAX( hmld(ji,jj), heup_01(ji,jj) ) 249 zsatur = MAX( rtrn, ( sio3eq(ji,jj,jk) - tr b(ji,jj,jk,jpsil) ) / ( sio3eq(ji,jj,jk) + rtrn ) )250 zsatur2 = ( 1. + ts n(ji,jj,jk,jp_tem) / 400.)**37251 znusil = 0.225 * ( 1. + ts n(ji,jj,jk,jp_tem) / 15.) * zsatur + 0.775 * zsatur2 * zsatur**9.25250 zsatur = MAX( rtrn, ( sio3eq(ji,jj,jk) - tr(ji,jj,jk,jpsil,Kbb) ) / ( sio3eq(ji,jj,jk) + rtrn ) ) 251 zsatur2 = ( 1. + ts(ji,jj,jk,jp_tem,Kmm) / 400.)**37 252 znusil = 0.225 * ( 1. + ts(ji,jj,jk,jp_tem,Kmm) / 15.) * zsatur + 0.775 * zsatur2 * zsatur**9.25 252 253 ! Remineralization rate of BSi depedant on T and saturation 253 254 ! --------------------------------------------------------- 254 IF ( gdept _n(ji,jj,jk) > zdep ) THEN255 IF ( gdept(ji,jj,jk,Kmm) > zdep ) THEN 255 256 zfacsib(ji,jj,jk) = zfacsib(ji,jj,jk-1) * EXP( -0.5 * ( xsiremlab - xsirem ) & 256 & * znusil * e3t _n(ji,jj,jk) / wsbio4(ji,jj,jk) )257 & * znusil * e3t(ji,jj,jk,Kmm) / wsbio4(ji,jj,jk) ) 257 258 zfacsi(ji,jj,jk) = zfacsib(ji,jj,jk) / ( 1.0 + zfacsib(ji,jj,jk) ) 258 259 zfacsib(ji,jj,jk) = zfacsib(ji,jj,jk) * EXP( -0.5 * ( xsiremlab - xsirem ) & 259 & * znusil * e3t _n(ji,jj,jk) / wsbio4(ji,jj,jk) )260 & * znusil * e3t(ji,jj,jk,Kmm) / wsbio4(ji,jj,jk) ) 260 261 ENDIF 261 262 zsiremin = ( xsiremlab * zfacsi(ji,jj,jk) + xsirem * ( 1. - zfacsi(ji,jj,jk) ) ) * xstep * znusil 262 zosil = zsiremin * tr b(ji,jj,jk,jpgsi)263 zosil = zsiremin * tr(ji,jj,jk,jpgsi,Kbb) 263 264 ! 264 tr a(ji,jj,jk,jpgsi) = tra(ji,jj,jk,jpgsi) - zosil265 tr a(ji,jj,jk,jpsil) = tra(ji,jj,jk,jpsil) + zosil265 tr(ji,jj,jk,jpgsi,Krhs) = tr(ji,jj,jk,jpgsi,Krhs) - zosil 266 tr(ji,jj,jk,jpsil,Krhs) = tr(ji,jj,jk,jpsil,Krhs) + zosil 266 267 END DO 267 268 END DO … … 271 272 WRITE(charout, FMT="('rem3')") 272 273 CALL prt_ctl_trc_info(charout) 273 CALL prt_ctl_trc(tab4d=tr a, mask=tmask, clinfo=ctrcnm)274 CALL prt_ctl_trc(tab4d=tr(:,:,:,:,Krhs), mask=tmask, clinfo=ctrcnm) 274 275 ENDIF 275 276
Note: See TracChangeset
for help on using the changeset viewer.