Changeset 2528 for trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zprod.F90
- Timestamp:
- 2010-12-27T18:33:53+01:00 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zprod.F90
- Property svn:executable deleted
r1836 r2528 23 23 24 24 USE lib_mpp 25 USE lib_fortran 25 26 26 27 IMPLICIT NONE 27 28 PRIVATE 28 29 29 PUBLIC p4z_prod ! called in p4zbio.F90 30 PUBLIC p4z_prod ! called in p4zbio.F90 31 PUBLIC p4z_prod_init ! called in trcsms_pisces.F90 30 32 31 33 !! * Shared module variables … … 41 43 grosip = 0.151_wp 42 44 43 REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jpk) :: & 44 & prmax 45 REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jpk) :: prmax 45 46 46 47 REAL(wp) :: & 48 rday1 , & !: 0.6 / rday 47 49 texcret , & !: 1 - excret 48 50 texcret2 , & !: 1 - excret2 49 rpis180 , & !: rpi / 18050 51 tpp !: Total primary production 51 52 INTEGER :: nspyr !: number of timesteps per year53 52 54 53 !!* Substitution 55 54 # include "top_substitute.h90" 56 55 !!---------------------------------------------------------------------- 57 !! NEMO/TOP 2.0 , LOCEAN-IPSL (2007)56 !! NEMO/TOP 3.3 , NEMO Consortium (2010) 58 57 !! $Id$ 59 !! Software governed by the CeCILL licence ( modipsl/doc/NEMO_CeCILL.txt)58 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 60 59 !!---------------------------------------------------------------------- 61 60 … … 78 77 REAL(wp) :: zmxltst, zmxlday, zlim1 79 78 REAL(wp) :: zpislopen , zpislope2n 80 REAL(wp) :: zrum, zcodel, zargu, zv ol81 #if defined key_ trc_diaadd && defined key_trc_dia3d79 REAL(wp) :: zrum, zcodel, zargu, zval, zvol 80 #if defined key_diatrc 82 81 REAL(wp) :: zrfact2 83 82 #endif … … 90 89 CHARACTER (len=25) :: charout 91 90 !!--------------------------------------------------------------------- 92 93 94 IF( ( kt * jnt ) == nittrc000 ) CALL p4z_prod_init ! Initialization (first time-step only)95 96 91 97 92 zprorca (:,:,:) = 0.0 … … 109 104 ! Computation of the optimal production 110 105 111 # if defined key_ off_degrad112 prmax(:,:,:) = 0.6 / rday* tgfunc(:,:,:) * facvol(:,:,:)106 # if defined key_degrad 107 prmax(:,:,:) = rday1 * tgfunc(:,:,:) * facvol(:,:,:) 113 108 # else 114 prmax(:,:,:) = 0.6 / rday* tgfunc(:,:,:)109 prmax(:,:,:) = rday1 * tgfunc(:,:,:) 115 110 # endif 116 111 117 112 ! compute the day length depending on latitude and the day 118 IF(lwp) write(numout,*) 119 IF(lwp) write(numout,*) 'p4zday : - Julian day ', nday_year 120 IF(lwp) write(numout,*) '~~~~~~' 121 122 IF( nleapy == 1 .AND. MOD( nyear, 4 ) == 0 ) THEN 123 zrum = FLOAT( nday_year - 80 ) / 366. 124 ELSE 125 zrum = FLOAT( nday_year - 80 ) / 365. 126 ENDIF 127 zcodel = ASIN( SIN( zrum * rpi * 2. ) * SIN( rpis180 * 23.5 ) ) 113 zrum = FLOAT( nday_year - 80 ) / REAL(nyear_len(1), wp) 114 zcodel = ASIN( SIN( zrum * rpi * 2. ) * SIN( rad * 23.5 ) ) 128 115 129 116 ! day length in hours … … 131 118 DO jj = 1, jpj 132 119 DO ji = 1, jpi 133 zargu = TAN( zcodel ) * TAN( gphit(ji,jj) * r pis180)120 zargu = TAN( zcodel ) * TAN( gphit(ji,jj) * rad ) 134 121 zargu = MAX( -1., MIN( 1., zargu ) ) 135 zstrn(ji,jj) = MAX( 0.0, 24. - 2. * ACOS( zargu ) / rpis180 / 15. ) 122 zval = MAX( 0.0, 24. - 2. * ACOS( zargu ) / rad / 15. ) 123 IF( zval < 1.e0 ) zval = 24. 124 zstrn(ji,jj) = 24. / zval 136 125 END DO 137 126 END DO … … 147 136 ! Computation of the P-I slope for nanos and diatoms 148 137 IF( etot(ji,jj,jk) > 1.E-3 ) THEN 149 ztn = MAX( 0., t n(ji,jj,jk) - 15. )138 ztn = MAX( 0., tsn(ji,jj,jk,jp_tem) - 15. ) 150 139 zadap = 0.+ 1.* ztn / ( 2.+ ztn ) 151 140 zadap2 = 0.e0 … … 227 216 END DO 228 217 229 230 WHERE( zstrn(:,:) < 1.e0 ) zstrn(:,:) = 24.231 zstrn(:,:) = 24. / zstrn(:,:)232 218 233 219 !CDIR NOVERRCHK … … 331 317 332 318 ! Total primary production per year 333 DO jk = 1, jpkm1 334 DO jj = 1, jpj 335 DO ji = 1, jpi 336 zvol = cvol(ji,jj,jk) 337 #if defined key_off_degrad 338 zvol = zvol * facvol(ji,jj,jk) 319 320 #if defined key_degrad 321 tpp = tpp + glob_sum( ( zprorca(:,:,:) + zprorcad(:,:,:) ) * cvol(:,:,:) * facvol(:,:,:) ) 322 #else 323 tpp = tpp + glob_sum( ( zprorca(:,:,:) + zprorcad(:,:,:) ) * cvol(:,:,:) ) 339 324 #endif 340 tpp = tpp + ( zprorca(ji,jj,jk) + zprorcad(ji,jj,jk) ) & 341 * zvol * tmask(ji,jj,jk) * tmask_i(ji,jj) 342 END DO 343 END DO 344 END DO 345 346 347 IF( MOD( kt, nspyr ) == 0 .AND. jnt == nrdttrc ) THEN 348 IF( lk_mpp ) CALL mpp_sum( tpp ) 349 WRITE(numout,*) 'Total PP :' 325 326 IF( kt == nitend .AND. jnt == nrdttrc ) THEN 327 WRITE(numout,*) 'Total PP (Gtc) :' 350 328 WRITE(numout,*) '-------------------- : ',tpp * 12. / 1.E12 351 WRITE(numout,*) '(GtC/yr)' 352 tpp = 0. 329 WRITE(numout,*) 353 330 ENDIF 354 331 355 #if defined key_ trc_diaadd && defined key_trc_dia3d&& ! defined key_iomput332 #if defined key_diatrc && ! defined key_iomput 356 333 ! Supplementary diagnostics 357 334 zrfact2 = 1.e3 * rfact2r … … 367 344 #endif 368 345 369 #if defined key_ trc_diaadd && defined key_trc_dia3d&& defined key_iomput346 #if defined key_diatrc && defined key_iomput 370 347 zrfact2 = 1.e3 * rfact2r 371 348 IF ( jnt == nrdttrc ) then … … 396 373 !! 397 374 !! ** Method : Read the nampisprod namelist and check the parameters 398 !! called at the first timestep (nit trc000)375 !! called at the first timestep (nit000) 399 376 !! 400 377 !! ** input : Namelist nampisprod … … 423 400 ENDIF 424 401 425 ! number of timesteps per year 426 nspyr = INT( nyear_len(1) * rday / rdt ) 427 428 rpis180 = rpi / 180. 402 rday1 = 0.6 / rday 429 403 texcret = 1.0 - excret 430 404 texcret2 = 1.0 - excret2
Note: See TracChangeset
for help on using the changeset viewer.