Changeset 10368 for NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/TOP/PISCES/P4Z/p4zmicro.F90
- Timestamp:
- 2018-12-03T12:45:01+01:00 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/TOP/PISCES/P4Z/p4zmicro.F90
r10345 r10368 26 26 27 27 REAL(wp), PUBLIC :: part !: part of calcite not dissolved in microzoo guts 28 REAL(wp), PUBLIC :: xpref 2c!: microzoo preference for POC29 REAL(wp), PUBLIC :: xpref 2p!: microzoo preference for nanophyto30 REAL(wp), PUBLIC :: xpref 2d!: microzoo preference for diatoms28 REAL(wp), PUBLIC :: xprefc !: microzoo preference for POC 29 REAL(wp), PUBLIC :: xprefn !: microzoo preference for nanophyto 30 REAL(wp), PUBLIC :: xprefd !: microzoo preference for diatoms 31 31 REAL(wp), PUBLIC :: xthreshdia !: diatoms feeding threshold for microzooplankton 32 32 REAL(wp), PUBLIC :: xthreshphy !: nanophyto threshold for microzooplankton … … 36 36 REAL(wp), PUBLIC :: mzrat !: microzooplankton mortality rate 37 37 REAL(wp), PUBLIC :: grazrat !: maximal microzoo grazing rate 38 REAL(wp), PUBLIC :: xkgraz !: non assimilated fraction of P by microzoo39 REAL(wp), PUBLIC :: unass !: Efficicency of microzoo growth38 REAL(wp), PUBLIC :: xkgraz !: Half-saturation constant of assimilation 39 REAL(wp), PUBLIC :: unass !: Non-assimilated part of food 40 40 REAL(wp), PUBLIC :: sigma1 !: Fraction of microzoo excretion as DOM 41 REAL(wp), PUBLIC :: epsher !: half sturation constant for grazing 1 41 REAL(wp), PUBLIC :: epsher !: growth efficiency for grazing 1 42 REAL(wp), PUBLIC :: epshermin !: minimum growth efficiency for grazing 1 42 43 43 44 !!---------------------------------------------------------------------- … … 62 63 REAL(wp) :: zcompadi, zcompaz , zcompaph, zcompapoc 63 64 REAL(wp) :: zgraze , zdenom, zdenom2 64 REAL(wp) :: zfact , zfood, zfoodlim 65 REAL(wp) :: zepsher t, zepsherv, zgrarsig, zgraztot, zgraztotn, zgraztotf65 REAL(wp) :: zfact , zfood, zfoodlim, zbeta 66 REAL(wp) :: zepsherf, zepshert, zepsherv, zgrarsig, zgraztotc, zgraztotn, zgraztotf 66 67 REAL(wp) :: zgrarem, zgrafer, zgrapoc, zprcaca, zmortz 67 68 REAL(wp) :: zrespz, ztortz, zgrasrat, zgrasratn 68 69 REAL(wp) :: zgrazp, zgrazm, zgrazsd 69 70 REAL(wp) :: zgrazmf, zgrazsf, zgrazpf 70 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zgrazing 71 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: zw3d 71 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zgrazing, zfezoo 72 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: zw3d, zzligprod 72 73 CHARACTER (len=25) :: charout 73 74 !!--------------------------------------------------------------------- 74 75 ! 75 76 IF( ln_timing ) CALL timing_start('p4z_micro') 77 ! 78 IF (ln_ligand) THEN 79 ALLOCATE( zzligprod(jpi,jpj,jpk) ) 80 zzligprod(:,:,:) = 0._wp 81 ENDIF 76 82 ! 77 83 DO jk = 1, jpkm1 … … 97 103 ! Microzooplankton grazing 98 104 ! ------------------------ 99 zfood = xpref 2p * zcompaph + xpref2c * zcompapoc + xpref2d * zcompadi105 zfood = xprefn * zcompaph + xprefc * zcompapoc + xprefd * zcompadi 100 106 zfoodlim = MAX( 0. , zfood - min(xthresh,0.5*zfood) ) 101 107 zdenom = zfoodlim / ( xkgraz + zfoodlim ) … … 103 109 zgraze = grazrat * xstep * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jpzoo) * (1. - nitrfac(ji,jj,jk)) 104 110 105 zgrazp = zgraze * xpref 2p* zcompaph * zdenom2106 zgrazm = zgraze * xpref 2c * zcompapoc * zdenom2107 zgrazsd = zgraze * xpref 2d * zcompadi * zdenom2111 zgrazp = zgraze * xprefn * zcompaph * zdenom2 112 zgrazm = zgraze * xprefc * zcompapoc * zdenom2 113 zgrazsd = zgraze * xprefd * zcompadi * zdenom2 108 114 109 115 zgrazpf = zgrazp * trb(ji,jj,jk,jpnfe) / (trb(ji,jj,jk,jpphy) + rtrn) … … 111 117 zgrazsf = zgrazsd * trb(ji,jj,jk,jpdfe) / (trb(ji,jj,jk,jpdia) + rtrn) 112 118 ! 113 zgraztot 119 zgraztotc = zgrazp + zgrazm + zgrazsd 114 120 zgraztotf = zgrazpf + zgrazsf + zgrazmf 115 121 zgraztotn = zgrazp * quotan(ji,jj,jk) + zgrazm + zgrazsd * quotad(ji,jj,jk) 116 122 117 123 ! Grazing by microzooplankton 118 zgrazing(ji,jj,jk) = zgraztot 124 zgrazing(ji,jj,jk) = zgraztotc 119 125 120 126 ! Various remineralization and excretion terms 121 127 ! -------------------------------------------- 122 zgrasrat = ( zgraztotf + rtrn ) / ( zgraztot + rtrn )123 zgrasratn = ( zgraztotn + rtrn ) / ( zgraztot + rtrn )128 zgrasrat = ( zgraztotf + rtrn ) / ( zgraztotc + rtrn ) 129 zgrasratn = ( zgraztotn + rtrn ) / ( zgraztotc + rtrn ) 124 130 zepshert = MIN( 1., zgrasratn, zgrasrat / ferat3) 125 zepsherv = zepshert * MIN( epsher, (1. - unass) * zgrasrat / ferat3, (1. - unass) * zgrasratn ) 126 zgrafer = zgraztot * MAX( 0. , ( 1. - unass ) * zgrasrat - ferat3 * zepsherv ) 127 zgrarem = zgraztot * ( 1. - zepsherv - unass ) 128 zgrapoc = zgraztot * unass 131 zbeta = MAX(0., (epsher - epshermin) ) 132 zepsherf = epshermin + zbeta / ( 1.0 + 0.04E6 * 12. * zfood * zbeta ) 133 zepsherv = zepsherf * zepshert 134 135 zgrafer = zgraztotc * MAX( 0. , ( 1. - unass ) * zgrasrat - ferat3 * zepsherv ) 136 zgrarem = zgraztotc * ( 1. - zepsherv - unass ) 137 zgrapoc = zgraztotc * unass 129 138 130 139 ! Update of the TRA arrays … … 135 144 tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) + zgrarem - zgrarsig 136 145 ! 137 IF( ln_ligand ) tra(ji,jj,jk,jplgw) = tra(ji,jj,jk,jplgw) + (zgrarem - zgrarsig) * ldocz 146 IF( ln_ligand ) THEN 147 tra(ji,jj,jk,jplgw) = tra(ji,jj,jk,jplgw) + (zgrarem - zgrarsig) * ldocz 148 zzligprod(ji,jj,jk) = (zgrarem - zgrarsig) * ldocz 149 ENDIF 138 150 ! 139 151 tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - o2ut * zgrarsig 140 152 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + zgrafer 153 zfezoo(ji,jj,jk) = zgrafer 141 154 tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zgrapoc 142 prodpoc(ji,jj,jk) = prodpoc(ji,jj,jk) + zgrapoc155 prodpoc(ji,jj,jk) = prodpoc(ji,jj,jk) + zgrapoc 143 156 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zgraztotf * unass 144 157 tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zgrarsig … … 147 160 ! -------------------------------------------------------------------- 148 161 zmortz = ztortz + zrespz 149 tra(ji,jj,jk,jpzoo) = tra(ji,jj,jk,jpzoo) - zmortz + zepsherv * zgraztot 162 tra(ji,jj,jk,jpzoo) = tra(ji,jj,jk,jpzoo) - zmortz + zepsherv * zgraztotc 150 163 tra(ji,jj,jk,jpphy) = tra(ji,jj,jk,jpphy) - zgrazp 151 164 tra(ji,jj,jk,jpdia) = tra(ji,jj,jk,jpdia) - zgrazsd … … 180 193 CALL iom_put( "GRAZ1", zw3d ) 181 194 ENDIF 195 IF( iom_use( "FEZOO" ) ) THEN 196 zw3d(:,:,:) = zfezoo(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) ! 197 CALL iom_put( "FEZOO", zw3d ) 198 ENDIF 199 IF( iom_use( "LPRODZ" ) .AND. ln_ligand ) THEN 200 zw3d(:,:,:) = zzligprod(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) 201 CALL iom_put( "LPRODZ" , zw3d ) 202 ENDIF 182 203 DEALLOCATE( zw3d ) 183 204 ENDIF … … 209 230 INTEGER :: ios ! Local integer 210 231 ! 211 NAMELIST/namp4zzoo/ part, grazrat, resrat, mzrat, xpref 2c, xpref2p, &212 & xpref 2d, xthreshdia, xthreshphy, xthreshpoc, &213 & xthresh, xkgraz, epsher, sigma1, unass232 NAMELIST/namp4zzoo/ part, grazrat, resrat, mzrat, xprefn, xprefc, & 233 & xprefd, xthreshdia, xthreshphy, xthreshpoc, & 234 & xthresh, xkgraz, epsher, epshermin, sigma1, unass 214 235 !!---------------------------------------------------------------------- 215 236 ! … … 231 252 WRITE(numout,*) ' Namelist : namp4zzoo' 232 253 WRITE(numout,*) ' part of calcite not dissolved in microzoo guts part =', part 233 WRITE(numout,*) ' microzoo preference for POC xpref 2c =', xpref2c234 WRITE(numout,*) ' microzoo preference for nano xpref 2p =', xpref2p235 WRITE(numout,*) ' microzoo preference for diatoms xpref 2d =', xpref2d254 WRITE(numout,*) ' microzoo preference for POC xprefc =', xprefc 255 WRITE(numout,*) ' microzoo preference for nano xprefn =', xprefn 256 WRITE(numout,*) ' microzoo preference for diatoms xprefd =', xprefd 236 257 WRITE(numout,*) ' diatoms feeding threshold for microzoo xthreshdia =', xthreshdia 237 258 WRITE(numout,*) ' nanophyto feeding threshold for microzoo xthreshphy =', xthreshphy … … 243 264 WRITE(numout,*) ' non assimilated fraction of P by microzoo unass =', unass 244 265 WRITE(numout,*) ' Efficicency of microzoo growth epsher =', epsher 266 WRITE(numout,*) ' Minimum efficicency of microzoo growth epshermin =', epshermin 245 267 WRITE(numout,*) ' Fraction of microzoo excretion as DOM sigma1 =', sigma1 246 268 WRITE(numout,*) ' half sturation constant for grazing 1 xkgraz =', xkgraz
Note: See TracChangeset
for help on using the changeset viewer.