Changeset 3904 for trunk/NEMOGCM/NEMO
- Timestamp:
- 2013-05-24T11:58:01+02:00 (11 years ago)
- Location:
- trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zfechem.F90
r3780 r3904 263 263 zdep = MIN( 1., 1000. / fsdept(ji,jj,jk) ) 264 264 zlam1b = xlam1 * MAX( 0.e0, ( trn(ji,jj,jk,jpfer) * 1.e9 - ztotlig(ji,jj,jk) ) ) 265 zcoag = zfeequi * zlam1b * zstep + 1E-4 * ( 1. - zlamfac ) * zdep * zstep * zfecoll265 zcoag = zfeequi * zlam1b * zstep + 1E-4 * ( 1. - zlamfac ) * zdep * zstep * trn(ji,jj,jk,jpfer) 266 266 267 267 ! Compute the coagulation of colloidal iron. This parameterization … … 278 278 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zscave * zdenom1 + zaggdfea + zaggdfeb 279 279 #else 280 zlam1b = 3.53E3 * trn(ji,jj,jk,jpgoc) * xdiss(ji,jj,jk) + 1E-4 * ( 1. - zlamfac ) * zdep280 zlam1b = 3.53E3 * trn(ji,jj,jk,jpgoc) * xdiss(ji,jj,jk) 281 281 zaggdfeb = zlam1b * zstep * zfecoll 282 282 ! -
trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmeso.F90
r3856 r3904 140 140 ! ---------------------------------- 141 141 # if ! defined key_kriest 142 zgrazffeg = grazflux * zstep * wsbio4(ji,jj,jk) & 143 ! & * tgfunc2(ji,jj,jk) * trn(ji,jj,jk,jpgoc) * trn(ji,jj,jk,jpmes) 144 & * 2. * trn(ji,jj,jk,jpgoc) * trn(ji,jj,jk,jpmes) 142 zgrazffeg = grazflux * zstep * wsbio4(ji,jj,jk) * trn(ji,jj,jk,jpgoc) * trn(ji,jj,jk,jpmes) 145 143 zgrazfffg = zgrazffeg * trn(ji,jj,jk,jpbfe) / (trn(ji,jj,jk,jpgoc) + rtrn) 146 144 # endif 147 zgrazffep = grazflux * zstep * wsbio3(ji,jj,jk) & 148 ! & * tgfunc2(ji,jj,jk) * trn(ji,jj,jk,jppoc) * trn(ji,jj,jk,jpmes) 149 & * 2. * trn(ji,jj,jk,jppoc) * trn(ji,jj,jk,jpmes) 145 zgrazffep = grazflux * zstep * wsbio3(ji,jj,jk) * trn(ji,jj,jk,jppoc) * trn(ji,jj,jk,jpmes) 150 146 zgrazfffp = zgrazffep * trn(ji,jj,jk,jpsfe) / (trn(ji,jj,jk,jppoc) + rtrn) 151 147 ! … … 154 150 ! Compute the proportion of filter feeders 155 151 zproport = (zgrazffep + zgrazffeg)/(rtrn + zgraztot) 152 ! Compute fractionation of aggregates. It is assumed that diatoms based aggregates are more prone to fractionation 153 ! since they are more porous (marine snow instead of fecal pellets) 156 154 zratio = trn(ji,jj,jk,jpgsi) / ( trn(ji,jj,jk,jpgoc) + rtrn ) 157 155 zratio2 = zratio * zratio 158 ! zfrac = zproport * 0.15 * zstep * & 159 ! ( 0.2 + 0.8 * zratio2 / ( 1.5**2 + zratio2 ) ) & 160 ! *trn(ji,jj,jk,jpmes)/3E-7 *trn(ji,jj,jk,jpgoc) 161 zfrac = zproport * grazflux * zstep * wsbio4(ji,jj,jk) & 162 & * ( 0.1 + 3.9 * zratio2 / ( 1.**2 + zratio2 ) ) & 163 & * 2. * trn(ji,jj,jk,jpmes) * trn(ji,jj,jk,jpgoc) 156 zfrac = zproport * zgrazffeg * ( 0.1 + 3.9 * zratio2 / ( 1.**2 + zratio2 ) ) 164 157 165 158 zfracfe = zfrac * trn(ji,jj,jk,jpbfe) / (trn(ji,jj,jk,jpgoc) + rtrn) … … 193 186 zepshert = epsher2 * MIN( 1., zncratio ) 194 187 zepsherv = zepshert * MIN( 1., zgrasrat / ferat3 ) 195 zgrarem2 = zgraztot * ( 1. - zepsherv - unass2 ) + zrespz2 &196 & + ( 1. - zepsherv - unass2 ) /( 1. - zepsherv + rtrn) * ztortz2197 zgrafer2 = zgraztot * MAX( 0. , ( 1. - unass2 ) * zgrasrat - ferat3 * zepsherv ) &198 & + ferat3 * ( zrespz2 + ( 1. - zepsherv - unass2 ) /( 1. - zepsherv + rtrn) * ztortz2 )188 zgrarem2 = zgraztot * ( 1. - zepsherv - unass2 ) + zrespz2 & 189 & + ( 1. - zepsherv - unass2 ) /( 1. - zepsherv ) * ztortz2 190 zgrafer2 = zgraztot * MAX( 0. , ( 1. - unass2 ) * zgrasrat - ferat3 * zepsherv ) & 191 & + ferat3 * ( zrespz2 + ( 1. - zepsherv - unass2 ) /( 1. - zepsherv ) * ztortz2 ) 199 192 zgrapoc2 = zgraztot * unass2 200 193 … … 208 201 tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zgrarsig 209 202 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + rno3 * zgrarsig 210 #if defined key_kriest 211 tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zgrapoc2 212 tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) + zgrapoc2 * xkr_dmeso 213 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zgraztotf * unass2 214 #else 215 tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zgrapoc2 - zfrac 216 tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zfrac 217 tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zgraztotf * unass2 - zfracfe 218 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zfracfe 219 220 #endif 203 221 204 zmortz2 = ztortz2 + zrespz2 222 zmortzgoc = unass2 / ( 1. - zepsherv + rtrn) * ztortz2205 zmortzgoc = unass2 / ( 1. - zepsherv ) * ztortz2 223 206 tra(ji,jj,jk,jpmes) = tra(ji,jj,jk,jpmes) - zmortz2 + zepsherv * zgraztot 224 207 tra(ji,jj,jk,jpdia) = tra(ji,jj,jk,jpdia) - zgrazd … … 242 225 #if defined key_kriest 243 226 znumpoc = trn(ji,jj,jk,jpnum) / ( trn(ji,jj,jk,jppoc) + rtrn ) 244 tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zmortzgoc - zgrazpoc - zgrazffep 245 tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) - zgrazpoc * znumpoc &246 & + zmortzgoc * xkr_dmeso - zgrazffep * znumpoc * wsbio4(ji,jj,jk) / ( wsbio3(ji,jj,jk) + rtrn )247 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + ferat3 * zmortz2 - zgrazfffp - zgrazpof 227 tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zmortzgoc - zgrazpoc - zgrazffep + zgrapoc2 228 tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) - zgrazpoc * znumpoc + zgrapoc2 * xkr_dmeso & 229 & + zmortzgoc * xkr_dmeso - zgrazffep * znumpoc * wsbio4(ji,jj,jk) / ( wsbio3(ji,jj,jk) + rtrn ) 230 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + ferat3 * zmortz2 - zgrazfffp - zgrazpof + zgraztotf * unass2 248 231 #else 249 tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) - zgrazpoc - zgrazffep 250 tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zmortzgoc - zgrazffeg 251 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) - zgrazpof - zgrazfffp 252 tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + ferat3 * zmortzgoc - zgrazfffg 232 tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) - zgrazpoc - zgrazffep + zfrac 233 tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zmortzgoc - zgrazffeg + zgrapoc2 - zfrac 234 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) - zgrazpof - zgrazfffp + zfracfe 235 tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + ferat3 * zmortzgoc - zgrazfffg + zgraztotf * unass2 - zfracfe 253 236 #endif 254 255 237 END DO 256 238 END DO -
trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zprod.F90
r3686 r3904 201 201 zconctemp2 = trn(ji,jj,jk,jpdia) - zconctemp 202 202 ! 203 zpislopead (ji,jj,jk) = pislope * ( 1.+ zadap * EXP( enano(ji,jj,jk) ) )203 zpislopead (ji,jj,jk) = pislope * ( 1.+ zadap * EXP( -0.21 * enano(ji,jj,jk) ) ) 204 204 zpislopead2(ji,jj,jk) = (pislope * zconctemp2 + pislope2 * zconctemp) / ( trn(ji,jj,jk,jpdia) + rtrn ) 205 205 -
trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsed.F90
r3751 r3904 69 69 REAL(wp) :: zwflux, zfminus, zfplus 70 70 REAL(wp) :: zlim, zfact, zfactcal 71 REAL(wp) :: zo2, zno3, zflx, zpdenit, z1pdenit 71 REAL(wp) :: zo2, zno3, zflx, zpdenit, z1pdenit, zdenitt, zolimit 72 72 REAL(wp) :: zsiloss, zcaloss, zwsbio3, zwsbio4, zwscal, zdep, zwstpoc 73 73 REAL(wp) :: ztrfer, ztrpo4, zwdust … … 135 135 ENDIF 136 136 zsidep(:,:) = 8.8 * 0.075 * dust(:,:) * rfact2 / fse3t(:,:,1) / ( 28.1 * rmtss ) 137 zpdep (:,:) = 0.1 * 0.021 * dust(:,:) * rfact2 / fse3t(:,:,1) / ( 31. * rmtss ) 137 zpdep (:,:) = 0.1 * 0.021 * dust(:,:) * rfact2 / fse3t(:,:,1) / ( 31. * rmtss ) / po4r 138 138 ! ! Iron solubilization of particles in the water column 139 139 zwdust = 0.005 / ( wdust * 55.85 * 30.42 ) / ( 45. * rday ) … … 246 246 #endif 247 247 248 ! THEN this loss is scaled at each bottom grid cell for 249 ! equilibrating the total budget of silica in the ocean. 250 ! Thus, the amount of silica lost in the sediments equal 251 ! the supply at the surface (dust+rivers) 248 ! This loss is scaled at each bottom grid cell for equilibrating the total budget of silica in the ocean. 249 ! Thus, the amount of silica lost in the sediments equal the supply at the surface (dust+rivers) 252 250 ! ------------------------------------------------------ 253 251 #if ! defined key_sed … … 302 300 303 301 #if ! defined key_sed 304 zpdenit = MIN( ( trn(ji,jj,ikt,jpno3) - rtrn ) / rdenit, zdenit2d(ji,jj) * zwstpoc * zrivno3 ) 302 ! The 0.5 factor in zpdenit and zdenitt is to avoid negative NO3 concentration after both denitrification 303 ! in the sediments and just above the sediments. Not very clever, but simpliest option. 304 zpdenit = MIN( 0.5 * ( trn(ji,jj,ikt,jpno3) - rtrn ) / rdenit, zdenit2d(ji,jj) * zwstpoc * zrivno3 ) 305 305 z1pdenit = zwstpoc * zrivno3 - zpdenit 306 trn(ji,jj,ikt,jpdoc) = trn(ji,jj,ikt,jpdoc) + z1pdenit 307 trn(ji,jj,ikt,jppo4) = trn(ji,jj,ikt,jppo4) + zpdenit 308 trn(ji,jj,ikt,jpnh4) = trn(ji,jj,ikt,jpnh4) + zpdenit 309 trn(ji,jj,ikt,jpno3) = trn(ji,jj,ikt,jpno3) - rdenit * zpdenit 310 trn(ji,jj,ikt,jptal) = trn(ji,jj,ikt,jptal) + rno3 * ( 1. + rdenit ) * zpdenit 311 trn(ji,jj,ikt,jpdic) = trn(ji,jj,ikt,jpdic) + zpdenit 306 zolimit = MIN( ( trn(ji,jj,ikt,jpoxy) - rtrn ) / o2ut, z1pdenit * ( 1.- nitrfac(ji,jj,ikt) ) ) 307 zdenitt = MIN( 0.5 * ( trn(ji,jj,ikt,jpno3) - rtrn ) / rdenit, z1pdenit * nitrfac(ji,jj,ikt) ) 308 trn(ji,jj,ikt,jpdoc) = trn(ji,jj,ikt,jpdoc) + z1pdenit - zolimit - zdenitt 309 trn(ji,jj,ikt,jppo4) = trn(ji,jj,ikt,jppo4) + zpdenit + zolimit + zdenitt 310 trn(ji,jj,ikt,jpnh4) = trn(ji,jj,ikt,jpnh4) + zpdenit + zolimit + zdenitt 311 trn(ji,jj,ikt,jpno3) = trn(ji,jj,ikt,jpno3) - rdenit * (zpdenit + zdenitt) 312 trn(ji,jj,ikt,jpoxy) = trn(ji,jj,ikt,jpoxy) - zolimit * o2ut 313 trn(ji,jj,ikt,jptal) = trn(ji,jj,ikt,jptal) + rno3 * (zolimit + (1.+rdenit) * (zpdenit + zdenitt) ) 314 trn(ji,jj,ikt,jpdic) = trn(ji,jj,ikt,jpdic) + zpdenit + zolimit + zdenitt 312 315 zwork4(ji,jj) = rdenit * zpdenit * fse3t(ji,jj,ikt) 313 316 #endif -
trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsink.F90
r3829 r3904 156 156 DO ji = 1, jpi 157 157 IF( tmask(ji,jj,jk) == 1 ) THEN 158 zwsmax = 0. 8* fse3t(ji,jj,jk) / xstep158 zwsmax = 0.5 * fse3t(ji,jj,jk) / xstep 159 159 wsbio3(ji,jj,jk) = MIN( wsbio3(ji,jj,jk), zwsmax * FLOAT( iiter1 ) ) 160 160 wsbio4(ji,jj,jk) = MIN( wsbio4(ji,jj,jk), zwsmax * FLOAT( iiter2 ) ) … … 217 217 zaggdoc = ( ( 0.369 * 0.3 * trn(ji,jj,jk,jpdoc) + 102.4 * trn(ji,jj,jk,jppoc) ) * zfact & 218 218 & + 2.4 * zstep * trn(ji,jj,jk,jppoc) ) * 0.3 * trn(ji,jj,jk,jpdoc) 219 ! zaggdoc = ( 0.83 * trn(ji,jj,jk,jpdoc) + 271. * trn(ji,jj,jk,jppoc) ) * zfact * trn(ji,jj,jk,jpdoc)220 219 ! transfer of DOC to GOC : 221 220 ! 1st term is shear aggregation 222 221 ! 2nd term is differential settling 223 222 zaggdoc2 = ( 3.53E3 * zfact + 0.1 * zstep ) * trn(ji,jj,jk,jpgoc) * 0.3 * trn(ji,jj,jk,jpdoc) 224 ! zaggdoc2 = 1.07e4 * zfact * trn(ji,jj,jk,jpgoc) * trn(ji,jj,jk,jpdoc)225 223 ! tranfer of DOC to POC due to brownian motion 226 ! zaggdoc3 = 0.02 * ( 16706. * trn(ji,jj,jk,jppoc) + 231. * trn(ji,jj,jk,jpdoc) ) * zstep * trn(ji,jj,jk,jpdoc)227 224 zaggdoc3 = ( 5095. * trn(ji,jj,jk,jppoc) + 114. * 0.3 * trn(ji,jj,jk,jpdoc) ) *zstep * 0.3 * trn(ji,jj,jk,jpdoc) 228 225
Note: See TracChangeset
for help on using the changeset viewer.