Changeset 12928 for NEMO/branches/2019/dev_r11078_OSMOSIS_IMMERSE_Nurser/src/TOP/PISCES/P4Z/p4zrem.F90
- Timestamp:
- 2020-05-14T21:46:00+02:00 (4 years ago)
- Location:
- NEMO/branches/2019/dev_r11078_OSMOSIS_IMMERSE_Nurser
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11078_OSMOSIS_IMMERSE_Nurser
- Property svn:externals
-
old new 6 6 ^/vendors/FCM@HEAD ext/FCM 7 7 ^/vendors/IOIPSL@HEAD ext/IOIPSL 8 9 # SETTE 10 ^/utils/CI/sette@HEAD sette
-
- Property svn:externals
-
NEMO/branches/2019/dev_r11078_OSMOSIS_IMMERSE_Nurser/src/TOP/PISCES/P4Z/p4zrem.F90
r12178 r12928 42 42 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: denitr !: denitrification array 43 43 44 !! * Substitutions 45 # include "do_loop_substitute.h90" 44 46 !!---------------------------------------------------------------------- 45 47 !! NEMO/TOP 4.0 , NEMO Consortium (2018) … … 49 51 CONTAINS 50 52 51 SUBROUTINE p4z_rem( kt, knt )53 SUBROUTINE p4z_rem( kt, knt, Kbb, Kmm, Krhs ) 52 54 !!--------------------------------------------------------------------- 53 55 !! *** ROUTINE p4z_rem *** … … 57 59 !! ** Method : - ??? 58 60 !!--------------------------------------------------------------------- 59 INTEGER, INTENT(in) :: kt, knt ! ocean time step 61 INTEGER, INTENT(in) :: kt, knt ! ocean time step 62 INTEGER, INTENT(in) :: Kbb, Kmm, Krhs ! time level indices 60 63 ! 61 64 INTEGER :: ji, jj, jk … … 68 71 REAL(wp), DIMENSION(jpi,jpj ) :: ztempbac 69 72 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zdepbac, zolimi, zdepprod, zfacsi, zfacsib, zdepeff, zfebact 70 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zw3d71 73 !!--------------------------------------------------------------------- 72 74 ! … … 86 88 ! that was modeling explicitely bacteria 87 89 ! ------------------------------------------------------- 88 DO jk = 1, jpkm1 89 DO jj = 1, jpj 90 DO ji = 1, jpi 91 zdep = MAX( hmld(ji,jj), heup(ji,jj) ) 92 IF( gdept_n(ji,jj,jk) < zdep ) THEN 93 zdepbac(ji,jj,jk) = MIN( 0.7 * ( trb(ji,jj,jk,jpzoo) + 2.* trb(ji,jj,jk,jpmes) ), 4.e-6 ) 94 ztempbac(ji,jj) = zdepbac(ji,jj,jk) 95 ELSE 96 zdepmin = MIN( 1., zdep / gdept_n(ji,jj,jk) ) 97 zdepbac (ji,jj,jk) = zdepmin**0.683 * ztempbac(ji,jj) 98 zdepprod(ji,jj,jk) = zdepmin**0.273 99 zdepeff (ji,jj,jk) = zdepeff(ji,jj,jk) * zdepmin**0.3 100 ENDIF 101 END DO 102 END DO 103 END DO 90 DO_3D_11_11( 1, jpkm1 ) 91 zdep = MAX( hmld(ji,jj), heup(ji,jj) ) 92 IF( gdept(ji,jj,jk,Kmm) < zdep ) THEN 93 zdepbac(ji,jj,jk) = MIN( 0.7 * ( tr(ji,jj,jk,jpzoo,Kbb) + 2.* tr(ji,jj,jk,jpmes,Kbb) ), 4.e-6 ) 94 ztempbac(ji,jj) = zdepbac(ji,jj,jk) 95 ELSE 96 zdepmin = MIN( 1., zdep / gdept(ji,jj,jk,Kmm) ) 97 zdepbac (ji,jj,jk) = zdepmin**0.683 * ztempbac(ji,jj) 98 zdepprod(ji,jj,jk) = zdepmin**0.273 99 zdepeff (ji,jj,jk) = zdepeff(ji,jj,jk) * zdepmin**0.3 100 ENDIF 101 END_3D 104 102 105 103 IF( ln_p4z ) THEN 106 DO jk = 1, jpkm1 107 DO jj = 1, jpj 108 DO ji = 1, jpi 109 ! DOC ammonification. Depends on depth, phytoplankton biomass 110 ! and a limitation term which is supposed to be a parameterization of the bacterial activity. 111 zremik = xremik * xstep / 1.e-6 * xlimbac(ji,jj,jk) * zdepbac(ji,jj,jk) 112 zremik = MAX( zremik, 2.74e-4 * xstep ) 113 ! Ammonification in oxic waters with oxygen consumption 114 ! ----------------------------------------------------- 115 zolimit = zremik * ( 1.- nitrfac(ji,jj,jk) ) * trb(ji,jj,jk,jpdoc) 116 zolimi(ji,jj,jk) = MIN( ( trb(ji,jj,jk,jpoxy) - rtrn ) / o2ut, zolimit ) 117 ! Ammonification in suboxic waters with denitrification 118 ! ------------------------------------------------------- 119 zammonic = zremik * nitrfac(ji,jj,jk) * trb(ji,jj,jk,jpdoc) 120 denitr(ji,jj,jk) = zammonic * ( 1. - nitrfac2(ji,jj,jk) ) 121 denitr(ji,jj,jk) = MIN( ( trb(ji,jj,jk,jpno3) - rtrn ) / rdenit, denitr(ji,jj,jk) ) 122 zoxyremc = zammonic - denitr(ji,jj,jk) 123 ! 124 zolimi (ji,jj,jk) = MAX( 0.e0, zolimi (ji,jj,jk) ) 125 denitr (ji,jj,jk) = MAX( 0.e0, denitr (ji,jj,jk) ) 126 zoxyremc = MAX( 0.e0, zoxyremc ) 127 128 ! 129 tra(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) + zolimi (ji,jj,jk) + denitr(ji,jj,jk) + zoxyremc 130 tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + zolimi (ji,jj,jk) + denitr(ji,jj,jk) + zoxyremc 131 tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) - denitr (ji,jj,jk) * rdenit 132 tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) - zolimi (ji,jj,jk) - denitr(ji,jj,jk) - zoxyremc 133 tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - zolimi (ji,jj,jk) * o2ut 134 tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zolimi (ji,jj,jk) + denitr(ji,jj,jk) + zoxyremc 135 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + rno3 * ( zolimi(ji,jj,jk) + zoxyremc & 136 & + ( rdenit + 1.) * denitr(ji,jj,jk) ) 137 END DO 138 END DO 139 END DO 104 DO_3D_11_11( 1, jpkm1 ) 105 ! DOC ammonification. Depends on depth, phytoplankton biomass 106 ! and a limitation term which is supposed to be a parameterization of the bacterial activity. 107 zremik = xremik * xstep / 1.e-6 * xlimbac(ji,jj,jk) * zdepbac(ji,jj,jk) 108 zremik = MAX( zremik, 2.74e-4 * xstep ) 109 ! Ammonification in oxic waters with oxygen consumption 110 ! ----------------------------------------------------- 111 zolimit = zremik * ( 1.- nitrfac(ji,jj,jk) ) * tr(ji,jj,jk,jpdoc,Kbb) 112 zolimi(ji,jj,jk) = MIN( ( tr(ji,jj,jk,jpoxy,Kbb) - rtrn ) / o2ut, zolimit ) 113 ! Ammonification in suboxic waters with denitrification 114 ! ------------------------------------------------------- 115 zammonic = zremik * nitrfac(ji,jj,jk) * tr(ji,jj,jk,jpdoc,Kbb) 116 denitr(ji,jj,jk) = zammonic * ( 1. - nitrfac2(ji,jj,jk) ) 117 denitr(ji,jj,jk) = MIN( ( tr(ji,jj,jk,jpno3,Kbb) - rtrn ) / rdenit, denitr(ji,jj,jk) ) 118 zoxyremc = zammonic - denitr(ji,jj,jk) 119 ! 120 zolimi (ji,jj,jk) = MAX( 0.e0, zolimi (ji,jj,jk) ) 121 denitr (ji,jj,jk) = MAX( 0.e0, denitr (ji,jj,jk) ) 122 zoxyremc = MAX( 0.e0, zoxyremc ) 123 124 ! 125 tr(ji,jj,jk,jppo4,Krhs) = tr(ji,jj,jk,jppo4,Krhs) + zolimi (ji,jj,jk) + denitr(ji,jj,jk) + zoxyremc 126 tr(ji,jj,jk,jpnh4,Krhs) = tr(ji,jj,jk,jpnh4,Krhs) + zolimi (ji,jj,jk) + denitr(ji,jj,jk) + zoxyremc 127 tr(ji,jj,jk,jpno3,Krhs) = tr(ji,jj,jk,jpno3,Krhs) - denitr (ji,jj,jk) * rdenit 128 tr(ji,jj,jk,jpdoc,Krhs) = tr(ji,jj,jk,jpdoc,Krhs) - zolimi (ji,jj,jk) - denitr(ji,jj,jk) - zoxyremc 129 tr(ji,jj,jk,jpoxy,Krhs) = tr(ji,jj,jk,jpoxy,Krhs) - zolimi (ji,jj,jk) * o2ut 130 tr(ji,jj,jk,jpdic,Krhs) = tr(ji,jj,jk,jpdic,Krhs) + zolimi (ji,jj,jk) + denitr(ji,jj,jk) + zoxyremc 131 tr(ji,jj,jk,jptal,Krhs) = tr(ji,jj,jk,jptal,Krhs) + rno3 * ( zolimi(ji,jj,jk) + zoxyremc & 132 & + ( rdenit + 1.) * denitr(ji,jj,jk) ) 133 END_3D 140 134 ELSE 141 DO jk = 1, jpkm1 142 DO jj = 1, jpj 143 DO ji = 1, jpi 144 ! DOC ammonification. Depends on depth, phytoplankton biomass 145 ! and a limitation term which is supposed to be a parameterization of the bacterial activity. 146 ! ----------------------------------------------------------------- 147 zremik = xstep / 1.e-6 * MAX(0.01, xlimbac(ji,jj,jk)) * zdepbac(ji,jj,jk) 148 zremik = MAX( zremik, 2.74e-4 * xstep / xremikc ) 149 150 zremikc = xremikc * zremik 151 zremikn = xremikn / xremikc 152 zremikp = xremikp / xremikc 153 154 ! Ammonification in oxic waters with oxygen consumption 155 ! ----------------------------------------------------- 156 zolimit = zremikc * ( 1.- nitrfac(ji,jj,jk) ) * trb(ji,jj,jk,jpdoc) 157 zolimic = MAX( 0.e0, MIN( ( trb(ji,jj,jk,jpoxy) - rtrn ) / o2ut, zolimit ) ) 158 zolimi(ji,jj,jk) = zolimic 159 zolimin = zremikn * zolimic * trb(ji,jj,jk,jpdon) / ( trb(ji,jj,jk,jpdoc) + rtrn ) 160 zolimip = zremikp * zolimic * trb(ji,jj,jk,jpdop) / ( trb(ji,jj,jk,jpdoc) + rtrn ) 161 162 ! Ammonification in suboxic waters with denitrification 163 ! ------------------------------------------------------- 164 zammonic = zremikc * nitrfac(ji,jj,jk) * trb(ji,jj,jk,jpdoc) 165 denitr(ji,jj,jk) = zammonic * ( 1. - nitrfac2(ji,jj,jk) ) 166 denitr(ji,jj,jk) = MAX(0., MIN( ( trb(ji,jj,jk,jpno3) - rtrn ) / rdenit, denitr(ji,jj,jk) ) ) 167 zoxyremc = MAX(0., zammonic - denitr(ji,jj,jk)) 168 zdenitrn = zremikn * denitr(ji,jj,jk) * trb(ji,jj,jk,jpdon) / ( trb(ji,jj,jk,jpdoc) + rtrn ) 169 zdenitrp = zremikp * denitr(ji,jj,jk) * trb(ji,jj,jk,jpdop) / ( trb(ji,jj,jk,jpdoc) + rtrn ) 170 zoxyremn = zremikn * zoxyremc * trb(ji,jj,jk,jpdon) / ( trb(ji,jj,jk,jpdoc) + rtrn ) 171 zoxyremp = zremikp * zoxyremc * trb(ji,jj,jk,jpdop) / ( trb(ji,jj,jk,jpdoc) + rtrn ) 172 173 tra(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) + zolimip + zdenitrp + zoxyremp 174 tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + zolimin + zdenitrn + zoxyremn 175 tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) - denitr(ji,jj,jk) * rdenit 176 tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) - zolimic - denitr(ji,jj,jk) - zoxyremc 177 tra(ji,jj,jk,jpdon) = tra(ji,jj,jk,jpdon) - zolimin - zdenitrn - zoxyremn 178 tra(ji,jj,jk,jpdop) = tra(ji,jj,jk,jpdop) - zolimip - zdenitrp - zoxyremp 179 tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - zolimic * o2ut 180 tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zolimic + denitr(ji,jj,jk) + zoxyremc 181 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + rno3 * ( zolimin + zoxyremn + ( rdenit + 1.) * zdenitrn ) 182 END DO 183 END DO 184 END DO 135 DO_3D_11_11( 1, jpkm1 ) 136 ! DOC ammonification. Depends on depth, phytoplankton biomass 137 ! and a limitation term which is supposed to be a parameterization of the bacterial activity. 138 ! ----------------------------------------------------------------- 139 zremik = xstep / 1.e-6 * MAX(0.01, xlimbac(ji,jj,jk)) * zdepbac(ji,jj,jk) 140 zremik = MAX( zremik, 2.74e-4 * xstep / xremikc ) 141 142 zremikc = xremikc * zremik 143 zremikn = xremikn / xremikc 144 zremikp = xremikp / xremikc 145 146 ! Ammonification in oxic waters with oxygen consumption 147 ! ----------------------------------------------------- 148 zolimit = zremikc * ( 1.- nitrfac(ji,jj,jk) ) * tr(ji,jj,jk,jpdoc,Kbb) 149 zolimic = MAX( 0.e0, MIN( ( tr(ji,jj,jk,jpoxy,Kbb) - rtrn ) / o2ut, zolimit ) ) 150 zolimi(ji,jj,jk) = zolimic 151 zolimin = zremikn * zolimic * tr(ji,jj,jk,jpdon,Kbb) / ( tr(ji,jj,jk,jpdoc,Kbb) + rtrn ) 152 zolimip = zremikp * zolimic * tr(ji,jj,jk,jpdop,Kbb) / ( tr(ji,jj,jk,jpdoc,Kbb) + rtrn ) 153 154 ! Ammonification in suboxic waters with denitrification 155 ! ------------------------------------------------------- 156 zammonic = zremikc * nitrfac(ji,jj,jk) * tr(ji,jj,jk,jpdoc,Kbb) 157 denitr(ji,jj,jk) = zammonic * ( 1. - nitrfac2(ji,jj,jk) ) 158 denitr(ji,jj,jk) = MAX(0., MIN( ( tr(ji,jj,jk,jpno3,Kbb) - rtrn ) / rdenit, denitr(ji,jj,jk) ) ) 159 zoxyremc = MAX(0., zammonic - denitr(ji,jj,jk)) 160 zdenitrn = zremikn * denitr(ji,jj,jk) * tr(ji,jj,jk,jpdon,Kbb) / ( tr(ji,jj,jk,jpdoc,Kbb) + rtrn ) 161 zdenitrp = zremikp * denitr(ji,jj,jk) * tr(ji,jj,jk,jpdop,Kbb) / ( tr(ji,jj,jk,jpdoc,Kbb) + rtrn ) 162 zoxyremn = zremikn * zoxyremc * tr(ji,jj,jk,jpdon,Kbb) / ( tr(ji,jj,jk,jpdoc,Kbb) + rtrn ) 163 zoxyremp = zremikp * zoxyremc * tr(ji,jj,jk,jpdop,Kbb) / ( tr(ji,jj,jk,jpdoc,Kbb) + rtrn ) 164 165 tr(ji,jj,jk,jppo4,Krhs) = tr(ji,jj,jk,jppo4,Krhs) + zolimip + zdenitrp + zoxyremp 166 tr(ji,jj,jk,jpnh4,Krhs) = tr(ji,jj,jk,jpnh4,Krhs) + zolimin + zdenitrn + zoxyremn 167 tr(ji,jj,jk,jpno3,Krhs) = tr(ji,jj,jk,jpno3,Krhs) - denitr(ji,jj,jk) * rdenit 168 tr(ji,jj,jk,jpdoc,Krhs) = tr(ji,jj,jk,jpdoc,Krhs) - zolimic - denitr(ji,jj,jk) - zoxyremc 169 tr(ji,jj,jk,jpdon,Krhs) = tr(ji,jj,jk,jpdon,Krhs) - zolimin - zdenitrn - zoxyremn 170 tr(ji,jj,jk,jpdop,Krhs) = tr(ji,jj,jk,jpdop,Krhs) - zolimip - zdenitrp - zoxyremp 171 tr(ji,jj,jk,jpoxy,Krhs) = tr(ji,jj,jk,jpoxy,Krhs) - zolimic * o2ut 172 tr(ji,jj,jk,jpdic,Krhs) = tr(ji,jj,jk,jpdic,Krhs) + zolimic + denitr(ji,jj,jk) + zoxyremc 173 tr(ji,jj,jk,jptal,Krhs) = tr(ji,jj,jk,jptal,Krhs) + rno3 * ( zolimin + zoxyremn + ( rdenit + 1.) * zdenitrn ) 174 END_3D 185 175 ! 186 176 ENDIF 187 177 188 178 189 DO jk = 1, jpkm1 190 DO jj = 1, jpj 191 DO ji = 1, jpi 192 ! NH4 nitrification to NO3. Ceased for oxygen concentrations 193 ! below 2 umol/L. Inhibited at strong light 194 ! ---------------------------------------------------------- 195 zonitr = nitrif * xstep * trb(ji,jj,jk,jpnh4) * ( 1.- nitrfac(ji,jj,jk) ) & 196 & / ( 1.+ emoy(ji,jj,jk) ) * ( 1. + fr_i(ji,jj) * emoy(ji,jj,jk) ) 197 zdenitnh4 = nitrif * xstep * trb(ji,jj,jk,jpnh4) * nitrfac(ji,jj,jk) 198 zdenitnh4 = MIN( ( trb(ji,jj,jk,jpno3) - rtrn ) / rdenita, zdenitnh4 ) 199 ! Update of the tracers trends 200 ! ---------------------------- 201 tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) - zonitr - zdenitnh4 202 tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) + zonitr - rdenita * zdenitnh4 203 tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - o2nit * zonitr 204 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - 2 * rno3 * zonitr + rno3 * ( rdenita - 1. ) * zdenitnh4 205 END DO 206 END DO 207 END DO 208 209 IF(ln_ctl) THEN ! print mean trends (used for debugging) 179 DO_3D_11_11( 1, jpkm1 ) 180 ! NH4 nitrification to NO3. Ceased for oxygen concentrations 181 ! below 2 umol/L. Inhibited at strong light 182 ! ---------------------------------------------------------- 183 zonitr = nitrif * xstep * tr(ji,jj,jk,jpnh4,Kbb) * ( 1.- nitrfac(ji,jj,jk) ) & 184 & / ( 1.+ emoy(ji,jj,jk) ) * ( 1. + fr_i(ji,jj) * emoy(ji,jj,jk) ) 185 zdenitnh4 = nitrif * xstep * tr(ji,jj,jk,jpnh4,Kbb) * nitrfac(ji,jj,jk) 186 zdenitnh4 = MIN( ( tr(ji,jj,jk,jpno3,Kbb) - rtrn ) / rdenita, zdenitnh4 ) 187 ! Update of the tracers trends 188 ! ---------------------------- 189 tr(ji,jj,jk,jpnh4,Krhs) = tr(ji,jj,jk,jpnh4,Krhs) - zonitr - zdenitnh4 190 tr(ji,jj,jk,jpno3,Krhs) = tr(ji,jj,jk,jpno3,Krhs) + zonitr - rdenita * zdenitnh4 191 tr(ji,jj,jk,jpoxy,Krhs) = tr(ji,jj,jk,jpoxy,Krhs) - o2nit * zonitr 192 tr(ji,jj,jk,jptal,Krhs) = tr(ji,jj,jk,jptal,Krhs) - 2 * rno3 * zonitr + rno3 * ( rdenita - 1. ) * zdenitnh4 193 END_3D 194 195 IF(sn_cfctl%l_prttrc) THEN ! print mean trends (used for debugging) 210 196 WRITE(charout, FMT="('rem1')") 211 197 CALL prt_ctl_trc_info(charout) 212 CALL prt_ctl_trc(tab4d=tr a, mask=tmask, clinfo=ctrcnm)198 CALL prt_ctl_trc(tab4d=tr(:,:,:,:,Krhs), mask=tmask, clinfo=ctrcnm) 213 199 ENDIF 214 200 215 DO jk = 1, jpkm1 216 DO jj = 1, jpj 217 DO ji = 1, jpi 218 219 ! Bacterial uptake of iron. No iron is available in DOC. So 220 ! Bacteries are obliged to take up iron from the water. Some 221 ! studies (especially at Papa) have shown this uptake to be significant 222 ! ---------------------------------------------------------- 223 zbactfer = feratb * rfact2 * 0.6_wp / rday * tgfunc(ji,jj,jk) * xlimbacl(ji,jj,jk) & 224 & * trb(ji,jj,jk,jpfer) / ( xkferb + trb(ji,jj,jk,jpfer) ) & 225 & * zdepprod(ji,jj,jk) * zdepeff(ji,jj,jk) * zdepbac(ji,jj,jk) 226 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zbactfer*0.33 227 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zbactfer*0.25 228 tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zbactfer*0.08 229 zfebact(ji,jj,jk) = zbactfer * 0.33 230 blim(ji,jj,jk) = xlimbacl(ji,jj,jk) * zdepbac(ji,jj,jk) / 1.e-6 * zdepprod(ji,jj,jk) 231 END DO 232 END DO 233 END DO 234 235 IF(ln_ctl) THEN ! print mean trends (used for debugging) 201 DO_3D_11_11( 1, jpkm1 ) 202 203 ! Bacterial uptake of iron. No iron is available in DOC. So 204 ! Bacteries are obliged to take up iron from the water. Some 205 ! studies (especially at Papa) have shown this uptake to be significant 206 ! ---------------------------------------------------------- 207 zbactfer = feratb * rfact2 * 0.6_wp / rday * tgfunc(ji,jj,jk) * xlimbacl(ji,jj,jk) & 208 & * tr(ji,jj,jk,jpfer,Kbb) / ( xkferb + tr(ji,jj,jk,jpfer,Kbb) ) & 209 & * zdepprod(ji,jj,jk) * zdepeff(ji,jj,jk) * zdepbac(ji,jj,jk) 210 tr(ji,jj,jk,jpfer,Krhs) = tr(ji,jj,jk,jpfer,Krhs) - zbactfer*0.33 211 tr(ji,jj,jk,jpsfe,Krhs) = tr(ji,jj,jk,jpsfe,Krhs) + zbactfer*0.25 212 tr(ji,jj,jk,jpbfe,Krhs) = tr(ji,jj,jk,jpbfe,Krhs) + zbactfer*0.08 213 zfebact(ji,jj,jk) = zbactfer * 0.33 214 blim(ji,jj,jk) = xlimbacl(ji,jj,jk) * zdepbac(ji,jj,jk) / 1.e-6 * zdepprod(ji,jj,jk) 215 END_3D 216 217 IF(sn_cfctl%l_prttrc) THEN ! print mean trends (used for debugging) 236 218 WRITE(charout, FMT="('rem2')") 237 219 CALL prt_ctl_trc_info(charout) 238 CALL prt_ctl_trc(tab4d=tr a, mask=tmask, clinfo=ctrcnm)220 CALL prt_ctl_trc(tab4d=tr(:,:,:,:,Krhs), mask=tmask, clinfo=ctrcnm) 239 221 ENDIF 240 222 … … 243 225 ! --------------------------------------------------------------- 244 226 245 DO jk = 1, jpkm1 246 DO jj = 1, jpj 247 DO ji = 1, jpi 248 zdep = MAX( hmld(ji,jj), heup_01(ji,jj) ) 249 zsatur = MAX( rtrn, ( sio3eq(ji,jj,jk) - trb(ji,jj,jk,jpsil) ) / ( sio3eq(ji,jj,jk) + rtrn ) ) 250 zsatur2 = ( 1. + tsn(ji,jj,jk,jp_tem) / 400.)**37 251 znusil = 0.225 * ( 1. + tsn(ji,jj,jk,jp_tem) / 15.) * zsatur + 0.775 * zsatur2 * zsatur**9.25 252 ! Remineralization rate of BSi depedant on T and saturation 253 ! --------------------------------------------------------- 254 IF ( gdept_n(ji,jj,jk) > zdep ) THEN 255 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 zfacsi(ji,jj,jk) = zfacsib(ji,jj,jk) / ( 1.0 + zfacsib(ji,jj,jk) ) 258 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 ENDIF 261 zsiremin = ( xsiremlab * zfacsi(ji,jj,jk) + xsirem * ( 1. - zfacsi(ji,jj,jk) ) ) * xstep * znusil 262 zosil = zsiremin * trb(ji,jj,jk,jpgsi) 263 ! 264 tra(ji,jj,jk,jpgsi) = tra(ji,jj,jk,jpgsi) - zosil 265 tra(ji,jj,jk,jpsil) = tra(ji,jj,jk,jpsil) + zosil 266 END DO 267 END DO 268 END DO 269 270 IF(ln_ctl) THEN ! print mean trends (used for debugging) 227 DO_3D_11_11( 1, jpkm1 ) 228 zdep = MAX( hmld(ji,jj), heup_01(ji,jj) ) 229 zsatur = MAX( rtrn, ( sio3eq(ji,jj,jk) - tr(ji,jj,jk,jpsil,Kbb) ) / ( sio3eq(ji,jj,jk) + rtrn ) ) 230 zsatur2 = ( 1. + ts(ji,jj,jk,jp_tem,Kmm) / 400.)**37 231 znusil = 0.225 * ( 1. + ts(ji,jj,jk,jp_tem,Kmm) / 15.) * zsatur + 0.775 * zsatur2 * zsatur**9.25 232 ! Remineralization rate of BSi depedant on T and saturation 233 ! --------------------------------------------------------- 234 IF ( gdept(ji,jj,jk,Kmm) > zdep ) THEN 235 zfacsib(ji,jj,jk) = zfacsib(ji,jj,jk-1) * EXP( -0.5 * ( xsiremlab - xsirem ) & 236 & * znusil * e3t(ji,jj,jk,Kmm) / wsbio4(ji,jj,jk) ) 237 zfacsi(ji,jj,jk) = zfacsib(ji,jj,jk) / ( 1.0 + zfacsib(ji,jj,jk) ) 238 zfacsib(ji,jj,jk) = zfacsib(ji,jj,jk) * EXP( -0.5 * ( xsiremlab - xsirem ) & 239 & * znusil * e3t(ji,jj,jk,Kmm) / wsbio4(ji,jj,jk) ) 240 ENDIF 241 zsiremin = ( xsiremlab * zfacsi(ji,jj,jk) + xsirem * ( 1. - zfacsi(ji,jj,jk) ) ) * xstep * znusil 242 zosil = zsiremin * tr(ji,jj,jk,jpgsi,Kbb) 243 ! 244 tr(ji,jj,jk,jpgsi,Krhs) = tr(ji,jj,jk,jpgsi,Krhs) - zosil 245 tr(ji,jj,jk,jpsil,Krhs) = tr(ji,jj,jk,jpsil,Krhs) + zosil 246 END_3D 247 248 IF(sn_cfctl%l_prttrc) THEN ! print mean trends (used for debugging) 271 249 WRITE(charout, FMT="('rem3')") 272 250 CALL prt_ctl_trc_info(charout) 273 CALL prt_ctl_trc(tab4d=tr a, mask=tmask, clinfo=ctrcnm)251 CALL prt_ctl_trc(tab4d=tr(:,:,:,:,Krhs), mask=tmask, clinfo=ctrcnm) 274 252 ENDIF 275 253 276 254 IF( knt == nrdttrc ) THEN 277 zrfact2 = 1.e3 * rfact2r 278 ALLOCATE( zw3d(jpi,jpj,jpk) ) 279 zfact = 1.e+3 * rfact2r ! conversion from mol/l/kt to mol/m3/s 255 zrfact2 = 1.e+3 * rfact2r ! conversion from mol/l/kt to mol/m3/s 280 256 ! 281 IF( iom_use( "REMIN" ) ) THEN 282 zw3d(:,:,:) = zolimi(:,:,:) * tmask(:,:,:) * zfact ! Remineralisation rate 283 CALL iom_put( "REMIN" , zw3d ) 257 IF( iom_use( "REMIN" ) ) THEN ! Remineralisation rate 258 zolimi(:,:,jpk) = 0. ; CALL iom_put( "REMIN" , zolimi(:,:,:) * tmask(:,:,:) * zrfact2 ) 284 259 ENDIF 285 IF( iom_use( "DENIT" ) ) THEN286 zw3d(:,:,:) = denitr(:,:,:) * rdenit * rno3 * tmask(:,:,:) * zfact ! Denitrification287 CALL iom_put( "DENIT" , zw3d)260 CALL iom_put( "DENIT" , denitr(:,:,:) * rdenit * rno3 * tmask(:,:,:) * zrfact2 ) ! Denitrification 261 IF( iom_use( "BACT" ) ) THEN ! Bacterial biomass 262 zdepbac(:,:,jpk) = 0. ; CALL iom_put( "BACT", zdepbac(:,:,:) * 1.E6 * tmask(:,:,:) ) 288 263 ENDIF 289 IF( iom_use( "BACT" ) ) THEN 290 zw3d(:,:,:) = zdepbac(:,:,:) * 1.E6 * tmask(:,:,:) ! Bacterial biomass 291 CALL iom_put( "BACT", zw3d ) 292 ENDIF 293 IF( iom_use( "FEBACT" ) ) THEN 294 zw3d(:,:,:) = zfebact(:,:,:) * 1E9 * tmask(:,:,:) * zrfact2 ! Bacterial iron consumption 295 CALL iom_put( "FEBACT" , zw3d ) 296 ENDIF 297 ! 298 DEALLOCATE( zw3d ) 264 CALL iom_put( "FEBACT" , zfebact(:,:,:) * 1E9 * tmask(:,:,:) * zrfact2 ) 299 265 ENDIF 300 266 ! … … 327 293 ENDIF 328 294 ! 329 REWIND( numnatp_ref ) ! Namelist nampisrem in reference namelist : Pisces remineralization330 295 READ ( numnatp_ref, nampisrem, IOSTAT = ios, ERR = 901) 331 296 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampisrem in reference namelist' ) 332 REWIND( numnatp_cfg ) ! Namelist nampisrem in configuration namelist : Pisces remineralization333 297 READ ( numnatp_cfg, nampisrem, IOSTAT = ios, ERR = 902 ) 334 298 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nampisrem in configuration namelist' )
Note: See TracChangeset
for help on using the changeset viewer.