- Timestamp:
- 2016-11-30T17:56:53+01:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2016/dev_merge_2016/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmicro.F90
r5836 r7403 8 8 !! 3.4 ! 2011-06 (O. Aumont, C. Ethe) Quota model for iron 9 9 !!---------------------------------------------------------------------- 10 #if defined key_pisces11 !!----------------------------------------------------------------------12 !! 'key_pisces' PISCES bio-model13 !!----------------------------------------------------------------------14 10 !! p4z_micro : Compute the sources/sinks for microzooplankton 15 11 !! p4z_micro_init : Initialize and read the appropriate namelist … … 19 15 USE sms_pisces ! PISCES Source Minus Sink variables 20 16 USE p4zlim ! Co-limitations 21 USE p4zsink ! vertical flux of particulate matter due to sinking22 USE p4zint ! interpolation and computation of various fields23 17 USE p4zprod ! production 24 18 USE iom ! I/O manager … … 71 65 REAL(wp) :: zcompadi, zcompaz , zcompaph, zcompapoc 72 66 REAL(wp) :: zgraze , zdenom, zdenom2 73 REAL(wp) :: zfact , z step, zfood, zfoodlim67 REAL(wp) :: zfact , zfood, zfoodlim 74 68 REAL(wp) :: zepshert, zepsherv, zgrarsig, zgraztot, zgraztotn, zgraztotf 75 69 REAL(wp) :: zgrarem, zgrafer, zgrapoc, zprcaca, zmortz … … 83 77 IF( nn_timing == 1 ) CALL timing_start('p4z_micro') 84 78 ! 85 IF( lk_iomput )CALL wrk_alloc( jpi, jpj, jpk, zgrazing )79 CALL wrk_alloc( jpi, jpj, jpk, zgrazing ) 86 80 ! 87 81 DO jk = 1, jpkm1 … … 89 83 DO ji = 1, jpi 90 84 zcompaz = MAX( ( trb(ji,jj,jk,jpzoo) - 1.e-9 ), 0.e0 ) 91 zstep = xstep 92 # if defined key_degrad 93 zstep = zstep * facvol(ji,jj,jk) 94 # endif 95 zfact = zstep * tgfunc2(ji,jj,jk) * zcompaz 85 zfact = xstep * tgfunc2(ji,jj,jk) * zcompaz 96 86 97 87 ! Respiration rates of both zooplankton … … 115 105 zdenom = zfoodlim / ( xkgraz + zfoodlim ) 116 106 zdenom2 = zdenom / ( zfood + rtrn ) 117 zgraze = grazrat * zstep * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jpzoo)107 zgraze = grazrat * xstep * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jpzoo) 118 108 119 109 zgrazp = zgraze * xpref2p * zcompaph * zdenom2 … … 130 120 131 121 ! Grazing by microzooplankton 132 IF( ln_diatrc .AND. lk_iomput )zgrazing(ji,jj,jk) = zgraztot122 zgrazing(ji,jj,jk) = zgraztot 133 123 134 124 ! Various remineralization and excretion terms … … 148 138 tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + zgrarsig 149 139 tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) + zgrarem - zgrarsig 140 ! 141 IF( ln_ligand ) tra(ji,jj,jk,jplgw) = tra(ji,jj,jk,jplgw) + (zgrarem - zgrarsig) * ldocz 142 ! 150 143 tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - o2ut * zgrarsig 151 144 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + zgrafer 152 145 tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zgrapoc 146 prodpoc(ji,jj,jk) = prodpoc(ji,jj,jk) + zgrapoc 153 147 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zgraztotf * unass 154 148 tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zgrarsig 155 149 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + rno3 * zgrarsig 156 #if defined key_kriest157 tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) + zgrapoc * xkr_dmicro158 #endif159 150 ! Update the arrays TRA which contain the biological sources and sinks 160 151 ! -------------------------------------------------------------------- … … 170 161 tra(ji,jj,jk,jpdfe) = tra(ji,jj,jk,jpdfe) - zgrazsf 171 162 tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zmortz - zgrazm 163 prodpoc(ji,jj,jk) = prodpoc(ji,jj,jk) + zmortz 164 conspoc(ji,jj,jk) = conspoc(ji,jj,jk) - zgrazm 172 165 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + ferat3 * zmortz - zgrazmf 173 166 ! … … 180 173 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - 2. * zprcaca 181 174 tra(ji,jj,jk,jpcal) = tra(ji,jj,jk,jpcal) + zprcaca 182 #if defined key_kriest183 tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) + zmortz * xkr_dmicro &184 - zgrazm * trb(ji,jj,jk,jpnum) / ( trb(ji,jj,jk,jppoc) + rtrn )185 #endif186 175 END DO 187 176 END DO 188 177 END DO 189 178 ! 190 IF( lk_iomput .AND. knt == nrdttrc ) THEN 191 CALL wrk_alloc( jpi, jpj, jpk, zw3d ) 192 IF( iom_use( "GRAZ1" ) ) THEN 193 zw3d(:,:,:) = zgrazing(:,:,:) * 1.e+3 * rfact2r * tmask(:,:,:) ! Total grazing of phyto by zooplankton 194 CALL iom_put( "GRAZ1", zw3d ) 179 IF( lk_iomput ) THEN 180 IF( knt == nrdttrc ) THEN 181 CALL wrk_alloc( jpi, jpj, jpk, zw3d ) 182 IF( iom_use( "GRAZ1" ) ) THEN 183 zw3d(:,:,:) = zgrazing(:,:,:) * 1.e+3 * rfact2r * tmask(:,:,:) ! Total grazing of phyto by zooplankton 184 CALL iom_put( "GRAZ1", zw3d ) 185 ENDIF 186 CALL wrk_dealloc( jpi, jpj, jpk, zw3d ) 195 187 ENDIF 196 CALL wrk_dealloc( jpi, jpj, jpk, zw3d )197 188 ENDIF 198 189 ! … … 203 194 ENDIF 204 195 ! 205 IF( lk_iomput )CALL wrk_dealloc( jpi, jpj, jpk, zgrazing )196 CALL wrk_dealloc( jpi, jpj, jpk, zgrazing ) 206 197 ! 207 198 IF( nn_timing == 1 ) CALL timing_stop('p4z_micro') … … 224 215 !!---------------------------------------------------------------------- 225 216 226 NAMELIST/namp iszoo/ part, grazrat, resrat, mzrat, xpref2c, xpref2p, &217 NAMELIST/namp4zzoo/ part, grazrat, resrat, mzrat, xpref2c, xpref2p, & 227 218 & xpref2d, xthreshdia, xthreshphy, xthreshpoc, & 228 219 & xthresh, xkgraz, epsher, sigma1, unass … … 230 221 231 222 REWIND( numnatp_ref ) ! Namelist nampiszoo in reference namelist : Pisces microzooplankton 232 READ ( numnatp_ref, namp iszoo, IOSTAT = ios, ERR = 901)233 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp iszoo in reference namelist', lwp )223 READ ( numnatp_ref, namp4zzoo, IOSTAT = ios, ERR = 901) 224 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp4zzoo in reference namelist', lwp ) 234 225 235 226 REWIND( numnatp_cfg ) ! Namelist nampiszoo in configuration namelist : Pisces microzooplankton 236 READ ( numnatp_cfg, namp iszoo, IOSTAT = ios, ERR = 902 )237 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp iszoo in configuration namelist', lwp )238 IF(lwm) WRITE ( numonp, namp iszoo )227 READ ( numnatp_cfg, namp4zzoo, IOSTAT = ios, ERR = 902 ) 228 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp4zzoo in configuration namelist', lwp ) 229 IF(lwm) WRITE ( numonp, namp4zzoo ) 239 230 240 231 IF(lwp) THEN ! control print 241 232 WRITE(numout,*) ' ' 242 WRITE(numout,*) ' Namelist parameters for microzooplankton, namp iszoo'233 WRITE(numout,*) ' Namelist parameters for microzooplankton, namp4zzoo' 243 234 WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' 244 235 WRITE(numout,*) ' part of calcite not dissolved in microzoo guts part =', part … … 261 252 END SUBROUTINE p4z_micro_init 262 253 263 #else264 !!======================================================================265 !! Dummy module : No PISCES bio-model266 !!======================================================================267 CONTAINS268 SUBROUTINE p4z_micro ! Empty routine269 END SUBROUTINE p4z_micro270 #endif271 272 254 !!====================================================================== 273 255 END MODULE p4zmicro
Note: See TracChangeset
for help on using the changeset viewer.