Changeset 14276 for NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zfechem.F90
- Timestamp:
- 2021-01-07T23:09:56+01:00 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zfechem.F90
r13200 r14276 30 30 REAL(wp), PUBLIC :: ligand !: ligand concentration in the ocean 31 31 REAL(wp), PUBLIC :: kfep !: rate constant for nanoparticle formation 32 REAL(wp), PUBLIC :: scaveff !: Fraction of scavenged iron that is considered as being subject to solubilization 32 33 33 34 !!---------------------------------------------------------------------- … … 50 51 ! 51 52 INTEGER :: ji, jj, jk, jic, jn 52 REAL(wp) :: z dep, zlam1a, zlam1b, zlamfac53 REAL(wp) :: zkeq, zfe equi, zfesatur, zfecoll, fe3sol, zligco54 REAL(wp) :: z denom1, zscave, zaggdfea, zaggdfeb, zcoag, ztrc, zdust55 REAL(wp) :: z denom2, ztfe, zhplus, zxlam, zaggliga, zaggligb53 REAL(wp) :: zlam1a, zlam1b 54 REAL(wp) :: zkeq, zfesatur, zfecoll, fe3sol, zligco 55 REAL(wp) :: zscave, zaggdfea, zaggdfeb, ztrc, zdust, zklight 56 REAL(wp) :: ztfe, zhplus, zxlam, zaggliga, zaggligb 56 57 REAL(wp) :: zrfact2 57 58 CHARACTER (len=25) :: charout 58 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zTL1, zFe3, ztotlig, precip, zFeL159 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zcoll3d, zscav3d, zlcoll3d 59 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zTL1, zFe3, ztotlig, precip, precipno3, zFeL1 60 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zcoll3d, zscav3d, zlcoll3d, zprecip3d 60 61 !!--------------------------------------------------------------------- 61 62 ! … … 66 67 67 68 ! Total ligand concentration : Ligands can be chosen to be constant or variable 68 ! Parameterization from Tagliabue and Voelker (2011)69 ! Parameterization from Pham and Ito (2018) 69 70 ! ------------------------------------------------- 70 71 IF( ln_ligvar ) THEN 71 ztotlig(:,:,:) = 0.09 * trb(:,:,:,jpdoc) * 1E6 + ligand * 1E972 ztotlig(:,:,:) = 0.09 * 0.667 * trb(:,:,:,jpdoc) * 1E6 + ligand * 1E9 + MAX(0., chemo2(:,:,:) - trb(:,:,:,jpoxy) ) / 400.E-6 72 73 ztotlig(:,:,:) = MIN( ztotlig(:,:,:), 10. ) 73 74 ELSE 74 75 IF( ln_ligand ) THEN ; ztotlig(:,:,:) = trb(:,:,:,jplgw) * 1E9 75 ELSE ; ztotlig(:,:,:) = ligand * 1E9 76 ELSE ; ztotlig(:,:,:) = ligand * 1E9 76 77 ENDIF 77 78 ENDIF … … 79 80 ! ------------------------------------------------------------ 80 81 ! from Aumont and Bopp (2006) 81 ! This model is based on one ligand and Fe'82 ! This model is based on one ligand, Fe2+ and Fe3+ 82 83 ! Chemistry is supposed to be fast enough to be at equilibrium 83 84 ! ------------------------------------------------------------ … … 87 88 zTL1(ji,jj,jk) = ztotlig(ji,jj,jk) 88 89 zkeq = fekeq(ji,jj,jk) 90 zklight = 4.77E-7 * etot(ji,jj,jk) * 0.5 / 10**-6.3 89 91 zfesatur = zTL1(ji,jj,jk) * 1E-9 90 ztfe = trb(ji,jj,jk,jpfer)92 ztfe = (1.0 + zklight) * trb(ji,jj,jk,jpfer) 91 93 ! Fe' is the root of a 2nd order polynom 92 zFe3 (ji,jj,jk) = ( -( 1. + zfesatur * zkeq - zkeq * ztfe) &93 & + SQRT( ( 1. + zfesatur * zkeq - zkeq * ztfe)**2 &94 zFe3 (ji,jj,jk) = ( -( 1. + zfesatur * zkeq + zklight + consfe3(ji,jj,jk)/10**-6.3 - zkeq * trb(ji,jj,jk,jpfer) ) & 95 & + SQRT( ( 1. + zfesatur * zkeq + zklight + consfe3(ji,jj,jk)/10**-6.3 - zkeq * trb(ji,jj,jk,jpfer) )**2 & 94 96 & + 4. * ztfe * zkeq) ) / ( 2. * zkeq ) 95 zFe3 (ji,jj,jk) = zFe3(ji,jj,jk) * 1E9 96 zFeL1(ji,jj,jk) = MAX( 0., trb(ji,jj,jk,jpfer) * 1E9 - zFe3(ji,jj,jk) ) 97 zFeL1(ji,jj,jk) = MAX( 0., trb(ji,jj,jk,jpfer) - zFe3(ji,jj,jk) ) 97 98 END DO 98 99 END DO 99 100 END DO 100 ! 101 101 ! 102 plig(:,:,:) = MAX( 0., ( zFeL1(:,:,:) / ( trb(:,:,:,jpfer) + rtrn ) ) ) 103 ! 102 104 zdust = 0. ! if no dust available 103 105 DO jk = 1, jpkm1 … … 113 115 & + fesol(ji,jj,jk,5) / zhplus ) 114 116 ! 115 zfeequi = zFe3(ji,jj,jk) * 1E-9 116 zfecoll = 0.5 * zFeL1(ji,jj,jk) * 1E-9 117 zfecoll = 0.5 * zFeL1(ji,jj,jk) 117 118 ! precipitation of Fe3+, creation of nanoparticles 118 precip(ji,jj,jk) = MAX( 0., ( zFe3(ji,jj,jk) * 1E-9 - fe3sol ) ) * kfep * xstep 119 precip(ji,jj,jk) = MAX( 0., ( zFe3(ji,jj,jk) - fe3sol ) ) * kfep * xstep * ( 1.0 - nitrfac(ji,jj,jk) ) 120 ! Precipitation of Fe2+ due to oxidation by NO3 (Croot et al., 2019) 121 ! This occurs in anoxic waters only 122 precipno3(ji,jj,jk) = 2.0 * 130.0 * trb(ji,jj,jk,jpno3) * nitrfac(ji,jj,jk) * xstep * zFe3(ji,jj,jk) 119 123 ! 120 124 ztrc = ( trb(ji,jj,jk,jppoc) + trb(ji,jj,jk,jpgoc) + trb(ji,jj,jk,jpcal) + trb(ji,jj,jk,jpgsi) ) * 1.e6 125 ztrc = MAX( rtrn, ztrc ) 121 126 IF( ln_dust ) zdust = dust(ji,jj) / ( wdust / rday ) * tmask(ji,jj,jk) 122 IF (ln_ligand) THEN 123 zxlam = xlam1 * MAX( 1.E-3, EXP(-2 * etot(ji,jj,jk) / 10. ) * (1. - EXP(-2 * trb(ji,jj,jk,jpoxy) / 100.E-6 ) )) 124 ELSE 125 zxlam = xlam1 * 1.0 126 ENDIF 127 zlam1b = 3.e-5 + xlamdust * zdust + zxlam * ztrc 128 zscave = zfeequi * zlam1b * xstep 129 130 ! Compute the different ratios for scavenging of iron 131 ! to later allocate scavenged iron to the different organic pools 132 ! --------------------------------------------------------- 133 zdenom1 = zxlam * trb(ji,jj,jk,jppoc) / zlam1b 134 zdenom2 = zxlam * trb(ji,jj,jk,jpgoc) / zlam1b 135 136 ! Increased scavenging for very high iron concentrations found near the coasts 137 ! due to increased lithogenic particles and let say it is unknown processes (precipitation, ...) 138 ! ----------------------------------------------------------- 139 zlamfac = MAX( 0.e0, ( gphit(ji,jj) + 55.) / 30. ) 140 zlamfac = MIN( 1. , zlamfac ) 141 zdep = MIN( 1., 1000. / gdept_n(ji,jj,jk) ) 142 zcoag = 1E-4 * ( 1. - zlamfac ) * zdep * xstep * trb(ji,jj,jk,jpfer) 127 zxlam = MAX( 1.E-3, (1. - EXP(-2 * trb(ji,jj,jk,jpoxy) / 100.E-6 ) )) 128 zlam1b = 3.e-5 + ( xlamdust * zdust + xlam1 * ztrc ) * zxlam 129 zscave = zFe3(ji,jj,jk) * zlam1b * xstep 143 130 144 131 ! Compute the coagulation of colloidal iron. This parameterization … … 146 133 ! It requires certainly some more work as it is very poorly constrained. 147 134 ! ---------------------------------------------------------------- 148 zlam1a = ( 0.369 * 0.3 * trb(ji,jj,jk,jpdoc) + 102.4 * trb(ji,jj,jk,jppoc) ) * xdiss(ji,jj,jk) & 149 & + ( 114. * 0.3 * trb(ji,jj,jk,jpdoc) ) 135 zlam1a = ( 12.0 * 0.3 * trb(ji,jj,jk,jpdoc) + 9.05 * trb(ji,jj,jk,jppoc) ) * xdiss(ji,jj,jk) & 136 & + ( 2.49 * trb(ji,jj,jk,jppoc) ) & 137 & + ( 127.8 * 0.3 * trb(ji,jj,jk,jpdoc) + 725.7 * trb(ji,jj,jk,jppoc) ) 150 138 zaggdfea = zlam1a * xstep * zfecoll 151 139 ! 152 zlam1b = 3.53E3 * trb(ji,jj,jk,jpgoc) * xdiss(ji,jj,jk)140 zlam1b = ( 1.94 * xdiss(ji,jj,jk) + 1.37 ) * trb(ji,jj,jk,jpgoc) 153 141 zaggdfeb = zlam1b * xstep * zfecoll 154 142 ! 155 143 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zscave - zaggdfea - zaggdfeb & 156 & - zcoag - precip(ji,jj,jk) 157 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zscave * zdenom1 + zaggdfea 158 tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zscave * zdenom2 + zaggdfeb 159 zscav3d(ji,jj,jk) = zscave 144 & - precip(ji,jj,jk) - precipno3(ji,jj,jk) 145 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zscave * scaveff * trb(ji,jj,jk,jppoc) / ztrc 146 tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zscave * scaveff * trb(ji,jj,jk,jpgoc) / ztrc 147 148 ! Precipitated iron is supposed to be permanently lost. 149 ! Scavenged iron is supposed to be released back to seawater 150 ! when POM is solubilized. This is highly uncertain as probably 151 ! a significant part of it may be rescavenged back onto 152 ! the particles. An efficiency factor is applied that is read 153 ! in the namelist. 154 ! See for instance Tagliabue et al. (2019). 155 ! Aggregated FeL is considered as biogenic Fe as it 156 ! probably remains complexed when the particle is solubilized. 157 ! ------------------------------------------------------------- 158 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zaggdfea 159 tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zaggdfeb 160 zscav3d(ji,jj,jk) = zscave 160 161 zcoll3d(ji,jj,jk) = zaggdfea + zaggdfeb 162 zprecip3d(ji,jj,jk) = precip(ji,jj,jk) + precipno3(ji,jj,jk) 161 163 ! 162 164 END DO … … 175 177 176 178 ! Coagulation of ligands due to various processes (Brownian, shear, diff. sedimentation 177 ! Coefficients are taken from thep4zagg179 ! Coefficients are taken from p4zagg 178 180 ! ------------------------------------------------------------------------------------- 179 zlam1a = ( 0.369 * 0.3 * trb(ji,jj,jk,jpdoc) + 102.4 * trb(ji,jj,jk,jppoc) ) * xdiss(ji,jj,jk) & 180 & + ( 114. * 0.3 * trb(ji,jj,jk,jpdoc) ) 181 zlam1a = ( 12.0 * 0.3 * trb(ji,jj,jk,jpdoc) + 9.05 * trb(ji,jj,jk,jppoc) ) * xdiss(ji,jj,jk) & 182 & + ( 2.49 * trb(ji,jj,jk,jppoc) ) & 183 & + ( 127.8 * 0.3 * trb(ji,jj,jk,jpdoc) + 725.7 * trb(ji,jj,jk,jppoc) ) 181 184 ! 182 zlam1b = 3.53E3 * trb(ji,jj,jk,jpgoc) * xdiss(ji,jj,jk) 183 185 zlam1b = ( 1.94 * xdiss(ji,jj,jk) + 1.37 ) * trb(ji,jj,jk,jpgoc) 184 186 ! 50% of the ligands are supposed to be in the colloidal size fraction 185 zligco = 0.5 * trn(ji,jj,jk,jplgw) 186 zaggliga = zlam1a * xstep * zligco 187 ! as for FeL 188 zligco = 0.5 * trb(ji,jj,jk,jplgw) 189 zaggliga = zlam1a * xstep * zligco 187 190 zaggligb = zlam1b * xstep * zligco 188 191 tra(ji,jj,jk,jplgw) = tra(ji,jj,jk,jplgw) - zaggliga - zaggligb … … 191 194 END DO 192 195 END DO 193 !194 plig(:,:,:) = MAX( 0., ( ( zFeL1(:,:,:) * 1E-9 ) / ( trb(:,:,:,jpfer) +rtrn ) ) )195 196 ! 196 197 ENDIF … … 206 207 IF( iom_use("FESCAV") ) CALL iom_put("FESCAV" , zscav3d(:,:,:) * 1e9 * tmask(:,:,:) * zrfact2 ) 207 208 IF( iom_use("FECOLL") ) CALL iom_put("FECOLL" , zcoll3d(:,:,:) * 1e9 * tmask(:,:,:) * zrfact2 ) 209 IF( iom_use("FEPREC") ) CALL iom_put("FEPREC" , zprecip3d(:,:,:) * 1e9 * tmask(:,:,:) * zrfact2 ) 208 210 IF( iom_use("LGWCOLL")) CALL iom_put("LGWCOLL", zlcoll3d(:,:,:) * 1e9 * tmask(:,:,:) * zrfact2 ) 209 211 ENDIF … … 234 236 INTEGER :: ios ! Local integer 235 237 !! 236 NAMELIST/nampisfer/ ln_ligvar, xlam1, xlamdust, ligand, kfep 238 NAMELIST/nampisfer/ ln_ligvar, xlam1, xlamdust, ligand, kfep, scaveff 237 239 !!---------------------------------------------------------------------- 238 240 ! … … 258 260 WRITE(numout,*) ' ligand concentration in the ocean ligand =', ligand 259 261 WRITE(numout,*) ' rate constant for nanoparticle formation kfep =', kfep 262 WRITE(numout,*) ' Scavenged iron that is added to POFe scaveff =', scaveff 260 263 ENDIF 261 264 !
Note: See TracChangeset
for help on using the changeset viewer.