Changeset 4038 for branches/2013/dev_r4028_CNRS_LIM3
- Timestamp:
- 2013-09-25T15:32:29+02:00 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2013/dev_r4028_CNRS_LIM3/NEMOGCM/NEMO/OPA_SRC/TRA/traqsr.F90
r3680 r4038 10 10 !! - ! 2005-11 (G. Madec) zco, zps, sco coordinate 11 11 !! 3.2 ! 2009-04 (G. Madec & NEMO team) 12 !! 4.0 ! 2012-05 (C. Rousset) store attenuation coef for use in ice model 12 13 !!---------------------------------------------------------------------- 13 14 … … 27 28 USE iom ! I/O manager 28 29 USE fldread ! read input fields 30 USE restart ! ocean restart 29 31 USE lib_mpp ! MPP library 30 32 USE wrk_nemo ! Memory Allocation … … 43 45 LOGICAL , PUBLIC :: ln_qsr_2bd = .TRUE. !: 2 band light absorption flag 44 46 LOGICAL , PUBLIC :: ln_qsr_bio = .FALSE. !: bio-model light absorption flag 47 LOGICAL , PUBLIC :: ln_qsr_ice = .FALSE. !: light penetration for ice-model LIM3 (clem) 45 48 INTEGER , PUBLIC :: nn_chldta = 0 !: use Chlorophyll data (=1) or not (=0) 46 49 REAL(wp), PUBLIC :: rn_abs = 0.58_wp !: fraction absorbed in the very near surface (RGB & 2 bands) … … 99 102 REAL(wp) :: zchl, zcoef, zfact ! local scalars 100 103 REAL(wp) :: zc0, zc1, zc2, zc3 ! - - 104 REAL(wp) :: zzc0, zzc1, zzc2, zzc3 ! - - 101 105 REAL(wp) :: zz0, zz1, z1_e3t ! - - 102 106 REAL(wp), POINTER, DIMENSION(:,: ) :: zekb, zekg, zekr … … 158 162 END DO 159 163 CALL iom_put( 'qsr3d', etot3 ) ! Shortwave Radiation 3D distribution 164 ! clem: store attenuation coefficient of the first ocean level 165 IF ( ln_qsr_ice ) THEN 166 DO jj = 1, jpj 167 DO ji = 1, jpi 168 IF ( qsr(ji,jj) /= 0._wp ) THEN 169 oatte(ji,jj) = ( qsr_hc(ji,jj,1) / ( r1_rau0_rcp * qsr(ji,jj) ) ) 170 iatte(ji,jj) = oatte(ji,jj) 171 ENDIF 172 END DO 173 END DO 174 ENDIF 160 175 ! ! ============================================== ! 161 176 ELSE ! Ocean alone : … … 216 231 END DO 217 232 END DO 233 ! clem: store attenuation coefficient of the first ocean level 234 IF ( ln_qsr_ice ) THEN 235 DO jj = 1, jpj 236 DO ji = 1, jpi 237 zzc0 = rn_abs * EXP( - fse3t(ji,jj,1) * xsi0r ) 238 zzc1 = zcoef * EXP( - fse3t(ji,jj,1) * zekb(ji,jj) ) 239 zzc2 = zcoef * EXP( - fse3t(ji,jj,1) * zekg(ji,jj) ) 240 zzc3 = zcoef * EXP( - fse3t(ji,jj,1) * zekr(ji,jj) ) 241 oatte(ji,jj) = 1.0 - ( zzc0 + zzc1 + zzc2 + zzc3 ) * tmask(ji,jj,2) 242 iatte(ji,jj) = 1.0 - ( zzc0 + zzc1 + zcoef + zcoef ) * tmask(ji,jj,2) 243 END DO 244 END DO 245 ENDIF 218 246 ! 219 247 DO jk = 1, nksr ! compute and add qsr trend to ta … … 227 255 qsr_hc(:,:,jk) = etot3(:,:,jk) * qsr(:,:) 228 256 END DO 229 ENDIF 257 ! clem: store attenuation coefficient of the first ocean level 258 IF ( ln_qsr_ice ) THEN 259 oatte(:,:) = etot3(:,:,1) / r1_rau0_rcp 260 iatte(:,:) = oatte(:,:) 261 ENDIF 262 ENDIF 230 263 231 264 ENDIF … … 246 279 END DO 247 280 END DO 281 ! clem: store attenuation coefficient of the first ocean level 282 IF ( ln_qsr_ice ) THEN 283 DO jj = 1, jpj 284 DO ji = 1, jpi 285 zc0 = zz0 * EXP( -fsdepw(ji,jj,1)*xsi0r ) + zz1 * EXP( -fsdepw(ji,jj,1)*xsi1r ) 286 zc1 = zz0 * EXP( -fsdepw(ji,jj,2)*xsi0r ) + zz1 * EXP( -fsdepw(ji,jj,2)*xsi1r ) 287 oatte(ji,jj) = ( zc0*tmask(ji,jj,1) - zc1*tmask(ji,jj,2) ) / r1_rau0_rcp 288 iatte(ji,jj) = oatte(ji,jj) 289 END DO 290 END DO 291 ENDIF 248 292 ELSE !* constant volume: coef. computed one for all 249 293 DO jk = 1, nksr … … 254 298 END DO 255 299 END DO 300 ! clem: store attenuation coefficient of the first ocean level 301 IF ( ln_qsr_ice ) THEN 302 oatte(:,:) = etot3(:,:,1) / r1_rau0_rcp 303 iatte(:,:) = oatte(:,:) 304 ENDIF 256 305 ! 257 306 ENDIF … … 270 319 ! 271 320 ENDIF 321 ! clem: store attenuation coefficient of the first ocean level 322 !IF (ln_traqsr) THEN 323 ! DO jj = 1, jpj 324 ! DO ji = 1, jpi 325 ! IF ( qsr(ji,jj) /= 0._wp ) THEN 326 ! oatte(ji,jj) = qsr_hc(ji,jj,1) / ( r1_rau0_rcp * qsr(ji,jj) ) 327 ! iatte(ji,jj) = qsr_hc(ji,jj,1) / ( r1_rau0_rcp * qsr(ji,jj) ) 328 ! ENDIF 329 ! END DO 330 ! END DO 331 !END IF 272 332 ! 273 333 IF( lrst_oce ) THEN ! Write in the ocean restart file … … 325 385 TYPE(FLD_N) :: sn_chl ! informations about the chlorofyl field to be read 326 386 !! 327 NAMELIST/namtra_qsr/ sn_chl, cn_dir, ln_traqsr, ln_qsr_rgb, ln_qsr_2bd, ln_qsr_bio, &387 NAMELIST/namtra_qsr/ sn_chl, cn_dir, ln_traqsr, ln_qsr_rgb, ln_qsr_2bd, ln_qsr_bio, ln_qsr_ice, & 328 388 & nn_chldta, rn_abs, rn_si0, rn_si1 329 389 !!---------------------------------------------------------------------- … … 331 391 ! 332 392 IF( nn_timing == 1 ) CALL timing_start('tra_qsr_init') 393 ! 394 ! clem init for oatte and iatte 395 oatte(:,:) = 1._wp 396 iatte(:,:) = 1._wp 333 397 ! 334 398 CALL wrk_alloc( jpi, jpj, zekb, zekg, zekr ) … … 354 418 WRITE(numout,*) ' 2 band light penetration ln_qsr_2bd = ', ln_qsr_2bd 355 419 WRITE(numout,*) ' bio-model light penetration ln_qsr_bio = ', ln_qsr_bio 420 WRITE(numout,*) ' light penetration for ice-model LIM3 ln_qsr_ice = ', ln_qsr_ice 356 421 WRITE(numout,*) ' RGB : Chl data (=1) or cst value (=0) nn_chldta = ', nn_chldta 357 422 WRITE(numout,*) ' RGB & 2 bands: fraction of light (rn_si1) rn_abs = ', rn_abs
Note: See TracChangeset
for help on using the changeset viewer.