Changeset 5989 for branches/2014/dev_r4650_UKMO10_Tidally_Meaned_Diagnostics/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zfechem.F90
- Timestamp:
- 2015-12-03T09:10:32+01:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2014/dev_r4650_UKMO10_Tidally_Meaned_Diagnostics/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zfechem.F90
r5260 r5989 39 39 REAL(wp) :: kl1, kl2, kb1, kb2, ks, kpr, spd, con, kth 40 40 41 !! * Substitution42 # include " top_substitute.h90"41 !! * Substitutions 42 # include "domzgr_substitute.h90" 43 43 !!---------------------------------------------------------------------- 44 44 !! NEMO/TOP 3.3 , NEMO Consortium (2010) … … 48 48 CONTAINS 49 49 50 SUBROUTINE p4z_fechem( kt, jnt )50 SUBROUTINE p4z_fechem( kt, knt ) 51 51 !!--------------------------------------------------------------------- 52 52 !! *** ROUTINE p4z_fechem *** … … 62 62 !!--------------------------------------------------------------------- 63 63 ! 64 INTEGER, INTENT(in) :: kt, jnt ! ocean time step64 INTEGER, INTENT(in) :: kt, knt ! ocean time step 65 65 ! 66 66 INTEGER :: ji, jj, jk, jic … … 101 101 ! ------------------------------------------------- 102 102 IF( ln_ligvar ) THEN 103 ztotlig(:,:,:) = 0.09 * tr n(:,:,:,jpdoc) * 1E6 + ligand * 1E9103 ztotlig(:,:,:) = 0.09 * trb(:,:,:,jpdoc) * 1E6 + ligand * 1E9 104 104 ztotlig(:,:,:) = MIN( ztotlig(:,:,:), 10. ) 105 105 ELSE … … 113 113 ! Chemistry is supposed to be fast enough to be at equilibrium 114 114 ! ------------------------------------------------------------ 115 !CDIR NOVERRCHK116 115 DO jk = 1, jpkm1 117 !CDIR NOVERRCHK118 116 DO jj = 1, jpj 119 !CDIR NOVERRCHK120 117 DO ji = 1, jpi 121 118 ! Calculate ligand concentrations : assume 2/3rd of excess goes to … … 127 124 zionic = 19.9201 * tsn(ji,jj,jk,jp_sal) / ( 1000. - 1.00488 * tsn(ji,jj,jk,jp_sal) + rtrn ) 128 125 zph = -LOG10( MAX( hi(ji,jj,jk), rtrn) ) 129 zoxy = tr n(ji,jj,jk,jpoxy) * ( rhop(ji,jj,jk) / 1.e3 )126 zoxy = trb(ji,jj,jk,jpoxy) * ( rhop(ji,jj,jk) / 1.e3 ) 130 127 ! Fe2+ oxydation rate from Santana-Casiano et al. (2005) 131 128 zkox = 35.407 - 6.7109 * zph + 0.5342 * zph * zph - 5362.6 / ( tsn(ji,jj,jk,jp_tem) + 273.15 ) & … … 137 134 zkph1 = zkph2 / 5. 138 135 ! pass the dfe concentration from PISCES 139 ztfe = tr n(ji,jj,jk,jpfer) * 1e9136 ztfe = trb(ji,jj,jk,jpfer) * 1e9 140 137 ! ---------------------------------------------------------- 141 138 ! ANALYTICAL SOLUTION OF ROOTS OF THE FE3+ EQUATION … … 195 192 ! Chemistry is supposed to be fast enough to be at equilibrium 196 193 ! ------------------------------------------------------------ 197 !CDIR NOVERRCHK198 194 DO jk = 1, jpkm1 199 !CDIR NOVERRCHK200 195 DO jj = 1, jpj 201 !CDIR NOVERRCHK202 196 DO ji = 1, jpi 203 197 zTL1(ji,jj,jk) = ztotlig(ji,jj,jk) 204 198 zkeq = fekeq(ji,jj,jk) 205 199 zfesatur = zTL1(ji,jj,jk) * 1E-9 206 ztfe = tr n(ji,jj,jk,jpfer)200 ztfe = trb(ji,jj,jk,jpfer) 207 201 ! Fe' is the root of a 2nd order polynom 208 202 zFe3 (ji,jj,jk) = ( -( 1. + zfesatur * zkeq - zkeq * ztfe ) & … … 210 204 & + 4. * ztfe * zkeq) ) / ( 2. * zkeq ) 211 205 zFe3 (ji,jj,jk) = zFe3(ji,jj,jk) * 1E9 212 zFeL1(ji,jj,jk) = MAX( 0., tr n(ji,jj,jk,jpfer) * 1E9 - zFe3(ji,jj,jk) )206 zFeL1(ji,jj,jk) = MAX( 0., trb(ji,jj,jk,jpfer) * 1E9 - zFe3(ji,jj,jk) ) 213 207 END DO 214 208 END DO … … 216 210 ! 217 211 ENDIF 218 212 ! 219 213 zdust = 0. ! if no dust available 220 !CDIR NOVERRCHK 214 ! 221 215 DO jk = 1, jpkm1 222 !CDIR NOVERRCHK223 216 DO jj = 1, jpj 224 !CDIR NOVERRCHK225 217 DO ji = 1, jpi 226 218 zstep = xstep … … 240 232 ENDIF 241 233 #if defined key_kriest 242 ztrc = ( tr n(ji,jj,jk,jppoc) + trn(ji,jj,jk,jpcal) + trn(ji,jj,jk,jpgsi) ) * 1.e6234 ztrc = ( trb(ji,jj,jk,jppoc) + trb(ji,jj,jk,jpcal) + trb(ji,jj,jk,jpgsi) ) * 1.e6 243 235 #else 244 ztrc = ( tr n(ji,jj,jk,jppoc) + trn(ji,jj,jk,jpgoc) + trn(ji,jj,jk,jpcal) + trn(ji,jj,jk,jpgsi) ) * 1.e6236 ztrc = ( trb(ji,jj,jk,jppoc) + trb(ji,jj,jk,jpgoc) + trb(ji,jj,jk,jpcal) + trb(ji,jj,jk,jpgsi) ) * 1.e6 245 237 #endif 246 238 IF( ln_dust ) zdust = dust(ji,jj) / ( wdust / rday ) * tmask(ji,jj,jk) ! dust in kg/m2/s … … 251 243 ! to later allocate scavenged iron to the different organic pools 252 244 ! --------------------------------------------------------- 253 zdenom1 = xlam1 * tr n(ji,jj,jk,jppoc) / zlam1b245 zdenom1 = xlam1 * trb(ji,jj,jk,jppoc) / zlam1b 254 246 #if ! defined key_kriest 255 zdenom2 = xlam1 * tr n(ji,jj,jk,jpgoc) / zlam1b247 zdenom2 = xlam1 * trb(ji,jj,jk,jpgoc) / zlam1b 256 248 #endif 257 249 … … 262 254 zlamfac = MIN( 1. , zlamfac ) 263 255 zdep = MIN( 1., 1000. / fsdept(ji,jj,jk) ) 264 zlam1b = xlam1 * MAX( 0.e0, ( tr n(ji,jj,jk,jpfer) * 1.e9 - ztotlig(ji,jj,jk) ) )265 zcoag = zfeequi * zlam1b * zstep + 1E-4 * ( 1. - zlamfac ) * zdep * zstep * tr n(ji,jj,jk,jpfer)256 zlam1b = xlam1 * MAX( 0.e0, ( trb(ji,jj,jk,jpfer) * 1.e9 - ztotlig(ji,jj,jk) ) ) 257 zcoag = zfeequi * zlam1b * zstep + 1E-4 * ( 1. - zlamfac ) * zdep * zstep * trb(ji,jj,jk,jpfer) 266 258 267 259 ! Compute the coagulation of colloidal iron. This parameterization … … 269 261 ! It requires certainly some more work as it is very poorly constrained. 270 262 ! ---------------------------------------------------------------- 271 zlam1a = ( 0.369 * 0.3 * tr n(ji,jj,jk,jpdoc) + 102.4 * trn(ji,jj,jk,jppoc) ) * xdiss(ji,jj,jk) &272 & + ( 114. * 0.3 * tr n(ji,jj,jk,jpdoc) + 5.09E3 * trn(ji,jj,jk,jppoc) )263 zlam1a = ( 0.369 * 0.3 * trb(ji,jj,jk,jpdoc) + 102.4 * trb(ji,jj,jk,jppoc) ) * xdiss(ji,jj,jk) & 264 & + ( 114. * 0.3 * trb(ji,jj,jk,jpdoc) + 5.09E3 * trb(ji,jj,jk,jppoc) ) 273 265 zaggdfea = zlam1a * zstep * zfecoll 274 266 #if defined key_kriest … … 278 270 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zscave * zdenom1 + zaggdfea + zaggdfeb 279 271 #else 280 zlam1b = 3.53E3 * tr n(ji,jj,jk,jpgoc) * xdiss(ji,jj,jk)272 zlam1b = 3.53E3 * trb(ji,jj,jk,jpgoc) * xdiss(ji,jj,jk) 281 273 zaggdfeb = zlam1b * zstep * zfecoll 282 274 ! … … 292 284 ! ---------------------------------------- 293 285 IF( ln_fechem ) THEN 294 biron(:,:,:) = MAX( 0., tr n(:,:,:,jpfer) - zFeP(:,:,:) * 1E-9 )286 biron(:,:,:) = MAX( 0., trb(:,:,:,jpfer) - zFeP(:,:,:) * 1E-9 ) 295 287 ELSE 296 biron(:,:,:) = tr n(:,:,:,jpfer)288 biron(:,:,:) = trb(:,:,:,jpfer) 297 289 ENDIF 298 290 299 291 ! Output of some diagnostics variables 300 292 ! --------------------------------- 301 IF( lk_iomput .AND. jnt == nrdttrc ) THEN293 IF( lk_iomput .AND. knt == nrdttrc ) THEN 302 294 IF( iom_use("Fe3") ) CALL iom_put("Fe3" , zFe3 (:,:,:) * tmask(:,:,:) ) ! Fe3+ 303 295 IF( iom_use("FeL1") ) CALL iom_put("FeL1" , zFeL1 (:,:,:) * tmask(:,:,:) ) ! FeL1
Note: See TracChangeset
for help on using the changeset viewer.