Changeset 2715 for trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zprod.F90
- Timestamp:
- 2011-03-30T17:58:35+02:00 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zprod.F90
r2528 r2715 22 22 USE iom 23 23 24 USE lib_mpp25 USE lib_fortran26 27 24 IMPLICIT NONE 28 25 PRIVATE … … 30 27 PUBLIC p4z_prod ! called in p4zbio.F90 31 28 PUBLIC p4z_prod_init ! called in trcsms_pisces.F90 32 33 !! * Shared module variables 29 PUBLIC p4z_prod_alloc 30 34 31 REAL(wp), PUBLIC :: & 35 32 pislope = 3.0_wp , & !: … … 43 40 grosip = 0.151_wp 44 41 45 REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jpk) :: prmax42 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: prmax !: 46 43 47 44 REAL(wp) :: & … … 56 53 !! NEMO/TOP 3.3 , NEMO Consortium (2010) 57 54 !! $Id$ 58 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 59 !!---------------------------------------------------------------------- 60 55 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 56 !!---------------------------------------------------------------------- 61 57 CONTAINS 62 58 … … 70 66 !! ** Method : - ??? 71 67 !!--------------------------------------------------------------------- 68 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 69 USE wrk_nemo, ONLY: zmixnano => wrk_2d_1 , zmixdiat => wrk_2d_2 , zstrn => wrk_2d_3 70 USE wrk_nemo, ONLY: zpislopead => wrk_3d_2 , zpislopead2 => wrk_3d_3 71 USE wrk_nemo, ONLY: zprdia => wrk_3d_4 , zprbio => wrk_3d_5 , zysopt => wrk_3d_6 72 USE wrk_nemo, ONLY: zprorca => wrk_3d_7 , zprorcad => wrk_3d_8 73 USE wrk_nemo, ONLY: zprofed => wrk_3d_9 , zprofen => wrk_3d_10 74 USE wrk_nemo, ONLY: zprochln => wrk_3d_11 , zprochld => wrk_3d_12 75 USE wrk_nemo, ONLY: zpronew => wrk_3d_13 , zpronewd => wrk_3d_14 76 ! 72 77 INTEGER, INTENT(in) :: kt, jnt 78 ! 73 79 INTEGER :: ji, jj, jk 74 80 REAL(wp) :: zsilfac, zfact … … 81 87 REAL(wp) :: zrfact2 82 88 #endif 83 REAL(wp), DIMENSION(jpi,jpj) :: zmixnano , zmixdiat, zstrn84 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zpislopead , zpislopead285 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zprdia , zprbio, zysopt86 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zprorca , zprorcad, zprofed87 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zprofen , zprochln, zprochld88 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zpronew , zpronewd89 89 CHARACTER (len=25) :: charout 90 90 !!--------------------------------------------------------------------- 91 91 92 zprorca (:,:,:) = 0.0 93 zprorcad(:,:,:) = 0.0 94 zprofed(:,:,:) = 0.0 95 zprofen(:,:,:) = 0.0 96 zprochln(:,:,:) = 0.0 97 zprochld(:,:,:) = 0.0 98 zpronew (:,:,:) = 0.0 99 zpronewd(:,:,:) = 0.0 100 zprdia (:,:,:) = 0.0 101 zprbio (:,:,:) = 0.0 102 zysopt (:,:,:) = 0.0 92 IF( wrk_in_use(2, 1,2,3) .OR. & 93 wrk_in_use(3, 2,3,4,5,6,7,8,9,10,11,12,13,14) ) THEN 94 CALL ctl_stop('p4z_prod: requested workspace arrays unavailable') ; RETURN 95 ENDIF 96 97 zprorca (:,:,:) = 0._wp 98 zprorcad(:,:,:) = 0._wp 99 zprofed (:,:,:) = 0._wp 100 zprofen (:,:,:) = 0._wp 101 zprochln(:,:,:) = 0._wp 102 zprochld(:,:,:) = 0._wp 103 zpronew (:,:,:) = 0._wp 104 zpronewd(:,:,:) = 0._wp 105 zprdia (:,:,:) = 0._wp 106 zprbio (:,:,:) = 0._wp 107 zysopt (:,:,:) = 0._wp 103 108 104 109 ! Computation of the optimal production 105 106 110 # if defined key_degrad 107 111 prmax(:,:,:) = rday1 * tgfunc(:,:,:) * facvol(:,:,:) … … 111 115 112 116 ! compute the day length depending on latitude and the day 113 zrum = FLOAT( nday_year - 80 ) / REAL(nyear_len(1), wp)114 zcodel = ASIN( SIN( zrum * rpi * 2. ) * SIN( rad * 23.5) )117 zrum = REAL( nday_year - 80, wp ) / REAL( nyear_len(1), wp ) 118 zcodel = ASIN( SIN( zrum * rpi * 2._wp ) * SIN( rad * 23.5_wp ) ) 115 119 116 120 ! day length in hours 117 zstrn(:,:) = 0. 121 zstrn(:,:) = 0._wp 118 122 DO jj = 1, jpj 119 123 DO ji = 1, jpi … … 187 191 zsilfac = MIN( 6.4,zsilfac * zsilfac2) 188 192 zysopt(ji,jj,jk) = grosip * zlim1 * zsilfac 189 190 193 ENDIF 191 194 END DO … … 357 360 #endif 358 361 359 362 IF(ln_ctl) THEN ! print mean trends (used for debugging) 360 363 WRITE(charout, FMT="('prod')") 361 364 CALL prt_ctl_trc_info(charout) 362 365 CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm) 363 ENDIF 364 366 ENDIF 367 368 IF( wrk_not_released(2, 1,2,3) .OR. & 369 wrk_not_released(3, 2,3,4,5,6,7,8,9,10,11,12,13,14) ) & 370 CALL ctl_stop('p4z_prod: failed to release workspace arrays') 371 ! 365 372 END SUBROUTINE p4z_prod 366 373 374 367 375 SUBROUTINE p4z_prod_init 368 369 376 !!---------------------------------------------------------------------- 370 377 !! *** ROUTINE p4z_prod_init *** … … 376 383 !! 377 384 !! ** input : Namelist nampisprod 378 !!379 385 !!---------------------------------------------------------------------- 380 381 386 NAMELIST/nampisprod/ pislope, pislope2, excret, excret2, chlcnm, chlcdm, & 382 387 & fecnm, fecdm, grosip 388 !!---------------------------------------------------------------------- 383 389 384 390 REWIND( numnat ) ! read numnat … … 399 405 WRITE(numout,*) ' Minimum Fe/C in diatoms fecdm =', fecdm 400 406 ENDIF 401 407 ! 402 408 rday1 = 0.6 / rday 403 409 texcret = 1.0 - excret 404 410 texcret2 = 1.0 - excret2 405 411 tpp = 0. 406 412 ! 407 413 END SUBROUTINE p4z_prod_init 408 414 409 415 416 INTEGER FUNCTION p4z_prod_alloc() 417 !!---------------------------------------------------------------------- 418 !! *** ROUTINE p4z_prod_alloc *** 419 !!---------------------------------------------------------------------- 420 ALLOCATE( prmax(jpi,jpj,jpk), STAT=p4z_prod_alloc ) 421 ! 422 IF( p4z_prod_alloc /= 0 ) CALL ctl_warn('p4z_prod_alloc : failed to allocate arrays.') 423 ! 424 END FUNCTION p4z_prod_alloc 410 425 411 426 #else
Note: See TracChangeset
for help on using the changeset viewer.