Changeset 13200 for NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zfechem.F90
- Timestamp:
- 2020-07-02T08:58:10+02:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zfechem.F90
r11536 r13200 51 51 INTEGER :: ji, jj, jk, jic, jn 52 52 REAL(wp) :: zdep, zlam1a, zlam1b, zlamfac 53 REAL(wp) :: zkeq, zfeequi, zfesatur, zfecoll, fe3sol 54 REAL(wp) :: zdenom1, zscave, zaggdfea, zaggdfeb, zcoag 55 REAL(wp) :: ztrc, zdust 56 REAL(wp) :: zdenom2 57 REAL(wp) :: zzFeL1, zzFeL2, zzFe2, zzFeP, zzFe3, zzstrn2 58 REAL(wp) :: zrum, zcodel, zargu, zlight 59 REAL(wp) :: zkox, zkph1, zkph2, zph, zionic, ztligand 60 REAL(wp) :: za, zb, zc, zkappa1, zkappa2, za0, za1, za2 61 REAL(wp) :: zxs, zfunc, zp, zq, zd, zr, zphi, zfff, zp3, zq2 62 REAL(wp) :: ztfe, zoxy, zhplus, zxlam 63 REAL(wp) :: zaggliga, zaggligb 64 REAL(wp) :: dissol, zligco 65 REAL(wp) :: zrfact2 53 REAL(wp) :: zkeq, zfeequi, zfesatur, zfecoll, fe3sol, zligco 54 REAL(wp) :: zdenom1, zscave, zaggdfea, zaggdfeb, zcoag, ztrc, zdust 55 REAL(wp) :: zdenom2, ztfe, zhplus, zxlam, zaggliga, zaggligb 56 REAL(wp) :: zrfact2 66 57 CHARACTER (len=25) :: charout 67 58 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zTL1, zFe3, ztotlig, precip, zFeL1 … … 71 62 IF( ln_timing ) CALL timing_start('p4z_fechem') 72 63 ! 73 zFe3 (:,:,:) = 0. 74 zFeL1(:,:,:) = 0. 64 zFe3 (:,:,:) = 0. ; zFeL1(:,:,:) = 0. 75 65 zTL1 (:,:,:) = 0. 76 66 … … 124 114 ! 125 115 zfeequi = zFe3(ji,jj,jk) * 1E-9 126 zhplus = max( rtrn, hi(ji,jj,jk) )127 fe3sol = fesol(ji,jj,jk,1) * ( zhplus**3 + fesol(ji,jj,jk,2) * zhplus**2 &128 & + fesol(ji,jj,jk,3) * zhplus + fesol(ji,jj,jk,4) &129 & + fesol(ji,jj,jk,5) / zhplus )130 116 zfecoll = 0.5 * zFeL1(ji,jj,jk) * 1E-9 131 117 ! precipitation of Fe3+, creation of nanoparticles … … 133 119 ! 134 120 ztrc = ( trb(ji,jj,jk,jppoc) + trb(ji,jj,jk,jpgoc) + trb(ji,jj,jk,jpcal) + trb(ji,jj,jk,jpgsi) ) * 1.e6 135 IF( ln_dust ) zdust = dust(ji,jj) / ( wdust / rday ) * tmask(ji,jj,jk) & 136 & * EXP( -gdept_n(ji,jj,jk) / 540. ) 121 IF( ln_dust ) zdust = dust(ji,jj) / ( wdust / rday ) * tmask(ji,jj,jk) 137 122 IF (ln_ligand) THEN 138 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 ) )) … … 149 134 zdenom2 = zxlam * trb(ji,jj,jk,jpgoc) / zlam1b 150 135 151 ! 152 ! 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, ...) 153 138 ! ----------------------------------------------------------- 154 139 zlamfac = MAX( 0.e0, ( gphit(ji,jj) + 55.) / 30. ) … … 157 142 zcoag = 1E-4 * ( 1. - zlamfac ) * zdep * xstep * trb(ji,jj,jk,jpfer) 158 143 159 ! 160 ! 161 ! 162 ! 144 ! Compute the coagulation of colloidal iron. This parameterization 145 ! could be thought as an equivalent of colloidal pumping. 146 ! It requires certainly some more work as it is very poorly constrained. 147 ! ---------------------------------------------------------------- 163 148 zlam1a = ( 0.369 * 0.3 * trb(ji,jj,jk,jpdoc) + 102.4 * trb(ji,jj,jk,jppoc) ) * xdiss(ji,jj,jk) & 164 & 149 & + ( 114. * 0.3 * trb(ji,jj,jk,jpdoc) ) 165 150 zaggdfea = zlam1a * xstep * zfecoll 166 151 ! … … 188 173 DO jj = 1, jpj 189 174 DO ji = 1, jpi 175 176 ! Coagulation of ligands due to various processes (Brownian, shear, diff. sedimentation 177 ! Coefficients are taken from the p4zagg 178 ! ------------------------------------------------------------------------------------- 190 179 zlam1a = ( 0.369 * 0.3 * trb(ji,jj,jk,jpdoc) + 102.4 * trb(ji,jj,jk,jppoc) ) * xdiss(ji,jj,jk) & 191 180 & + ( 114. * 0.3 * trb(ji,jj,jk,jpdoc) ) 192 181 ! 193 182 zlam1b = 3.53E3 * trb(ji,jj,jk,jpgoc) * xdiss(ji,jj,jk) 183 184 ! 50% of the ligands are supposed to be in the colloidal size fraction 194 185 zligco = 0.5 * trn(ji,jj,jk,jplgw) 195 186 zaggliga = zlam1a * xstep * zligco … … 206 197 ! Output of some diagnostics variables 207 198 ! --------------------------------- 208 IF( lk_iomput ) THEN 209 IF( knt == nrdttrc ) THEN 210 zrfact2 = 1.e3 * rfact2r ! conversion from mol/L/timestep into mol/m3/s 211 IF( iom_use("Fe3") ) CALL iom_put("Fe3" , zFe3 (:,:,:) * tmask(:,:,:) ) ! Fe3+ 212 IF( iom_use("FeL1") ) CALL iom_put("FeL1" , zFeL1 (:,:,:) * tmask(:,:,:) ) ! FeL1 213 IF( iom_use("TL1") ) CALL iom_put("TL1" , zTL1 (:,:,:) * tmask(:,:,:) ) ! TL1 214 IF( iom_use("Totlig") ) CALL iom_put("Totlig" , ztotlig(:,:,:) * tmask(:,:,:) ) ! TL 215 IF( iom_use("Biron") ) CALL iom_put("Biron" , biron (:,:,:) * 1e9 * tmask(:,:,:) ) ! biron 216 IF( iom_use("FESCAV") ) CALL iom_put("FESCAV" , zscav3d(:,:,:) * 1e9 * tmask(:,:,:) * zrfact2 ) 217 IF( iom_use("FECOLL") ) CALL iom_put("FECOLL" , zcoll3d(:,:,:) * 1e9 * tmask(:,:,:) * zrfact2 ) 218 IF( iom_use("LGWCOLL")) CALL iom_put("LGWCOLL", zlcoll3d(:,:,:) * 1e9 * tmask(:,:,:) * zrfact2 ) 219 ENDIF 199 IF( lk_iomput .AND. knt == nrdttrc ) THEN 200 zrfact2 = 1.e3 * rfact2r ! conversion from mol/L/timestep into mol/m3/s 201 IF( iom_use("Fe3") ) CALL iom_put("Fe3" , zFe3 (:,:,:) * tmask(:,:,:) ) ! Fe3+ 202 IF( iom_use("FeL1") ) CALL iom_put("FeL1" , zFeL1 (:,:,:) * tmask(:,:,:) ) ! FeL1 203 IF( iom_use("TL1") ) CALL iom_put("TL1" , zTL1 (:,:,:) * tmask(:,:,:) ) ! TL1 204 IF( iom_use("Totlig") ) CALL iom_put("Totlig" , ztotlig(:,:,:) * tmask(:,:,:) ) ! TL 205 IF( iom_use("Biron") ) CALL iom_put("Biron" , biron (:,:,:) * 1e9 * tmask(:,:,:) ) ! biron 206 IF( iom_use("FESCAV") ) CALL iom_put("FESCAV" , zscav3d(:,:,:) * 1e9 * tmask(:,:,:) * zrfact2 ) 207 IF( iom_use("FECOLL") ) CALL iom_put("FECOLL" , zcoll3d(:,:,:) * 1e9 * tmask(:,:,:) * zrfact2 ) 208 IF( iom_use("LGWCOLL")) CALL iom_put("LGWCOLL", zlcoll3d(:,:,:) * 1e9 * tmask(:,:,:) * zrfact2 ) 220 209 ENDIF 221 210
Note: See TracChangeset
for help on using the changeset viewer.