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