- Timestamp:
- 2020-09-21T12:33:32+02:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/AMM15_v3_6_STABLE_package_collate_utils366_fabmv1_v2/NEMOGCM/NEMO/OPA_SRC/TRA/traqsr.F90
r13489 r13496 32 32 USE wrk_nemo ! Memory Allocation 33 33 USE timing ! Timing 34 #if defined key_fabm 35 USE trc, ONLY: trn ! FABM variables 36 USE par_fabm ! FABM parameters 37 #endif 34 38 35 39 IMPLICIT NONE … … 107 111 REAL(wp) :: zz0, zz1, z1_e3t ! - - 108 112 REAL(wp), POINTER, DIMENSION(:,: ) :: zekb, zekg, zekr 113 REAL(wp), POINTER, DIMENSION(:,:,:) :: zekb_3d, zekg_3d, zekr_3d 109 114 REAL(wp), POINTER, DIMENSION(:,:,:) :: ze0, ze1, ze2, ze3, zea, ztrdt 110 115 !!---------------------------------------------------------------------- … … 114 119 CALL wrk_alloc( jpi, jpj, zekb, zekg, zekr ) 115 120 CALL wrk_alloc( jpi, jpj, jpk, ze0, ze1, ze2, ze3, zea ) 121 CALL wrk_alloc( jpi, jpj, jpk, zekb_3d, zekg_3d, zekr_3d ) 116 122 ! 117 123 IF( kt == nit000 ) THEN … … 215 221 ! ! ------------------------- ! 216 222 ! Set chlorophyl concentration 217 IF( nn_chldta == 1 .OR. lk_vvl ) THEN !* Variable Chlorophyll or ocean volume 218 ! 219 IF( nn_chldta == 1 ) THEN !* Variable Chlorophyll 223 IF( nn_chldta == 2 .OR. nn_chldta == 1 .OR. lk_vvl ) THEN !* Variable Chlorophyll or ocean volume 224 ! 225 IF( nn_chldta == 2 ) THEN 226 DO jk = 1, nksr+1 227 DO jj = 1, jpj 228 DO ji = 1, jpi 229 #if defined key_fabm 230 zchl = trn(ji,jj,jk,jp_fabm_m1+jp_fabm_chl1) + trn(ji,jj,jk,jp_fabm_m1+jp_fabm_chl2) + & 231 & trn(ji,jj,jk,jp_fabm_m1+jp_fabm_chl3) + trn(ji,jj,jk,jp_fabm_m1+jp_fabm_chl4) 232 #endif 233 zchl = MIN( 10. , MAX( 0.03, zchl ) ) 234 irgb = NINT( 41 + 20.*LOG10(zchl) + 1.e-15 ) 235 ! 236 zekb_3d(ji,jj,jk) = rkrgb(1,irgb) 237 zekg_3d(ji,jj,jk) = rkrgb(2,irgb) 238 zekr_3d(ji,jj,jk) = rkrgb(3,irgb) 239 END DO 240 END DO 241 END DO 242 ! 243 ELSEIF( nn_chldta == 1 ) THEN !* Variable Chlorophyll 220 244 ! 221 245 CALL fld_read( kt, 1, sf_chl ) ! Read Chl data and provides it at the current time step … … 249 273 ! 250 274 DO jk = 2, nksr+1 275 IF( nn_chldta == 2 ) THEN 276 zekb(:,:) = zekb_3d(:,:,jk) 277 zekg(:,:) = zekg_3d(:,:,jk) 278 zekr(:,:) = zekr_3d(:,:,jk) 279 ENDIF 251 280 !CDIR NOVERRCHK 252 281 DO jj = 1, jpj … … 267 296 ! clem: store attenuation coefficient of the first ocean level 268 297 IF ( ln_qsr_ice ) THEN 298 IF( nn_chldta == 2 ) THEN 299 zekb(:,:) = zekb_3d(:,:,1) 300 zekg(:,:) = zekg_3d(:,:,1) 301 zekr(:,:) = zekr_3d(:,:,1) 302 ENDIF 269 303 DO jj = 1, jpj 270 304 DO ji = 1, jpi … … 416 450 CALL wrk_dealloc( jpi, jpj, zekb, zekg, zekr ) 417 451 CALL wrk_dealloc( jpi, jpj, jpk, ze0, ze1, ze2, ze3, zea ) 452 CALL wrk_dealloc( jpi, jpj, jpk, zekb_3d, zekg_3d, zekr_3d ) 418 453 ! 419 454 IF( nn_timing == 1 ) CALL timing_stop('tra_qsr') … … 483 518 WRITE(numout,*) ' ERSEM spectral heating model ln_qsr_spec= ', ln_qsr_spec 484 519 WRITE(numout,*) ' light penetration for ice-model LIM3 ln_qsr_ice = ', ln_qsr_ice 485 WRITE(numout,*) ' RGB : Chl data (=1) or cst value (=0) nn_chldta= ', nn_chldta520 WRITE(numout,*) ' RGB: model (2), file (1) or cst (0) chl nn_chldta = ', nn_chldta 486 521 WRITE(numout,*) ' RGB & 2 bands: fraction of light (rn_si1) rn_abs = ', rn_abs 487 522 WRITE(numout,*) ' RGB & 2 bands: shortess depth of extinction rn_si0 = ', rn_si0 … … 510 545 IF( ln_qsr_rgb .AND. nn_chldta == 0 ) nqsr = 1 511 546 IF( ln_qsr_rgb .AND. nn_chldta == 1 ) nqsr = 2 512 IF( ln_qsr_2bd ) nqsr = 3 513 IF( ln_qsr_bio ) nqsr = 4 514 IF( nn_kd490dta == 1 ) nqsr = 5 515 IF( ln_qsr_spec ) nqsr = 6 547 IF( ln_qsr_rgb .AND. nn_chldta == 2 ) nqsr = 3 548 IF( ln_qsr_2bd ) nqsr = 4 549 IF( ln_qsr_bio ) nqsr = 5 550 IF( nn_kd490dta == 1 ) nqsr = 6 551 IF( ln_qsr_spec ) nqsr = 7 516 552 ! 517 553 IF(lwp) THEN ! Print the choice 518 554 WRITE(numout,*) 519 555 IF( nqsr == 1 ) WRITE(numout,*) ' R-G-B light penetration - Constant Chlorophyll' 520 IF( nqsr == 2 ) WRITE(numout,*) ' R-G-B light penetration - Chl data ' 521 IF( nqsr == 3 ) WRITE(numout,*) ' 2 bands light penetration' 522 IF( nqsr == 4 ) WRITE(numout,*) ' bio-model light penetration' 523 IF( nqsr == 5 ) WRITE(numout,*) ' KD490 light penetration' 524 IF( nqsr == 6 ) WRITE(numout,*) ' ERSEM spectral light penetration' 556 IF( nqsr == 2 ) WRITE(numout,*) ' R-G-B light penetration - Chl data from file' 557 IF( nqsr == 3 ) WRITE(numout,*) ' R-G-B light penetration - Chl data from model' 558 IF( nqsr == 4 ) WRITE(numout,*) ' 2 bands light penetration' 559 IF( nqsr == 5 ) WRITE(numout,*) ' bio-model light penetration' 560 IF( nqsr == 6 ) WRITE(numout,*) ' KD490 light penetration' 561 IF( nqsr == 7 ) WRITE(numout,*) ' ERSEM spectral light penetration' 525 562 ENDIF 526 563 #if ! defined key_fabm 527 564 ! 528 IF( nqsr == 6 ) THEN 565 IF( nqsr == 2 ) THEN 566 CALL ctl_stop( 'nn_chldta=2 so trying to use ERSEM chlorophyll for light penetration', & 567 & 'but not running with ERSEM' ) 568 ELSEIF( nqsr == 7 ) THEN 529 569 CALL ctl_stop( 'ln_qsr_spec=.true. so trying to use ERSEM spectral light penetration', & 530 570 & 'but not running with ERSEM' ) … … 577 617 & 'Solar penetration function of read chlorophyll', 'namtra_qsr' ) 578 618 ! 619 ELSEIF( nn_chldta == 2 ) THEN !* Chl data will be got from model at each time step 620 IF(lwp) WRITE(numout,*) 621 IF(lwp) WRITE(numout,*) ' Chlorophyll will be taken from model at each time step' 579 622 ELSE !* constant Chl : compute once for all the distribution of light (etot3) 580 623 IF(lwp) WRITE(numout,*)
Note: See TracChangeset
for help on using the changeset viewer.