Changeset 14276 for NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p5zmeso.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/p5zmeso.F90
r13234 r14276 88 88 REAL(wp) :: zepsherf, zepshert, zepsherq, zepsherv, zrespirc, zrespirn, zrespirp, zbasresb, zbasresi 89 89 REAL(wp) :: zgraztotc, zgraztotn, zgraztotp, zgraztotf, zbasresn, zbasresp, zbasresf 90 REAL(wp) :: zgra tmp, zgradoct, zgradont, zgrareft, zgradopt90 REAL(wp) :: zgradoct, zgradont, zgrareft, zgradopt 91 91 REAL(wp) :: zprcaca, zmortz, zexcess 92 92 REAL(wp) :: zbeta, zrespz, ztortz, zgrasratp, zgrasratn, zgrasratf … … 104 104 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zgrarep, zgraren, zgrapon, zgrapop 105 105 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zgradoc, zgradon, zgradop 106 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zgramigrem, zgramigref, zgramigpoc, zgramigpof , zstrn106 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zgramigrem, zgramigref, zgramigpoc, zgramigpof 107 107 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zgramigrep, zgramigren, zgramigpop, zgramigpon 108 108 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zgramigdoc, zgramigdop, zgramigdon … … 190 190 ! to avoid starvation. 191 191 ! ---------------------------------------------------------- 192 zsigma = 1.0 - zdenom** 2/(0.05**2+zdenom**2)192 zsigma = 1.0 - zdenom**3/(0.1**3+zdenom**3) 193 193 zsigma = xsigma2 + xsigma2del * zsigma 194 194 ! Nanophytoplankton and diatoms are the only preys considered … … 267 267 268 268 zgraztotc = zgrazdc + zgrazz + zgraznc + zgrazm + zgrazpoc + zgrazffep + zgrazffeg 269 zgraztotf = zgrazdf + zgraznf + ( zgrazz + zgrazm ) * ferat3+ zgrazpof &269 zgraztotf = zgrazdf + zgraznf + zgrazz * feratz + zgrazm * feratm + zgrazpof & 270 270 & + zgrazfffp + zgrazfffg 271 271 zgraztotn = zgrazdn + (zgrazm + zgrazz) * no3rat3 + zgraznn + zgrazpon & … … 291 291 ! Fulton, 2012) 292 292 ! ----------------------------------------------------------------------------------- 293 zepshert = MIN( 1., zgrasratn/ no3rat3, zgrasratp/ po4rat3, zgrasratf / ferat 3)293 zepshert = MIN( 1., zgrasratn/ no3rat3, zgrasratp/ po4rat3, zgrasratf / feratm) 294 294 zbeta = MAX(0., (epsher2 - epsher2min) ) 295 295 zepsherf = epsher2min + zbeta / ( 1.0 + 0.04E6 * 12. * zfood * zbeta ) … … 312 312 zexcess = ( zgrasratp/ po4rat3 - zepshert ) / ( 1.0 - zepshert + rtrn) 313 313 zbasresp = zbasresi * zexcess * zgrasratp 314 zexcess = ( zgrasratf/ ferat 3- zepshert ) / ( 1.0 - zepshert + rtrn)314 zexcess = ( zgrasratf/ feratm - zepshert ) / ( 1.0 - zepshert + rtrn) 315 315 zbasresf = zbasresi * zexcess * zgrasratf 316 316 … … 320 320 zgradont = (1. - unass2n) * zgraztotn - zepsherv * no3rat3 * zgraztotc - zbasresn 321 321 zgradopt = (1. - unass2p) * zgraztotp - zepsherv * po4rat3 * zgraztotc - zbasresp 322 zgrareft = (1. - unass2c) * zgraztotf - zepsherv * ferat 3* zgraztotc - zbasresf323 ztmp1 = ( 1. - epsher2 - unass2c ) /( 1. - 0.8 *epsher2 ) * ztortz322 zgrareft = (1. - unass2c) * zgraztotf - zepsherv * feratm * zgraztotc - zbasresf 323 ztmp1 = (1. - epsher2 - unass2c) /( 1. - epsher2 ) * ztortz 324 324 zgradoc(ji,jj,jk) = (zgradoct + ztmp1) * ssigma2 325 325 zgradon(ji,jj,jk) = (zgradont + no3rat3 * ztmp1) * ssigma2 326 326 zgradop(ji,jj,jk) = (zgradopt + po4rat3 * ztmp1) * ssigma2 327 zgratmp = 0.2 * epsher2 /( 1. - 0.8 * epsher2 ) * ztortz328 327 329 328 ! Since only semilabile DOM is represented in PISCES … … 331 330 ! as dissolved inorganic compounds (ssigma2) 332 331 ! -------------------------------------------------- 333 zgrarem(ji,jj,jk) = zgratmp +( zgradoct + ztmp1 ) * (1.0 - ssigma2)334 zgraren(ji,jj,jk) = no3rat3 * zgratmp +( zgradont + no3rat3 * ztmp1 ) * (1.0 - ssigma2)335 zgrarep(ji,jj,jk) = po4rat3 * zgratmp +( zgradopt + po4rat3 * ztmp1 ) * (1.0 - ssigma2)336 zgraref(ji,jj,jk) = zgrareft + ferat 3 * ( ztmp1 + zgratmp )332 zgrarem(ji,jj,jk) = ( zgradoct + ztmp1 ) * (1.0 - ssigma2) 333 zgraren(ji,jj,jk) = ( zgradont + no3rat3 * ztmp1 ) * (1.0 - ssigma2) 334 zgrarep(ji,jj,jk) = ( zgradopt + po4rat3 * ztmp1 ) * (1.0 - ssigma2) 335 zgraref(ji,jj,jk) = zgrareft + feratm * ztmp1 337 336 338 337 ! Defecation as a result of non assimilated products 339 338 ! -------------------------------------------------- 340 zgrapoc(ji,jj,jk) = zgraztotc * unass2c + unass2c / ( 1. - 0.8 *epsher2 ) * ztortz341 zgrapon(ji,jj,jk) = zgraztotn * unass2n + no3rat3 * unass2n / ( 1. - 0.8 *epsher2 ) * ztortz342 zgrapop(ji,jj,jk) = zgraztotp * unass2p + po4rat3 * unass2p / ( 1. - 0.8 *epsher2 ) * ztortz343 zgrapof(ji,jj,jk) = zgraztotf * unass2c + ferat 3 * unass2c / ( 1. - 0.8 *epsher2 ) * ztortz339 zgrapoc(ji,jj,jk) = zgraztotc * unass2c + unass2c / ( 1. - epsher2 ) * ztortz 340 zgrapon(ji,jj,jk) = zgraztotn * unass2n + no3rat3 * unass2n / ( 1. - epsher2 ) * ztortz 341 zgrapop(ji,jj,jk) = zgraztotp * unass2p + po4rat3 * unass2p / ( 1. - epsher2 ) * ztortz 342 zgrapof(ji,jj,jk) = zgraztotf * unass2c + feratm * unass2c / ( 1. - epsher2 ) * ztortz 344 343 345 344 ! Addition of respiration to the release of inorganic nutrients … … 348 347 zgraren(ji,jj,jk) = zgraren(ji,jj,jk) + zbasresn + zrespirc * no3rat3 349 348 zgrarep(ji,jj,jk) = zgrarep(ji,jj,jk) + zbasresp + zrespirc * po4rat3 350 zgraref(ji,jj,jk) = zgraref(ji,jj,jk) + zbasresf + zrespirc * ferat 3349 zgraref(ji,jj,jk) = zgraref(ji,jj,jk) + zbasresf + zrespirc * feratm 351 350 352 351 ! Update the arrays TRA which contain the biological sources and … … 404 403 ALLOCATE( zgramigrep(jpi,jpj), zgramigren(jpi,jpj), zgramigpop(jpi,jpj), zgramigpon(jpi,jpj) ) 405 404 ALLOCATE( zgramigdoc(jpi,jpj), zgramigdon(jpi,jpj), zgramigdop(jpi,jpj) ) 406 ALLOCATE( zstrn(jpi,jpj) )407 405 zgramigrem(:,:) = 0.0 ; zgramigref(:,:) = 0.0 408 406 zgramigrep(:,:) = 0.0 ; zgramigren(:,:) = 0.0 … … 411 409 zgramigdoc(:,:) = 0.0 ; zgramigdon(:,:) = 0.0 412 410 zgramigdop(:,:) = 0.0 413 414 ! compute the day length depending on latitude and the day415 zrum = REAL( nday_year - 80, wp ) / REAL( nyear_len(1), wp )416 zcodel = ASIN( SIN( zrum * rpi * 2._wp ) * SIN( rad * 23.5_wp ) )417 418 ! day length in hours419 zstrn(:,:) = 0.420 DO jj = 1, jpj421 DO ji = 1, jpi422 zargu = TAN( zcodel ) * TAN( gphit(ji,jj) * rad )423 zargu = MAX( -1., MIN( 1., zargu ) )424 zstrn(ji,jj) = MAX( 0.0, 24. - 2. * ACOS( zargu ) / rad / 15. )425 zstrn(ji,jj) = MIN(0.75, MAX( 0.25, zstrn(ji,jj) / 24.) )426 END DO427 END DO428 429 411 430 412 ! Compute the amount of materials that will go into vertical migration … … 435 417 DO jj = 1, jpj 436 418 DO ji = 1, jpi 437 zmigreltime = (1. - zstrn(ji,jj))419 zmigreltime = (1. - strn(ji,jj)) 438 420 IF ( gdept_n(ji,jj,jk) <= heup(ji,jj) ) THEN 439 421 zgramigrem(ji,jj) = zgramigrem(ji,jj) + xfracmig * zgrarem(ji,jj,jk) * (1. - zmigreltime ) & … … 441 423 zgramigrep(ji,jj) = zgramigrep(ji,jj) + xfracmig * zgrarep(ji,jj,jk) * (1. - zmigreltime ) & 442 424 & * e3t_n(ji,jj,jk) * tmask(ji,jj,jk) 443 zgramigre p(ji,jj) = zgramigren(ji,jj) + xfracmig * zgrarep(ji,jj,jk) * (1. - zmigreltime ) &425 zgramigren(ji,jj) = zgramigren(ji,jj) + xfracmig * zgraren(ji,jj,jk) * (1. - zmigreltime ) & 444 426 & * e3t_n(ji,jj,jk) * tmask(ji,jj,jk) 445 427 zgramigref(ji,jj) = zgramigref(ji,jj) + xfracmig * zgraref(ji,jj,jk) * (1. - zmigreltime ) & … … 503 485 DEALLOCATE( zgramigrep, zgramigren, zgramigpop, zgramigpon ) 504 486 DEALLOCATE( zgramigdoc, zgramigdon, zgramigdop ) 505 DEALLOCATE( zstrn )506 487 ! End of the ln_dvm_meso part 507 488 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.