- Timestamp:
- 2018-10-29T15:20:26+01:00 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/dev_r5518_AMM15_package/NEMOGCM/NEMO/OPA_SRC/TRA/traqsr.F90
r10249 r10251 46 46 LOGICAL , PUBLIC :: ln_qsr_ice !: light penetration for ice-model LIM3 (clem) 47 47 INTEGER , PUBLIC :: nn_chldta !: use Chlorophyll data (=1) or not (=0) 48 INTEGER , PUBLIC :: nn_kd490dta !: use kd490dta data (=1) or not (=0)49 48 REAL(wp), PUBLIC :: rn_abs !: fraction absorbed in the very near surface (RGB & 2 bands) 50 49 REAL(wp), PUBLIC :: rn_si0 !: very near surface depth of extinction (RGB & 2 bands) … … 55 54 REAL(wp) :: xsi1r !: inverse of rn_si1 56 55 TYPE(FLD), ALLOCATABLE, DIMENSION(:) :: sf_chl ! structure of input Chl (file informations, fields read) 57 TYPE(FLD), ALLOCATABLE, DIMENSION(:) :: sf_kd490 ! structure of input kd490 (file informations, fields read)58 56 INTEGER, PUBLIC :: nksr ! levels below which the light cannot penetrate ( depth larger than 391 m) 59 57 REAL(wp), DIMENSION(3,61) :: rkrgb !: tabulated attenuation coefficients for RGB absorption … … 308 306 ! 309 307 ENDIF 310 ! slwa311 IF( nn_kd490dta == 1 ) THEN ! use KD490 data read in !312 ! ! ------------------------- !313 nksr = jpk - 1314 !315 CALL fld_read( kt, 1, sf_kd490 ) ! Read kd490 data and provide it at the current time step316 !317 zcoef = ( 1. - rn_abs )318 ze0(:,:,1) = rn_abs * qsr(:,:)319 ze1(:,:,1) = zcoef * qsr(:,:)320 zea(:,:,1) = qsr(:,:)321 !322 DO jk = 2, nksr+1323 !CDIR NOVERRCHK324 DO jj = 1, jpj325 !CDIR NOVERRCHK326 DO ji = 1, jpi327 zc0 = ze0(ji,jj,jk-1) * EXP( - fse3t(ji,jj,jk-1) * xsi0r )328 zc1 = ze1(ji,jj,jk-1) * EXP( - fse3t(ji,jj,jk-1) * sf_kd490(1)%fnow(ji,jj,1) )329 ze0(ji,jj,jk) = zc0330 ze1(ji,jj,jk) = zc1331 zea(ji,jj,jk) = ( zc0 + zc1 ) * tmask(ji,jj,jk)332 END DO333 END DO334 END DO335 ! clem: store attenuation coefficient of the first ocean level336 IF ( ln_qsr_ice ) THEN337 DO jj = 1, jpj338 DO ji = 1, jpi339 zzc0 = rn_abs * EXP( - fse3t(ji,jj,1) * xsi0r )340 zzc1 = zcoef * EXP( - fse3t(ji,jj,1) * sf_kd490(1)%fnow(ji,jj,1) )341 fraqsr_1lev(ji,jj) = 1.0 - ( zzc0 + zzc1 ) * tmask(ji,jj,2)342 END DO343 END DO344 ENDIF345 !346 DO jk = 1, nksr ! compute and add qsr trend to ta347 qsr_hc(:,:,jk) = r1_rau0_rcp * ( zea(:,:,jk) - zea(:,:,jk+1) )348 END DO349 zea(:,:,nksr+1:jpk) = 0.e0 !350 CALL iom_put( 'qsr3d', zea ) ! Shortwave Radiation 3D distribution351 !352 ENDIF ! use KD490 data353 !slwa354 308 ! 355 309 ! Add to the general trend … … 420 374 CHARACTER(len=100) :: cn_dir ! Root directory for location of ssr files 421 375 TYPE(FLD_N) :: sn_chl ! informations about the chlorofyl field to be read 422 TYPE(FLD_N) :: sn_kd490 ! informations about the kd490 field to be read 423 !! 424 NAMELIST/namtra_qsr/ sn_chl, sn_kd490, cn_dir, ln_traqsr, ln_qsr_rgb, ln_qsr_2bd, ln_qsr_bio, ln_qsr_ice, & 425 & nn_chldta, rn_abs, rn_si0, rn_si1, nn_kd490dta 376 !! 377 NAMELIST/namtra_qsr/ sn_chl, cn_dir, ln_traqsr, ln_qsr_rgb, ln_qsr_2bd, ln_qsr_bio, ln_qsr_ice, & 378 & nn_chldta, rn_abs, rn_si0, rn_si1 426 379 !!---------------------------------------------------------------------- 427 380 … … 456 409 WRITE(numout,*) ' RGB & 2 bands: shortess depth of extinction rn_si0 = ', rn_si0 457 410 WRITE(numout,*) ' 2 bands: longest depth of extinction rn_si1 = ', rn_si1 458 WRITE(numout,*) ' read in KD490 data nn_kd490dta = ', nn_kd490dta459 411 ENDIF 460 412 … … 470 422 IF( ln_qsr_2bd ) ioptio = ioptio + 1 471 423 IF( ln_qsr_bio ) ioptio = ioptio + 1 472 IF( nn_kd490dta == 1 ) ioptio = ioptio + 1473 424 ! 474 425 IF( ioptio /= 1 ) & … … 480 431 IF( ln_qsr_2bd ) nqsr = 3 481 432 IF( ln_qsr_bio ) nqsr = 4 482 IF( nn_kd490dta == 1 ) nqsr = 5483 433 ! 484 434 IF(lwp) THEN ! Print the choice … … 488 438 IF( nqsr == 3 ) WRITE(numout,*) ' 2 bands light penetration' 489 439 IF( nqsr == 4 ) WRITE(numout,*) ' bio-model light penetration' 490 IF( nqsr == 5 ) WRITE(numout,*) ' KD490 light penetration'491 440 ENDIF 492 441 ! … … 498 447 xsi0r = 1.e0 / rn_si0 499 448 xsi1r = 1.e0 / rn_si1 500 IF( nn_kd490dta == 1 ) THEN !* KD490 data : set sf_kd490 structure501 IF(lwp) WRITE(numout,*)502 IF(lwp) WRITE(numout,*) ' KD490 read in a file'503 ALLOCATE( sf_kd490(1), STAT=ierror )504 IF( ierror > 0 ) THEN505 CALL ctl_stop( 'tra_qsr_init: unable to allocate sf_kd490 structure' ) ; RETURN506 ENDIF507 ALLOCATE( sf_kd490(1)%fnow(jpi,jpj,1) )508 IF( sn_kd490%ln_tint )ALLOCATE( sf_kd490(1)%fdta(jpi,jpj,1,2) )509 ! ! fill sf_kd490 with sn_kd490 and control print510 CALL fld_fill( sf_kd490, (/ sn_kd490 /), cn_dir, 'tra_qsr_init', &511 & 'Solar penetration function of read KD490', 'namtra_qsr' )512 449 ! ! ---------------------------------- ! 513 ELSEIF( ln_qsr_rgb ) THEN ! Red-Green-Blue light penetration !450 IF( ln_qsr_rgb ) THEN ! Red-Green-Blue light penetration ! 514 451 ! ! ---------------------------------- ! 515 452 !
Note: See TracChangeset
for help on using the changeset viewer.