- Timestamp:
- 2016-11-03T16:41:10+01:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P5Z/p5zrem.F90
r6841 r7180 75 75 REAL(wp) :: zremik, zremikc, zremikn, zremikp, zsiremin 76 76 REAL(wp) :: zsatur, zsatur2, znusil, znusil2, zdep, zdepmin, zfactdep 77 REAL(wp) :: zbactfer, zolimit 77 REAL(wp) :: zbactfer, zolimit, zonitr, zstep, zrfact2 78 78 REAL(wp) :: zosil, ztem, zdenitnh4, zolimic, zolimin, zolimip, zdenitrn, zdenitrp 79 REAL(wp) :: zonitr, zstep, zrfact280 79 CHARACTER (len=25) :: charout 81 80 REAL(wp), POINTER, DIMENSION(:,: ) :: ztempbac 82 REAL(wp), POINTER, DIMENSION(:,:,:) :: zdepbac, zwork1, zdepprod 81 REAL(wp), POINTER, DIMENSION(:,:,:) :: zdepbac, zwork1, zdepprod, zfacsi, zfacsib 83 82 !!--------------------------------------------------------------------- 84 83 ! … … 87 86 ! Allocate temporary workspace 88 87 CALL wrk_alloc( jpi, jpj, ztempbac ) 89 CALL wrk_alloc( jpi, jpj, jpk, zdepbac, zdepprod, zwork1 )88 CALL wrk_alloc( jpi, jpj, jpk, zdepbac, zdepprod, zwork1, zfacsi, zfacsib ) 90 89 91 90 ! Initialisation of temprary arrys 92 91 zdepprod(:,:,:) = 1._wp 93 92 ztempbac(:,:) = 0._wp 93 zfacsib(:,:,:) = xsilab / ( 1.0 - xsilab ) 94 zfacsi(:,:,:) = xsilab 94 95 95 96 ! Computation of the mean phytoplankton concentration as … … 236 237 ENDIF 237 238 239 ! Initialization of the array which contains the labile fraction 240 ! of bSi. Set to a constant in the upper ocean 241 ! --------------------------------------------------------------- 242 238 243 DO jk = 1, jpkm1 239 244 DO jj = 1, jpj … … 243 248 zstep = zstep * facvol(ji,jj,jk) 244 249 # endif 250 zdep = MAX( hmld(ji,jj), heup_01(ji,jj) ) 251 zsatur = MAX( rtrn, ( sio3eq(ji,jj,jk) - trb(ji,jj,jk,jpsil) ) / ( sio3eq(ji,jj,jk) + rtrn ) ) 252 zsatur2 = ( 1. + tsn(ji,jj,jk,jp_tem) / 400.)**37 253 znusil = 0.225 * ( 1. + tsn(ji,jj,jk,jp_tem) / 15.) * zsatur + 0.775 * zsatur2 * zsatur**9.25 254 245 255 ! Remineralization rate of BSi depedant on T and saturation 246 256 ! --------------------------------------------------------- 247 zsatur = ( sio3eq(ji,jj,jk) - trb(ji,jj,jk,jpsil) ) / ( sio3eq(ji,jj,jk) + rtrn ) 248 zsatur = MAX( rtrn, zsatur ) 249 zsatur2 = ( 1. + tsn(ji,jj,jk,jp_tem) / 400.)**37 250 znusil = 0.225 * ( 1. + tsn(ji,jj,jk,jp_tem) / 15.) * zsatur + 0.775 * zsatur2 * zsatur**9.25 251 znusil2 = 0.225 * ( 1. + tsn(ji,jj,1,jp_tem) / 15.) + 0.775 * zsatur2 252 253 ! Two classes of BSi are considered : a labile fraction and 254 ! a more refractory one. The ratio between both fractions is 255 ! constant and specified in the namelist. 256 ! ---------------------------------------------------------- 257 zdep = MAX( hmld(ji,jj), heup_01(ji,jj) ) 258 zdep = MAX( 0., fsdept(ji,jj,jk) - zdep ) 259 ztem = MAX( tsn(ji,jj,1,jp_tem), 0. ) 260 zfactdep = xsilab * EXP(-( xsiremlab - xsirem ) * znusil2 * zdep / wsbio2 ) * ztem / ( ztem + 10. ) 261 zsiremin = ( xsiremlab * zfactdep + xsirem * ( 1. - zfactdep ) ) * zstep * znusil 257 IF ( fsdept(ji,jj,jk) > zdep ) THEN 258 zfacsib(ji,jj,jk) = zfacsib(ji,jj,jk-1) * EXP( -0.5 * ( xsiremlab - xsirem ) & 259 & * znusil * fse3t(ji,jj,jk) / wsbio4(ji,jj,jk) ) 260 zfacsi(ji,jj,jk) = zfacsib(ji,jj,jk) / ( 1.0 + zfacsib(ji,jj,jk) ) 261 zfacsib(ji,jj,jk) = zfacsib(ji,jj,jk) * EXP( -0.5 * ( xsiremlab - xsirem ) & 262 & * znusil * fse3t(ji,jj,jk) / wsbio4(ji,jj,jk) ) 263 ENDIF 264 zsiremin = ( xsiremlab * zfacsi(ji,jj,jk) + xsirem * ( 1. - zfacsi(ji,jj,jk) ) ) * zstep * znusil 262 265 zosil = zsiremin * trb(ji,jj,jk,jpgsi) 263 266 ! 264 267 tra(ji,jj,jk,jpgsi) = tra(ji,jj,jk,jpgsi) - zosil 265 268 tra(ji,jj,jk,jpsil) = tra(ji,jj,jk,jpsil) + zosil 266 !269 ENDIF 267 270 END DO 268 271 END DO … … 280 283 CALL iom_put( "DENIT" , denitrc(:,:,:) * rdenit * rno3 * tmask(:,:,:) * zrfact2 ) ! Denitrification 281 284 ENDIF 282 283 IF(ln_ctl) THEN ! print mean trends (used for debugging)284 WRITE(charout, FMT="('rem4')")285 CALL prt_ctl_trc_info(charout)286 CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm)287 ENDIF288 285 ! 289 286 CALL wrk_dealloc( jpi, jpj, ztempbac ) 290 CALL wrk_dealloc( jpi, jpj, jpk, zdepbac, zdepprod, zwork1 )287 CALL wrk_dealloc( jpi, jpj, jpk, zdepbac, zdepprod, zwork1, zfacsi, zfacsib ) 291 288 ! 292 289 IF( nn_timing == 1 ) CALL timing_stop('p5z_rem')
Note: See TracChangeset
for help on using the changeset viewer.