- Timestamp:
- 2013-11-04T13:54:28+01:00 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2013/dev_LOCEAN_2013/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmeso.F90
r4147 r4148 54 54 !!---------------------------------------------------------------------- 55 55 !! NEMO/TOP 3.3 , NEMO Consortium (2010) 56 !! $Id: p4zmeso.F90 3 295 2012-01-30 15:49:07Z cetlod $56 !! $Id: p4zmeso.F90 3160 2011-11-20 14:27:18Z cetlod $ 57 57 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 58 58 !!---------------------------------------------------------------------- … … 72 72 REAL(wp) :: zcompadi, zcompaph, zcompapoc, zcompaz, zcompam 73 73 REAL(wp) :: zgraze2 , zdenom, zdenom2, zncratio 74 REAL(wp) :: zfact , zstep, zfood, zfoodlim 74 REAL(wp) :: zfact , zstep, zfood, zfoodlim, zproport 75 REAL(wp) :: zmortzgoc, zfrac, zfracfe, zratio, zratio2 75 76 REAL(wp) :: zepshert, zepsherv, zgrarsig, zgraztot, zgraztotf 76 REAL(wp) :: zgrarem2, zgrafer2, zgrapoc2, zprcaca, zmortz2, z mortzgoc, zgrasrat77 REAL(wp) :: zgrarem2, zgrafer2, zgrapoc2, zprcaca, zmortz2, zgrasrat 77 78 #if defined key_kriest 78 79 REAL znumpoc … … 80 81 REAL(wp) :: zrespz2, ztortz2, zgrazd, zgrazz, zgrazpof 81 82 REAL(wp) :: zgrazn, zgrazpoc, zgraznf, zgrazf 82 REAL(wp) :: zgrazfff, zgrazffe 83 REAL(wp) :: zgrazfffp, zgrazfffg, zgrazffep, zgrazffeg 84 CHARACTER (len=25) :: charout 83 85 REAL(wp) :: zrfact2 84 86 REAL(wp), POINTER, DIMENSION(:,:,:) :: zgrazing 85 CHARACTER (len=25) :: charout 87 86 88 !!--------------------------------------------------------------------- 87 89 ! 88 90 IF( nn_timing == 1 ) CALL timing_start('p4z_meso') 89 91 ! 90 IF( ln_diatrc .AND. lk_iomput ) CALL wrk_alloc( jpi, jpj, jpk, zgrazing ) 91 ! 92 IF( ln_diatrc .AND. lk_iomput ) THEN 93 CALL wrk_alloc( jpi, jpj, jpk, zgrazing ) 94 zgrazing(:,:,:) = 0._wp 95 ENDIF 96 92 97 DO jk = 1, jpkm1 93 98 DO jj = 1, jpj … … 118 123 119 124 zfood = xprefc * zcompadi + xprefz * zcompaz + xprefp * zcompaph + xprefpoc * zcompapoc 120 zfoodlim = MAX( 0., zfood - MIN( 0.5 * zfood 125 zfoodlim = MAX( 0., zfood - MIN( 0.5 * zfood, xthresh2 ) ) 121 126 zdenom = zfoodlim / ( xkgraz2 + zfoodlim ) 122 127 zdenom2 = zdenom / ( zfood + rtrn ) … … 135 140 ! ---------------------------------- 136 141 # if ! defined key_kriest 137 zgrazffe = grazflux * zstep * wsbio4(ji,jj,jk) & 138 & * tgfunc2(ji,jj,jk) * trn(ji,jj,jk,jpgoc) * trn(ji,jj,jk,jpmes) 139 zgrazfff = zgrazffe * trn(ji,jj,jk,jpbfe) / (trn(ji,jj,jk,jpgoc) + rtrn) 142 zgrazffeg = grazflux * zstep * wsbio4(ji,jj,jk) * trn(ji,jj,jk,jpgoc) * trn(ji,jj,jk,jpmes) 143 zgrazfffg = zgrazffeg * trn(ji,jj,jk,jpbfe) / (trn(ji,jj,jk,jpgoc) + rtrn) 144 # endif 145 zgrazffep = grazflux * zstep * wsbio3(ji,jj,jk) * trn(ji,jj,jk,jppoc) * trn(ji,jj,jk,jpmes) 146 zgrazfffp = zgrazffep * trn(ji,jj,jk,jpsfe) / (trn(ji,jj,jk,jppoc) + rtrn) 147 ! 148 # if ! defined key_kriest 149 zgraztot = zgrazd + zgrazz + zgrazn + zgrazpoc + zgrazffep + zgrazffeg 150 ! Compute the proportion of filter feeders 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) 154 zratio = trn(ji,jj,jk,jpgsi) / ( trn(ji,jj,jk,jpgoc) + rtrn ) 155 zratio2 = zratio * zratio 156 zfrac = zproport * zgrazffeg * ( 0.1 + 3.9 * zratio2 / ( 1.**2 + zratio2 ) ) 157 158 zfracfe = zfrac * trn(ji,jj,jk,jpbfe) / (trn(ji,jj,jk,jpgoc) + rtrn) 159 160 zgrazffep = zproport * zgrazffep 161 zgrazffeg = zproport * zgrazffeg 162 zgrazfffp = zproport * zgrazfffp 163 zgrazfffg = zproport * zgrazfffg 164 zgraztot = zgrazd + zgrazz + zgrazn + zgrazpoc + zgrazffep + zgrazffeg 165 zgraztotf = zgrazf + zgraznf + zgrazz * ferat3 + zgrazpof + zgrazfffp + zgrazfffg 140 166 # else 141 zgrazffe = grazflux * zstep * wsbio3(ji,jj,jk) & 142 & * tgfunc2(ji,jj,jk) * trn(ji,jj,jk,jppoc) * trn(ji,jj,jk,jpmes) 143 zgrazfff = zgrazffe * trn(ji,jj,jk,jpsfe) / (trn(ji,jj,jk,jppoc) + rtrn) 167 zgraztot = zgrazd + zgrazz + zgrazn + zgrazpoc + zgrazffep 168 ! Compute the proportion of filter feeders 169 zproport = zgrazffep / ( zgraztot + rtrn ) 170 zgrazffep = zproport * zgrazffep 171 zgrazfffp = zproport * zgrazfffp 172 zgraztot = zgrazd + zgrazz + zgrazn + zgrazpoc + zgrazffep 173 zgraztotf = zgrazf + zgraznf + zgrazz * ferat3 + zgrazpof + zgrazfffp 144 174 # endif 145 !146 zgraztot = zgrazd + zgrazz + zgrazn + zgrazpoc + zgrazffe147 zgraztotf = zgrazf + zgraznf + zgrazz * ferat3 + zgrazpof + zgrazfff148 175 149 176 ! Total grazing ( grazing by microzoo is already computed in p4zmicro ) … … 159 186 zepshert = epsher2 * MIN( 1., zncratio ) 160 187 zepsherv = zepshert * MIN( 1., zgrasrat / ferat3 ) 161 zgrarem2 = zgraztot * ( 1. - zepsherv - unass2 ) + zrespz2 &162 & + ( 1. - zepsherv - unass2 ) /( 1. - zepsherv + rtrn) * ztortz2163 zgrafer2 = zgraztot * MAX( 0. , ( 1. - unass2 ) * zgrasrat - ferat3 * zepsherv ) &164 & + 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 ) 165 192 zgrapoc2 = zgraztot * unass2 166 193 … … 174 201 tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zgrarsig 175 202 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + rno3 * zgrarsig 176 #if defined key_kriest 177 tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zgrapoc2 178 tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) + zgrapoc2 * xkr_dmeso 179 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zgraztotf * unass2 180 #else 181 tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zgrapoc2 182 tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zgraztotf * unass2 183 #endif 203 184 204 zmortz2 = ztortz2 + zrespz2 185 zmortzgoc = unass2 / ( 1. - zepsherv + rtrn) * ztortz2205 zmortzgoc = unass2 / ( 1. - zepsherv ) * ztortz2 186 206 tra(ji,jj,jk,jpmes) = tra(ji,jj,jk,jpmes) - zmortz2 + zepsherv * zgraztot 187 207 tra(ji,jj,jk,jpdia) = tra(ji,jj,jk,jpdia) - zgrazd … … 205 225 #if defined key_kriest 206 226 znumpoc = trn(ji,jj,jk,jpnum) / ( trn(ji,jj,jk,jppoc) + rtrn ) 207 tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zmortzgoc - zgrazpoc - zgrazffe 208 tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) - zgrazpoc * znumpoc &209 & + zmortzgoc * xkr_dmeso - zgrazffe* znumpoc * wsbio4(ji,jj,jk) / ( wsbio3(ji,jj,jk) + rtrn )210 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + ferat3 * zmortz2 - zgrazfff - zgrazpof227 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 211 231 #else 212 tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) - zgrazpoc 213 tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zmortzgoc - zgrazffe 214 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) - zgrazpof 215 tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + ferat3 * zmortzgoc - zgrazfff 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 216 236 #endif 217 218 237 END DO 219 238 END DO
Note: See TracChangeset
for help on using the changeset viewer.