- Timestamp:
- 2021-06-09T18:14:48+02:00 (3 years ago)
- Location:
- NEMO/branches/2021/dev_r14383_PISCES_NEWDEV_PISCO/src/TOP/PISCES/P4Z
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2021/dev_r14383_PISCES_NEWDEV_PISCO/src/TOP/PISCES/P4Z/p4zfechem.F90
r14957 r14963 56 56 INTEGER :: ji, jj, jk, jic, jn 57 57 REAL(wp) :: zlam1a, zlam1b 58 REAL(wp) :: zkeq, zfesatur, zfecoll,fe3sol, zligco58 REAL(wp) :: zkeq, zfesatur, fe3sol, zligco 59 59 REAL(wp) :: zscave, zaggdfea, zaggdfeb, ztrc, zdust, zklight 60 60 REAL(wp) :: ztfe, zhplus, zxlam, zaggliga, zaggligb … … 62 62 REAL(wp) :: zrfact2 63 63 CHARACTER (len=25) :: charout 64 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zTL1, zFe3, ztotlig, zfeprecip, zFeL1 64 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zTL1, zFe3, ztotlig, zfeprecip, zFeL1, zfecoll 65 65 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zcoll3d, zscav3d, zlcoll3d 66 66 !!--------------------------------------------------------------------- … … 75 75 zscav3d (:,:,jpk) = 0. 76 76 zlcoll3d (:,:,jpk) = 0. 77 77 zfecoll (:,:,jpk) = 0. 78 xfecolagg(:,:,jpk) = 0. 79 xcoagfe (:,:,jpk) = 0. 80 ! 78 81 ! Total ligand concentration : Ligands can be chosen to be constant or variable 79 82 ! Parameterization from Pham and Ito (2018) 80 83 ! ------------------------------------------------- 84 xfecolagg(:,:,:) = ligand * 1E9 + MAX(0., chemo2(:,:,:) - tr(:,:,:,jpoxy,Kbb) ) / 400.E-6 81 85 IF( ln_ligvar ) THEN 82 ztotlig(:,:,:) = 0.09 * 0.667 * tr(:,:,:,jpdoc,Kbb) * 1E6 & 83 & + ligand * 1E9 & 84 & + MAX(0., chemo2(:,:,:) - tr(:,:,:,jpoxy,Kbb) ) / 400.E-6 86 ztotlig(:,:,:) = 0.09 * 0.667 * tr(:,:,:,jpdoc,Kbb) * 1E6 + xfecolagg(:,:,:) 85 87 ztotlig(:,:,:) = MIN( ztotlig(:,:,:), 10. ) 86 88 ELSE … … 111 113 ! 112 114 zdust = 0. ! if no dust available 115 116 ! Computation of the colloidal fraction that is subjecto to coagulation 117 ! The assumption is that 50% of complexed iron is colloidal. Furthermore 118 ! The refractory part is supposed to be non sticky. The refractory 119 ! fraction is supposed to equal to the background concentration + 120 ! the fraction that accumulates in the deep ocean. AOU is taken as a 121 ! proxy of that accumulation following numerous studies showing 122 ! some relationship between weak ligands and AOU. 123 ! An issue with that parameterization is that when ligands are not 124 ! prognostic or non variable, all the colloidal fraction is supposed 125 ! to coagulate 126 ! ---------------------------------------------------------------------- 127 IF (ln_ligand) THEN 128 zfecoll(:,:,:) = 0.5 * zFeL1(:,:,:) * MAX(0., tr(:,:,:,jplgw,Kbb) - xfecolagg(:,:,:) * 1.0E-9 ) / ( tr(:,:,:,jplgw,Kbb) + rtrn ) 129 ELSE 130 IF (ln_ligvar) THEN 131 zfecoll(:,:,:) = 0.5 * zFeL1(:,:,:) * MAX(0., tr(:,:,:,jplgw,Kbb) - xfecolagg(:,:,:) * 1.0E-9 ) / ( tr(:,:,:,jplgw,Kbb) + rtrn ) 132 ELSE 133 zfecoll(:,:,:) = 0.5 * zFeL1(:,:,:) 134 ENDIF 135 ENDIF 136 113 137 DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 114 138 ! Scavenging rate of iron. This scavenging rate depends on the load of particles of sea water. … … 121 145 & + fesol(ji,jj,jk,5) / zhplus ) 122 146 ! 123 zfecoll = 0.5 * zFeL1(ji,jj,jk)124 147 ! precipitation of Fe3+, creation of nanoparticles 125 148 zprecip = MAX( 0., ( zFe3(ji,jj,jk) - fe3sol ) ) * kfep * xstep * ( 1.0 - nitrfac(ji,jj,jk) ) … … 144 167 & + ( 2.49 * tr(ji,jj,jk,jppoc,Kbb) ) & 145 168 & + ( 127.8 * 0.3 * tr(ji,jj,jk,jpdoc,Kbb) + 725.7 * tr(ji,jj,jk,jppoc,Kbb) ) 146 zaggdfea = zlam1a * xstep * zfecoll 169 zaggdfea = zlam1a * xstep * zfecoll(ji,jj,jk) 147 170 ! 148 171 zlam1b = ( 1.94 * xdiss(ji,jj,jk) + 1.37 ) * tr(ji,jj,jk,jpgoc,Kbb) 149 zaggdfeb = zlam1b * xstep * zfecoll 150 172 zaggdfeb = zlam1b * xstep * zfecoll(ji,jj,jk) 173 xcoagfe(ji,jj,jk) = zlam1a + zlam1b 151 174 ! 152 175 tr(ji,jj,jk,jpfer,Krhs) = tr(ji,jj,jk,jpfer,Krhs) - zscave - zaggdfea - zaggdfeb & … … 179 202 biron(:,:,:) = tr(:,:,:,jpfer,Kbb) 180 203 ! 181 IF( ln_ligand ) THEN182 !183 DO_3D( 1, 1, 1, 1, 1, jpkm1 )184 ! Coagulation of ligands due to various processes (Brownian, shear, diff. sedimentation185 ! Coefficients are taken from p4zagg186 ! -------------------------------------------------------------------------------------187 zlam1a = ( 12.0 * 0.3 * tr(ji,jj,jk,jpdoc,Kbb) + 9.05 * tr(ji,jj,jk,jppoc,Kbb) ) * xdiss(ji,jj,jk) &188 & + ( 2.49 * tr(ji,jj,jk,jppoc,Kbb) ) &189 & + ( 127.8 * 0.3 * tr(ji,jj,jk,jpdoc,Kbb) + 725.7 * tr(ji,jj,jk,jppoc,Kbb) )190 !191 zlam1b = ( 1.94 * xdiss(ji,jj,jk) + 1.37 ) * tr(ji,jj,jk,jpgoc,Kbb)192 ! 50% of the ligands are supposed to be in the colloidal size fraction193 ! as for FeL194 zligco = 0.5 * tr(ji,jj,jk,jplgw,Kbb)195 zaggliga = zlam1a * xstep * zligco196 zaggligb = zlam1b * xstep * zligco197 !198 tr(ji,jj,jk,jplgw,Krhs) = tr(ji,jj,jk,jplgw,Krhs) - zaggliga - zaggligb199 zlcoll3d(ji,jj,jk) = zaggliga + zaggligb200 END_3D201 ENDIF202 203 204 ! Output of some diagnostics variables 204 205 ! --------------------------------- … … 213 214 IF( iom_use("FECOLL") ) CALL iom_put("FECOLL" , zcoll3d(:,:,:) * 1e9 * tmask(:,:,:) * zrfact2 ) 214 215 IF( iom_use("FEPREC") ) CALL iom_put("FEPREC" , zfeprecip(:,:,:) *1e9*tmask(:,:,:)*zrfact2 ) 215 IF( iom_use("LGWCOLL")) CALL iom_put("LGWCOLL", zlcoll3d(:,:,:) * 1e9 * tmask(:,:,:) * zrfact2 )216 216 ENDIF 217 217 -
NEMO/branches/2021/dev_r14383_PISCES_NEWDEV_PISCO/src/TOP/PISCES/P4Z/p4zligand.F90
r14786 r14963 46 46 ! 47 47 INTEGER :: ji, jj, jk 48 REAL(wp) :: zlgwp, zlgwpr, zlgwr, zlablgw 49 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zligrem, zligpr, zligprod 48 REAL(wp) :: zlgwp, zlgwpr, zlgwr, zlablgw 49 REAL(wp) :: zlam1a, zlam1b, zaggliga, zligco 50 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zligrem, zligpr, zligprod, zlcoll3d 50 51 CHARACTER (len=25) :: charout 51 52 !!--------------------------------------------------------------------- … … 63 64 ! This is based on the idea that as LGW is lower 64 65 ! there is a larger fraction of refractory OM 65 zlgwr = max( rlgs , rlgw * exp( -2 * (tr(ji,jj,jk,jplgw,Kbb)*1e9) ) ) ! years 66 zlgwr = 1. / zlgwr * tgfunc(ji,jj,jk) * ( xstep / nyear_len(1) ) * blim(ji,jj,jk) * tr(ji,jj,jk,jplgw,Kbb) 66 zlgwr = ( 1.0 / rlgs * MAX(0., tr(ji,jj,jk,jplgw,Kbb) - xfecolagg(ji,jj,jk) * 1.0E-9 ) & 67 & + 1.0 / rlgw * xfecolagg(ji,jj,jk) * 1.0E-9 ) / ( rtrn + tr(ji,jj,jk,jplgw,Kbb) ) 68 zlgwr = zlgwr * tgfunc(ji,jj,jk) * ( xstep / nyear_len(1) ) * blim(ji,jj,jk) * tr(ji,jj,jk,jplgw,Kbb) 67 69 ! photochem loss of weak ligand 68 70 zlgwpr = prlgw * xstep * etot(ji,jj,jk) * tr(ji,jj,jk,jplgw,Kbb)**3 * (1. - fr_i(ji,jj)) & 69 71 & / ( tr(ji,jj,jk,jplgw,Kbb)**2 + (xklig)**2) 70 tr(ji,jj,jk,jplgw,Krhs) = tr(ji,jj,jk,jplgw,Krhs) + zlgwp - zlgwr - zlgwpr 72 ! Coagulation of ligands due to various processes (Brownian, shear, diff. sedimentation 73 ! xcoagfe is computed in p4zfechem 74 ! ------------------------------------------------------------------------------------- 75 ! 50% of the ligands are supposed to be in the colloidal size fraction 76 ! as for FeL 77 zligco = 0.5 * MAX(0., tr(ji,jj,jk,jplgw,Kbb) - xfecolagg(ji,jj,jk) * 1.0E-9 ) 78 zaggliga = xcoagfe(ji,jj,jk) * xstep * zligco 79 80 tr(ji,jj,jk,jplgw,Krhs) = tr(ji,jj,jk,jplgw,Krhs) + zlgwp - zlgwr - zlgwpr - zaggliga 81 ! 71 82 zligrem(ji,jj,jk) = zlgwr 72 83 zligpr(ji,jj,jk) = zlgwpr 73 84 zligprod(ji,jj,jk) = zlgwp 74 !85 zlcoll3d(ji,jj,jk) = zaggliga 75 86 END_3D 76 87 ! … … 86 97 IF( iom_use( "LPRODR" ) ) THEN 87 98 zligprod(:,:,jpk) = 0. ; CALL iom_put( "LPRODR", zligprod(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) ) 99 ENDIF 100 IF( iom_use( "LGWCOLL" ) ) THEN 101 zlcoll3d(:,:,jpk) = 0. ; CALL iom_put( "LGWCOLL", zlcoll3d(:,:,:) * 1.e9 * 1.e+3 * rfact2r * tmask(:,:,:) ) 88 102 ENDIF 89 103 ENDIF -
NEMO/branches/2021/dev_r14383_PISCES_NEWDEV_PISCO/src/TOP/PISCES/P4Z/p4zrem.F90
r14786 r14963 78 78 CHARACTER (len=25) :: charout 79 79 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zdepbac, zolimi, zfacsi, zfacsib, zdepeff, zfebact 80 REAL(wp), DIMENSION(jpi,jpj ) :: ztempbac 80 81 !!--------------------------------------------------------------------- 81 82 ! … … 96 97 DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 97 98 zdep = MAX( hmld(ji,jj), heup_01(ji,jj) ) 98 zdepbac(ji,jj,jk) = 0.6 * ( MAX(0.0, tr(ji,jj,jk,jpzoo,Kbb) + tr(ji,jj,jk,jpmes,Kbb) ) * 1.0E6 )**0.6 * 1.E-6 99 IF( gdept(ji,jj,jk,Kmm) >= zdep ) THEN 99 IF ( gdept(ji,jj,jk,Kmm) < zdep ) THEN 100 zdepbac(ji,jj,jk) = 0.6 * ( MAX(0.0, tr(ji,jj,jk,jpzoo,Kbb) + tr(ji,jj,jk,jpmes,Kbb) ) * 1.0E6 )**0.6 * 1.E-6 101 ztempbac(ji,jj) = zdepbac(ji,jj,jk) 102 ! IF( gdept(ji,jj,jk,Kmm) >= zdep ) THEN 103 ELSE 100 104 zdepmin = MIN( 1., zdep / gdept(ji,jj,jk,Kmm) ) 105 zdepbac (ji,jj,jk) = zdepmin**0.683 * ztempbac(ji,jj) 101 106 zdepeff(ji,jj,jk) = zdepeff(ji,jj,jk) * zdepmin**0.3 102 107 ENDIF … … 182 187 ! is treated here. The GGE of bacteria supposed to be equal to 183 188 ! 0.33. This is hard-coded. 184 tr(ji,jj,jk,jpfer,Krhs) = tr(ji,jj,jk,jpfer,Krhs) - zbactfer*0.1 8185 tr(ji,jj,jk,jpsfe,Krhs) = tr(ji,jj,jk,jpsfe,Krhs) + zbactfer*0.1 5186 tr(ji,jj,jk,jpbfe,Krhs) = tr(ji,jj,jk,jpbfe,Krhs) + zbactfer*0.0 3187 zfebact(ji,jj,jk) = zbactfer * 0.1 8189 tr(ji,jj,jk,jpfer,Krhs) = tr(ji,jj,jk,jpfer,Krhs) - zbactfer*0.12 190 tr(ji,jj,jk,jpsfe,Krhs) = tr(ji,jj,jk,jpsfe,Krhs) + zbactfer*0.10 191 tr(ji,jj,jk,jpbfe,Krhs) = tr(ji,jj,jk,jpbfe,Krhs) + zbactfer*0.02 192 zfebact(ji,jj,jk) = zbactfer * 0.12 188 193 blim(ji,jj,jk) = xlimbacl(ji,jj,jk) * zdepbac(ji,jj,jk) / 1.e-6 189 194 END_3D -
NEMO/branches/2021/dev_r14383_PISCES_NEWDEV_PISCO/src/TOP/PISCES/P4Z/p4zsed.F90
r14786 r14963 16 16 USE p4zlim ! Co-limitations of differents nutrients 17 17 USE p4zint ! interpolation and computation of various fields 18 USE p4zligand ! Fe ligands sources and sinks 18 19 USE sed ! Sediment module 19 20 USE iom ! I/O manager … … 208 209 zwstpoc = tr(ji,jj,ikt,jpgoc,Kbb) * zws4 + tr(ji,jj,ikt,jppoc,Kbb) * zws3 209 210 ! Denitrification in the sediments 210 zpdenit = MIN( 0.5 * ( tr(ji,jj,ikt,jpno3,Kbb) - rtrn ) / rdenit, zdenit2d(ji,jj) * zwstpoc * zrivno3 )211 zpdenit = MIN( 0.5 * ( tr(ji,jj,ikt,jpno3,Kbb) - rtrn ) / rdenit, zdenit2d(ji,jj) * zwstpoc * zrivno3 * 0.85 ) 211 212 ! Fraction that is not denitrified 212 z1pdenit = zwstpoc * zrivno3 - zpdenit213 z1pdenit = zwstpoc * zrivno3 * 0.85 - zpdenit 213 214 ! Oxic remineralization of organic matter in the sediments 214 215 zolimit = MIN( ( tr(ji,jj,ikt,jpoxy,Kbb) - rtrn ) / o2ut, z1pdenit * ( 1.- nitrfac(ji,jj,ikt) ) ) 215 216 ! The fraction that cannot be denitrified nor oxidized by O2 216 217 ! is released back to the water column as DOC 217 tr(ji,jj,ikt,jpdoc,Krhs) = tr(ji,jj,ikt,jpdoc,Krhs) + z1pdenit - zolimit 218 ! 15% of the POC that is processed in sediment is released as DOC 219 tr(ji,jj,ikt,jpdoc,Krhs) = tr(ji,jj,ikt,jpdoc,Krhs) + z1pdenit - zolimit + 0.15 * zwstpoc * zrivno3 218 220 ! Update of the tracers concentrations 219 221 tr(ji,jj,ikt,jppo4,Krhs) = tr(ji,jj,ikt,jppo4,Krhs) + zpdenit + zolimit … … 225 227 sdenit(ji,jj) = rdenit * zpdenit * e3t(ji,jj,ikt,Kmm) 226 228 zsedc(ji,jj) = (1. - zrivno3) * zwstpoc * e3t(ji,jj,ikt,Kmm) 229 IF ( ln_ligand ) tr(ji,jj,ikt,jplgw,Krhs) = tr(ji,jj,ikt,jplgw,Krhs) + 0.15 * zwstpoc * zrivno3 * rlig 227 230 ! PISCES-QUOTA (p5z) 228 231 IF( ln_p5z ) THEN … … 294 297 tr(ji,jj,jk,jppo4,Krhs) = tr(ji,jj,jk,jppo4,Krhs) - zfact * 2.0 / 3.0 295 298 tr(ji,jj,jk,jpdoc,Krhs) = tr(ji,jj,jk,jpdoc,Krhs) + zfact * 1.0 / 3.0 299 IF ( ln_ligand ) tr(ji,jj,jk,jplgw,Krhs) = tr(ji,jj,jk,jplgw,Krhs) + zfact * ldocp 296 300 tr(ji,jj,jk,jppoc,Krhs) = tr(ji,jj,jk,jppoc,Krhs) + zfact * 1.0 / 3.0 * 2.0 / 3.0 297 301 tr(ji,jj,jk,jpgoc,Krhs) = tr(ji,jj,jk,jpgoc,Krhs) + zfact * 1.0 / 3.0 * 1.0 / 3.0 … … 326 330 tr(ji,jj,jk,jpdon,Krhs) = tr(ji,jj,jk,jpdon,Krhs) + zfact * 1.0 / 3.0 327 331 tr(ji,jj,jk,jpdoc,Krhs) = tr(ji,jj,jk,jpdoc,Krhs) + zfact * 1.0 / 3.0 332 IF ( ln_ligand ) tr(ji,jj,jk,jplgw,Krhs) = tr(ji,jj,jk,jplgw,Krhs) + zfact * ldocp 328 333 tr(ji,jj,jk,jpdop,Krhs) = tr(ji,jj,jk,jpdop,Krhs) + 16.0 / 46.0 * zfact / 3.0 & 329 334 & - 16.0 / 46.0 * zfact * ztrdop / (ztrpo4 + ztrdop + rtrn)
Note: See TracChangeset
for help on using the changeset viewer.