Changeset 2715 for trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zopt.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/p4zopt.F90
r2528 r2715 6 6 !! History : 1.0 ! 2004 (O. Aumont) Original code 7 7 !! 2.0 ! 2007-12 (C. Ethe, G. Madec) F90 8 !! 3.2 ! 2009-04 (C. Ethe, G. Madec) optimisa ion8 !! 3.2 ! 2009-04 (C. Ethe, G. Madec) optimisation 9 9 !!---------------------------------------------------------------------- 10 10 #if defined key_pisces … … 24 24 PUBLIC p4z_opt ! called in p4zbio.F90 module 25 25 PUBLIC p4z_opt_init ! called in trcsms_pisces.F90 module 26 27 REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jpk) :: etot, enano, ediat !: PAR for phyto, nano and diat 28 REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jpk) :: emoy !: averaged PAR in the mixed layer 29 30 INTEGER :: nksrp ! levels below which the light cannot penetrate ( depth larger than 391 m) 31 REAL(wp) :: parlux = 0.43 / 3.e0 32 33 REAL(wp), DIMENSION(3,61), PUBLIC :: xkrgb !: tabulated attenuation coefficients for RGB absorption 26 PUBLIC p4z_opt_alloc 27 28 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: etot, enano, ediat !: PAR for phyto, nano and diat 29 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: emoy !: averaged PAR in the mixed layer 30 31 INTEGER :: nksrp ! levels below which the light cannot penetrate ( depth larger than 391 m) 32 REAL(wp) :: parlux = 0.43_wp / 3._wp 33 34 REAL(wp), DIMENSION(3,61), PUBLIC :: xkrgb !: tabulated attenuation coefficients for RGB absorption 34 35 35 36 !!* Substitution … … 38 39 !! NEMO/TOP 3.3 , NEMO Consortium (2010) 39 40 !! $Id$ 40 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 41 !!---------------------------------------------------------------------- 42 41 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 42 !!---------------------------------------------------------------------- 43 43 CONTAINS 44 44 … … 52 52 !! ** Method : - ??? 53 53 !!--------------------------------------------------------------------- 54 INTEGER, INTENT(in) :: kt, jnt ! ocean time step 54 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 55 USE wrk_nemo, ONLY: zdepmoy => wrk_2d_1 , zetmp => wrk_2d_2 56 USE wrk_nemo, ONLY: zekg => wrk_3d_2 , zekr => wrk_3d_3 , zekb => wrk_3d_4 57 USE wrk_nemo, ONLY: ze0 => wrk_3d_5 , ze1 => wrk_3d_6 58 USE wrk_nemo, ONLY: ze2 => wrk_3d_7 , ze3 => wrk_3d_8 59 ! 60 INTEGER, INTENT(in) :: kt, jnt ! ocean time step 61 ! 55 62 INTEGER :: ji, jj, jk 56 63 INTEGER :: irgb 57 64 REAL(wp) :: zchl, zxsi0r 58 65 REAL(wp) :: zc0 , zc1 , zc2, zc3 59 REAL(wp), DIMENSION(jpi,jpj) :: zdepmoy, zetmp60 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zekg, zekr, zekb61 REAL(wp), DIMENSION(jpi,jpj,jpk) :: ze1 , ze2 , ze3, ze062 66 !!--------------------------------------------------------------------- 63 67 68 IF( wrk_in_use(2, 1,2) .OR. wrk_in_use(3, 2,3,4,5,6,7,8) ) THEN 69 CALL ctl_stop('p4z_opt: requested workspace arrays unavailable') ; RETURN 70 ENDIF 64 71 65 72 ! Initialisation of variables used to compute PAR 66 73 ! ----------------------------------------------- 67 ze1 (:,:,jpk) = 0. e068 ze2 (:,:,jpk) = 0. e069 ze3 (:,:,jpk) = 0. e074 ze1 (:,:,jpk) = 0._wp 75 ze2 (:,:,jpk) = 0._wp 76 ze3 (:,:,jpk) = 0._wp 70 77 71 78 ! !* attenuation coef. function of Chlorophyll and wavelength (Red-Green-Blue) … … 203 210 !CDIR NOVERRCHK 204 211 DO ji = 1, jpi 205 IF( fsdepw(ji,jj,jk+1) <= hmld(ji,jj) ) & 206 & emoy(ji,jj,jk) = zetmp(ji,jj) / ( zdepmoy(ji,jj) + rtrn ) 212 IF( fsdepw(ji,jj,jk+1) <= hmld(ji,jj) ) emoy(ji,jj,jk) = zetmp(ji,jj) / ( zdepmoy(ji,jj) + rtrn ) 207 213 END DO 208 214 END DO … … 223 229 #endif 224 230 ! 231 IF( wrk_not_released(2, 1,2) .OR. & 232 wrk_not_released(3, 2,3,4,5,6,7,8) ) CALL ctl_stop('p4z_opt: failed to release workspace arrays') 233 ! 225 234 END SUBROUTINE p4z_opt 235 226 236 227 237 SUBROUTINE p4z_opt_init … … 230 240 !! 231 241 !! ** Purpose : Initialization of tabulated attenuation coef 232 !! 233 !! 234 !!---------------------------------------------------------------------- 235 242 !!---------------------------------------------------------------------- 243 ! 236 244 CALL trc_oce_rgb( xkrgb ) ! tabulated attenuation coefficients 237 !! CALL trc_oce_rgb_read( xkrgb ) ! tabulated attenuation coefficients238 245 nksrp = trc_oce_ext_lev( r_si2, 0.33e2 ) ! max level of light extinction (Blue Chl=0.01) 246 ! 239 247 IF(lwp) WRITE(numout,*) ' level of light extinction = ', nksrp, ' ref depth = ', gdepw_0(nksrp+1), ' m' 240 248 ! 241 etot (:,:,:) = 0. e0242 enano(:,:,:) = 0. e0243 ediat(:,:,:) = 0. e0244 IF( ln_qsr_bio ) etot3(:,:,:) = 0. e0249 etot (:,:,:) = 0._wp 250 enano(:,:,:) = 0._wp 251 ediat(:,:,:) = 0._wp 252 IF( ln_qsr_bio ) etot3(:,:,:) = 0._wp 245 253 ! 246 254 END SUBROUTINE p4z_opt_init 255 256 257 INTEGER FUNCTION p4z_opt_alloc() 258 !!---------------------------------------------------------------------- 259 !! *** ROUTINE p4z_opt_alloc *** 260 !!---------------------------------------------------------------------- 261 ALLOCATE( etot (jpi,jpj,jpk) , enano(jpi,jpj,jpk) , & 262 & ediat(jpi,jpj,jpk) , emoy (jpi,jpj,jpk) , STAT=p4z_opt_alloc ) 263 ! 264 IF( p4z_opt_alloc /= 0 ) CALL ctl_warn('p4z_opt_alloc : failed to allocate arrays.') 265 ! 266 END FUNCTION p4z_opt_alloc 267 247 268 #else 248 269 !!----------------------------------------------------------------------
Note: See TracChangeset
for help on using the changeset viewer.