Changeset 5600 for branches/2014/dev_r4650_UKMO14.12_STAND_ALONE_OBSOPER/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zopt.F90
- Timestamp:
- 2015-07-15T17:46:12+02:00 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2014/dev_r4650_UKMO14.12_STAND_ALONE_OBSOPER/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zopt.F90
r5034 r5600 35 35 REAL(wp) :: parlux !: Fraction of shortwave as PAR 36 36 REAL(wp) :: xparsw !: parlux/3 37 REAL(wp) :: xsi0r !: 1. /rn_si0 37 38 38 39 TYPE(FLD), ALLOCATABLE, DIMENSION(:) :: sf_par ! structure of input par … … 42 43 43 44 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: enano, ediat !: PAR for phyto, nano and diat 45 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: etot_ndcy !: PAR over 24h in case of diurnal cycle 44 46 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: emoy !: averaged PAR in the mixed layer 47 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: ekb, ekg, ekr !: wavelength (Red-Green-Blue) 45 48 46 49 INTEGER :: nksrp ! levels below which the light cannot penetrate ( depth larger than 391 m) … … 57 60 CONTAINS 58 61 59 SUBROUTINE p4z_opt( kt, jnt )62 SUBROUTINE p4z_opt( kt, knt ) 60 63 !!--------------------------------------------------------------------- 61 64 !! *** ROUTINE p4z_opt *** … … 67 70 !!--------------------------------------------------------------------- 68 71 ! 69 INTEGER, INTENT(in) :: kt, jnt ! ocean time step72 INTEGER, INTENT(in) :: kt, knt ! ocean time step 70 73 ! 71 74 INTEGER :: ji, jj, jk 72 75 INTEGER :: irgb 73 REAL(wp) :: zchl , zxsi0r76 REAL(wp) :: zchl 74 77 REAL(wp) :: zc0 , zc1 , zc2, zc3, z1_dep 75 REAL(wp), POINTER, DIMENSION(:,: ) :: zdepmoy, zetmp , zetmp1, zetmp276 REAL(wp), POINTER, DIMENSION(:,:,:) :: z ekg, zekr, zekb, ze0, ze1, ze2, ze378 REAL(wp), POINTER, DIMENSION(:,: ) :: zdepmoy, zetmp1, zetmp2, zetmp3, zetmp4, zqsr100 79 REAL(wp), POINTER, DIMENSION(:,:,:) :: zpar, ze0, ze1, ze2, ze3 77 80 !!--------------------------------------------------------------------- 78 81 ! … … 80 83 ! 81 84 ! Allocate temporary workspace 82 CALL wrk_alloc( jpi, jpj, z depmoy, zetmp, zetmp1, zetmp2 )83 CALL wrk_alloc( jpi, jpj, jpk, z ekg, zekr, zekb, ze0, ze1, ze2, ze3 )84 85 IF( jnt == 1 .AND. ln_varpar ) CALL p4z_optsbc( kt )85 CALL wrk_alloc( jpi, jpj, zqsr100, zdepmoy, zetmp1, zetmp2, zetmp3, zetmp4 ) 86 CALL wrk_alloc( jpi, jpj, jpk, zpar, ze0, ze1, ze2, ze3 ) 87 88 IF( knt == 1 .AND. ln_varpar ) CALL p4z_opt_sbc( kt ) 86 89 87 90 ! Initialisation of variables used to compute PAR 88 91 ! ----------------------------------------------- 89 ze1(:,:,jpk) = 0._wp 90 ze2(:,:,jpk) = 0._wp 91 ze3(:,:,jpk) = 0._wp 92 92 ze1(:,:,:) = 0._wp 93 ze2(:,:,:) = 0._wp 94 ze3(:,:,:) = 0._wp 93 95 ! !* attenuation coef. function of Chlorophyll and wavelength (Red-Green-Blue) 94 96 DO jk = 1, jpkm1 ! -------------------------------------------------------- … … 97 99 !CDIR NOVERRCHK 98 100 DO ji = 1, jpi 99 zchl = ( tr n(ji,jj,jk,jpnch) + trn(ji,jj,jk,jpdch) + rtrn ) * 1.e6101 zchl = ( trb(ji,jj,jk,jpnch) + trb(ji,jj,jk,jpdch) + rtrn ) * 1.e6 100 102 zchl = MIN( 10. , MAX( 0.05, zchl ) ) 101 103 irgb = NINT( 41 + 20.* LOG10( zchl ) + rtrn ) 102 104 ! 103 zekb(ji,jj,jk) = xkrgb(1,irgb) * fse3t(ji,jj,jk)104 zekg(ji,jj,jk) = xkrgb(2,irgb) * fse3t(ji,jj,jk)105 zekr(ji,jj,jk) = xkrgb(3,irgb) * fse3t(ji,jj,jk)105 ekb(ji,jj,jk) = xkrgb(1,irgb) * fse3t(ji,jj,jk) 106 ekg(ji,jj,jk) = xkrgb(2,irgb) * fse3t(ji,jj,jk) 107 ekr(ji,jj,jk) = xkrgb(3,irgb) * fse3t(ji,jj,jk) 106 108 END DO 107 109 END DO 108 110 END DO 109 110 111 111 ! !* Photosynthetically Available Radiation (PAR) 112 112 ! ! -------------------------------------- 113 114 IF( ln_varpar ) THEN 115 ze1(:,:,1) = par_varsw(:,:) * qsr(:,:) * EXP( -0.5 * zekb(:,:,1) ) 116 ze2(:,:,1) = par_varsw(:,:) * qsr(:,:) * EXP( -0.5 * zekg(:,:,1) ) 117 ze3(:,:,1) = par_varsw(:,:) * qsr(:,:) * EXP( -0.5 * zekr(:,:,1) ) 113 IF( l_trcdm2dc ) THEN ! diurnal cycle 114 ! 1% of qsr to compute euphotic layer 115 zqsr100(:,:) = 0.01 * qsr_mean(:,:) ! daily mean qsr 116 ! 117 CALL p4z_opt_par( kt, qsr_mean, ze1, ze2, ze3 ) 118 ! 119 DO jk = 1, nksrp 120 etot_ndcy(:,:,jk) = ze1(:,:,jk) + ze2(:,:,jk) + ze3(:,:,jk) 121 enano (:,:,jk) = 2.1 * ze1(:,:,jk) + 0.42 * ze2(:,:,jk) + 0.4 * ze3(:,:,jk) 122 ediat (:,:,jk) = 1.6 * ze1(:,:,jk) + 0.69 * ze2(:,:,jk) + 0.7 * ze3(:,:,jk) 123 END DO 124 ! 125 CALL p4z_opt_par( kt, qsr, ze1, ze2, ze3 ) 126 ! 127 DO jk = 1, nksrp 128 etot(:,:,jk) = ze1(:,:,jk) + ze2(:,:,jk) + ze3(:,:,jk) 129 END DO 130 ! 118 131 ELSE 119 ze1(:,:,1) = xparsw * qsr(:,:) * EXP( -0.5 * zekb(:,:,1) ) 120 ze2(:,:,1) = xparsw * qsr(:,:) * EXP( -0.5 * zekg(:,:,1) ) 121 ze3(:,:,1) = xparsw * qsr(:,:) * EXP( -0.5 * zekr(:,:,1) ) 122 ENDIF 123 124 !CDIR NOVERRCHK 125 DO jj = 1, jpj 126 !CDIR NOVERRCHK 127 DO ji = 1, jpi 128 zc1 = ze1(ji,jj,1) 129 zc2 = ze2(ji,jj,1) 130 zc3 = ze3(ji,jj,1) 131 etot (ji,jj,1) = ( zc1 + zc2 + zc3 ) 132 enano(ji,jj,1) = ( 2.1 * zc1 + 0.42 * zc2 + 0.4 * zc3 ) 133 ediat(ji,jj,1) = ( 1.6 * zc1 + 0.69 * zc2 + 0.7 * zc3 ) 134 END DO 135 END DO 136 137 138 DO jk = 2, nksrp 139 !CDIR NOVERRCHK 140 DO jj = 1, jpj 141 !CDIR NOVERRCHK 142 DO ji = 1, jpi 143 zc1 = ze1(ji,jj,jk-1) * EXP( -0.5 * ( zekb(ji,jj,jk-1) + zekb(ji,jj,jk) ) ) 144 zc2 = ze2(ji,jj,jk-1) * EXP( -0.5 * ( zekg(ji,jj,jk-1) + zekg(ji,jj,jk) ) ) 145 zc3 = ze3(ji,jj,jk-1) * EXP( -0.5 * ( zekr(ji,jj,jk-1) + zekr(ji,jj,jk) ) ) 146 ze1 (ji,jj,jk) = zc1 147 ze2 (ji,jj,jk) = zc2 148 ze3 (ji,jj,jk) = zc3 149 etot (ji,jj,jk) = ( zc1 + zc2 + zc3 ) 150 enano(ji,jj,jk) = ( 2.1 * zc1 + 0.42 * zc2 + 0.4 * zc3 ) 151 ediat(ji,jj,jk) = ( 1.6 * zc1 + 0.69 * zc2 + 0.7 * zc3 ) 152 END DO 153 END DO 154 END DO 132 ! 1% of qsr to compute euphotic layer 133 zqsr100(:,:) = 0.01 * qsr(:,:) 134 ! 135 CALL p4z_opt_par( kt, qsr, ze1, ze2, ze3 ) 136 ! 137 DO jk = 1, nksrp 138 etot (:,:,jk) = ze1(:,:,jk) + ze2(:,:,jk) + ze3(:,:,jk) 139 enano(:,:,jk) = 2.1 * ze1(:,:,jk) + 0.42 * ze2(:,:,jk) + 0.4 * ze3(:,:,jk) 140 ediat(:,:,jk) = 1.6 * ze1(:,:,jk) + 0.69 * ze2(:,:,jk) + 0.7 * ze3(:,:,jk) 141 END DO 142 etot_ndcy(:,:,:) = etot(:,:,:) 143 ENDIF 144 155 145 156 146 IF( ln_qsr_bio ) THEN !* heat flux accros w-level (used in the dynamics) 157 147 ! ! ------------------------ 158 zxsi0r = 1.e0 / rn_si0 159 ! 160 ze0(:,:,1) = rn_abs * qsr(:,:) 161 ! ! surface value : separation in R-G-B + near surface 162 IF( ln_varpar ) THEN 163 ze0(:,:,1) = ( 1. - 3. * par_varsw(:,:) ) * qsr(:,:) 164 ze1(:,:,1) = par_varsw(:,:) * qsr(:,:) 165 ze2(:,:,1) = par_varsw(:,:) * qsr(:,:) 166 ze3(:,:,1) = par_varsw(:,:) * qsr(:,:) 167 ELSE 168 ze0(:,:,1) = ( 1. - 3. * xparsw ) * qsr(:,:) 169 ze1(:,:,1) = xparsw * qsr(:,:) 170 ze2(:,:,1) = xparsw * qsr(:,:) 171 ze3(:,:,1) = xparsw * qsr(:,:) 172 ENDIF 148 CALL p4z_opt_par( kt, qsr, ze1, ze2, ze3, pe0=ze0 ) 149 ! 173 150 etot3(:,:,1) = qsr(:,:) * tmask(:,:,1) 174 !175 !176 151 DO jk = 2, nksrp + 1 177 !CDIR NOVERRCHK 178 DO jj = 1, jpj 179 !CDIR NOVERRCHK 180 DO ji = 1, jpi 181 zc0 = ze0(ji,jj,jk-1) * EXP( -fse3t(ji,jj,jk-1) * zxsi0r ) 182 zc1 = ze1(ji,jj,jk-1) * EXP( -zekb(ji,jj,jk-1 ) ) 183 zc2 = ze2(ji,jj,jk-1) * EXP( -zekg(ji,jj,jk-1 ) ) 184 zc3 = ze3(ji,jj,jk-1) * EXP( -zekr(ji,jj,jk-1 ) ) 185 ze0(ji,jj,jk) = zc0 186 ze1(ji,jj,jk) = zc1 187 ze2(ji,jj,jk) = zc2 188 ze3(ji,jj,jk) = zc3 189 etot3(ji,jj,jk) = ( zc0 + zc1 + zc2 + zc3 ) * tmask(ji,jj,jk) 190 END DO 191 ! 192 END DO 193 ! 194 END DO 195 ! 196 ENDIF 197 152 etot3(:,:,jk) = ( ze0(:,:,jk) + ze1(:,:,jk) + ze2(:,:,jk) + ze3(:,:,jk) ) * tmask(:,:,jk) 153 END DO 154 ! ! ------------------------ 155 ENDIF 198 156 ! !* Euphotic depth and level 199 157 neln(:,:) = 1 ! ------------------------ … … 203 161 DO jj = 1, jpj 204 162 DO ji = 1, jpi 205 IF( etot (ji,jj,jk) * tmask(ji,jj,jk) >= 0.0043 * qsr(ji,jj) ) THEN163 IF( etot_ndcy(ji,jj,jk) * tmask(ji,jj,jk) >= 0.43 * zqsr100(ji,jj) ) THEN 206 164 neln(ji,jj) = jk+1 ! Euphotic level : 1rst T-level strictly below Euphotic layer 207 ! ! nb: ensure the compatibility with nmld_trc definition in trd_m xl_trc_zint165 ! ! nb: ensure the compatibility with nmld_trc definition in trd_mld_trc_zint 208 166 heup(ji,jj) = fsdepw(ji,jj,jk+1) ! Euphotic layer depth 209 167 ENDIF … … 211 169 END DO 212 170 END DO 213 171 ! 214 172 heup(:,:) = MIN( 300., heup(:,:) ) 215 216 173 ! !* mean light over the mixed layer 217 174 zdepmoy(:,:) = 0.e0 ! ------------------------------- 218 zetmp (:,:) = 0.e0219 175 zetmp1 (:,:) = 0.e0 220 176 zetmp2 (:,:) = 0.e0 177 zetmp3 (:,:) = 0.e0 178 zetmp4 (:,:) = 0.e0 221 179 222 180 DO jk = 1, nksrp … … 226 184 DO ji = 1, jpi 227 185 IF( fsdepw(ji,jj,jk+1) <= hmld(ji,jj) ) THEN 228 zetmp (ji,jj) = zetmp (ji,jj) + etot (ji,jj,jk) * fse3t(ji,jj,jk) 229 zetmp1 (ji,jj) = zetmp1 (ji,jj) + enano(ji,jj,jk) * fse3t(ji,jj,jk) 230 zetmp2 (ji,jj) = zetmp2 (ji,jj) + ediat(ji,jj,jk) * fse3t(ji,jj,jk) 186 zetmp1 (ji,jj) = zetmp1 (ji,jj) + etot (ji,jj,jk) * fse3t(ji,jj,jk) ! remineralisation 187 zetmp2 (ji,jj) = zetmp2 (ji,jj) + etot_ndcy(ji,jj,jk) * fse3t(ji,jj,jk) ! production 188 zetmp3 (ji,jj) = zetmp3 (ji,jj) + enano (ji,jj,jk) * fse3t(ji,jj,jk) ! production 189 zetmp4 (ji,jj) = zetmp4 (ji,jj) + ediat (ji,jj,jk) * fse3t(ji,jj,jk) ! production 231 190 zdepmoy(ji,jj) = zdepmoy(ji,jj) + fse3t(ji,jj,jk) 232 191 ENDIF … … 235 194 END DO 236 195 ! 237 emoy(:,:,:) = etot(:,:,:) 196 emoy(:,:,:) = etot(:,:,:) ! remineralisation 197 zpar(:,:,:) = etot_ndcy(:,:,:) ! diagnostic : PAR with no diurnal cycle 238 198 ! 239 199 DO jk = 1, nksrp … … 244 204 IF( fsdepw(ji,jj,jk+1) <= hmld(ji,jj) ) THEN 245 205 z1_dep = 1. / ( zdepmoy(ji,jj) + rtrn ) 246 emoy (ji,jj,jk) = zetmp (ji,jj) * z1_dep 247 enano(ji,jj,jk) = zetmp1(ji,jj) * z1_dep 248 ediat(ji,jj,jk) = zetmp2(ji,jj) * z1_dep 206 emoy (ji,jj,jk) = zetmp1(ji,jj) * z1_dep 207 zpar (ji,jj,jk) = zetmp2(ji,jj) * z1_dep 208 enano(ji,jj,jk) = zetmp3(ji,jj) * z1_dep 209 ediat(ji,jj,jk) = zetmp4(ji,jj) * z1_dep 249 210 ENDIF 250 211 END DO 251 212 END DO 252 213 END DO 253 214 ! 254 215 IF( lk_iomput ) THEN 255 IF( jnt == nrdttrc ) THEN 256 IF( iom_use( "Heup" ) ) CALL iom_put( "Heup", heup(:,: ) * tmask(:,:,1) ) ! euphotic layer deptht 257 IF( iom_use( "PAR" ) ) CALL iom_put( "PAR" , emoy(:,:,:) * tmask(:,:,:) ) ! Photosynthetically Available Radiation 216 IF( knt == nrdttrc ) THEN 217 IF( iom_use( "Heup" ) ) CALL iom_put( "Heup" , heup(:,: ) * tmask(:,:,1) ) ! euphotic layer deptht 218 IF( iom_use( "PARDM" ) ) CALL iom_put( "PARDM", zpar(:,:,:) * tmask(:,:,:) ) ! Photosynthetically Available Radiation 219 IF( iom_use( "PAR" ) ) CALL iom_put( "PAR" , emoy(:,:,:) * tmask(:,:,:) ) ! Photosynthetically Available Radiation 258 220 ENDIF 259 221 ELSE 260 222 IF( ln_diatrc ) THEN ! save output diagnostics 261 trc2d(:,:, jp_pcs0_2d + 10) = heup(:,: ) * tmask(:,:,1) 223 trc2d(:,:, jp_pcs0_2d + 10) = heup(:,: ) * tmask(:,:,1) 262 224 trc3d(:,:,:,jp_pcs0_3d + 3) = etot(:,:,:) * tmask(:,:,:) 263 225 ENDIF 264 226 ENDIF 265 227 ! 266 CALL wrk_dealloc( jpi, jpj, z depmoy, zetmp, zetmp1, zetmp2)267 CALL wrk_dealloc( jpi, jpj, jpk, z ekg, zekr, zekb,ze0, ze1, ze2, ze3 )228 CALL wrk_dealloc( jpi, jpj, zqsr100, zdepmoy, zetmp1, zetmp2, zetmp3, zetmp4 ) 229 CALL wrk_dealloc( jpi, jpj, jpk, zpar, ze0, ze1, ze2, ze3 ) 268 230 ! 269 231 IF( nn_timing == 1 ) CALL timing_stop('p4z_opt') … … 271 233 END SUBROUTINE p4z_opt 272 234 273 SUBROUTINE p4z_optsbc( kt ) 274 !!---------------------------------------------------------------------- 275 !! *** routine p4z_optsbc *** 235 SUBROUTINE p4z_opt_par( kt, pqsr, pe1, pe2, pe3, pe0 ) 236 !!---------------------------------------------------------------------- 237 !! *** routine p4z_opt_par *** 238 !! 239 !! ** purpose : compute PAR of each wavelength (Red-Green-Blue) 240 !! for a given shortwave radiation 241 !! 242 !!---------------------------------------------------------------------- 243 !! * arguments 244 INTEGER, INTENT(in) :: kt ! ocean time-step 245 REAL(wp), DIMENSION(jpi,jpj) , INTENT(in) :: pqsr ! shortwave 246 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) :: pe1 , pe2 , pe3 ! PAR ( R-G-B) 247 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout), OPTIONAL :: pe0 248 !! * local variables 249 INTEGER :: ji, jj, jk ! dummy loop indices 250 REAL(wp), DIMENSION(jpi,jpj) :: zqsr ! shortwave 251 !!---------------------------------------------------------------------- 252 253 ! Real shortwave 254 IF( ln_varpar ) THEN ; zqsr(:,:) = par_varsw(:,:) * pqsr(:,:) 255 ELSE ; zqsr(:,:) = xparsw * pqsr(:,:) 256 ENDIF 257 ! 258 IF( PRESENT( pe0 ) ) THEN ! W-level 259 ! 260 pe0(:,:,1) = pqsr(:,:) - 3. * zqsr(:,:) ! ( 1 - 3 * alpha ) * q 261 pe1(:,:,1) = zqsr(:,:) 262 pe2(:,:,1) = zqsr(:,:) 263 pe3(:,:,1) = zqsr(:,:) 264 ! 265 DO jk = 2, nksrp + 1 266 !CDIR NOVERRCHK 267 DO jj = 1, jpj 268 !CDIR NOVERRCHK 269 DO ji = 1, jpi 270 pe0(ji,jj,jk) = pe0(ji,jj,jk-1) * EXP( -fse3t(ji,jj,jk-1) * xsi0r ) 271 pe1(ji,jj,jk) = pe1(ji,jj,jk-1) * EXP( -ekb(ji,jj,jk-1 ) ) 272 pe2(ji,jj,jk) = pe2(ji,jj,jk-1) * EXP( -ekg(ji,jj,jk-1 ) ) 273 pe3(ji,jj,jk) = pe3(ji,jj,jk-1) * EXP( -ekr(ji,jj,jk-1 ) ) 274 END DO 275 ! 276 END DO 277 ! 278 END DO 279 ! 280 ELSE ! T- level 281 ! 282 pe1(:,:,1) = zqsr(:,:) * EXP( -0.5 * ekb(:,:,1) ) 283 pe2(:,:,1) = zqsr(:,:) * EXP( -0.5 * ekg(:,:,1) ) 284 pe3(:,:,1) = zqsr(:,:) * EXP( -0.5 * ekr(:,:,1) ) 285 ! 286 DO jk = 2, nksrp 287 !CDIR NOVERRCHK 288 DO jj = 1, jpj 289 !CDIR NOVERRCHK 290 DO ji = 1, jpi 291 pe1(ji,jj,jk) = pe1(ji,jj,jk-1) * EXP( -0.5 * ( ekb(ji,jj,jk-1) + ekb(ji,jj,jk) ) ) 292 pe2(ji,jj,jk) = pe2(ji,jj,jk-1) * EXP( -0.5 * ( ekg(ji,jj,jk-1) + ekg(ji,jj,jk) ) ) 293 pe3(ji,jj,jk) = pe3(ji,jj,jk-1) * EXP( -0.5 * ( ekr(ji,jj,jk-1) + ekr(ji,jj,jk) ) ) 294 END DO 295 END DO 296 END DO 297 ! 298 ENDIF 299 ! 300 END SUBROUTINE p4z_opt_par 301 302 303 SUBROUTINE p4z_opt_sbc( kt ) 304 !!---------------------------------------------------------------------- 305 !! *** routine p4z_opt_sbc *** 276 306 !! 277 307 !! ** purpose : read and interpolate the variable PAR fraction … … 284 314 !!---------------------------------------------------------------------- 285 315 !! * arguments 286 INTEGER , INTENT( in ) :: kt! ocean time step316 INTEGER , INTENT(in) :: kt ! ocean time step 287 317 288 318 !! * local declarations … … 297 327 IF( kt == nit000 .OR. ( kt /= nit000 .AND. ntimes_par > 1 ) ) THEN 298 328 CALL fld_read( kt, 1, sf_par ) 299 par_varsw(:,:) = ( sf_par(1)%fnow(:,:,1) ) /3.0329 par_varsw(:,:) = ( sf_par(1)%fnow(:,:,1) ) / 3.0 300 330 ENDIF 301 331 ENDIF … … 303 333 IF( nn_timing == 1 ) CALL timing_stop('p4z_optsbc') 304 334 ! 305 END SUBROUTINE p4z_opt sbc335 END SUBROUTINE p4z_opt_sbc 306 336 307 337 SUBROUTINE p4z_opt_init … … 347 377 ! 348 378 xparsw = parlux / 3.0 379 xsi0r = 1.e0 / rn_si0 349 380 ! 350 381 ! Variable PAR at the surface of the ocean … … 372 403 IF(lwp) WRITE(numout,*) ' level of light extinction = ', nksrp, ' ref depth = ', gdepw_1d(nksrp+1), ' m' 373 404 ! 374 etot (:,:,:) = 0._wp 375 enano(:,:,:) = 0._wp 376 ediat(:,:,:) = 0._wp 377 IF( ln_qsr_bio ) etot3(:,:,:) = 0._wp 405 ekr (:,:,:) = 0._wp 406 ekb (:,:,:) = 0._wp 407 ekg (:,:,:) = 0._wp 408 etot (:,:,:) = 0._wp 409 etot_ndcy(:,:,:) = 0._wp 410 enano (:,:,:) = 0._wp 411 ediat (:,:,:) = 0._wp 412 IF( ln_qsr_bio ) etot3 (:,:,:) = 0._wp 378 413 ! 379 414 IF( nn_timing == 1 ) CALL timing_stop('p4z_opt_init') … … 386 421 !! *** ROUTINE p4z_opt_alloc *** 387 422 !!---------------------------------------------------------------------- 388 ALLOCATE( enano(jpi,jpj,jpk), ediat(jpi,jpj,jpk), emoy (jpi,jpj,jpk), STAT=p4z_opt_alloc ) 423 ALLOCATE( ekb(jpi,jpj,jpk) , ekr(jpi,jpj,jpk), ekg(jpi,jpj,jpk), & 424 & enano(jpi,jpj,jpk) , ediat(jpi,jpj,jpk), & 425 & etot_ndcy(jpi,jpj,jpk), emoy (jpi,jpj,jpk), STAT=p4z_opt_alloc ) 389 426 ! 390 427 IF( p4z_opt_alloc /= 0 ) CALL ctl_warn('p4z_opt_alloc : failed to allocate arrays.')
Note: See TracChangeset
for help on using the changeset viewer.