- Timestamp:
- 2014-11-27T16:41:22+01:00 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2014/dev_CNRS_2014/NEMOGCM/NEMO/OPA_SRC/TRA/traqsr.F90
r4897 r4901 10 10 !! - ! 2005-11 (G. Madec) zco, zps, sco coordinate 11 11 !! 3.2 ! 2009-04 (G. Madec & NEMO team) 12 !! 3.6! 2012-05 (C. Rousset) store attenuation coef for use in ice model12 !! 4.0 ! 2012-05 (C. Rousset) store attenuation coef for use in ice model 13 13 !!---------------------------------------------------------------------- 14 14 … … 17 17 !! tra_qsr_init : solar radiation penetration initialization 18 18 !!---------------------------------------------------------------------- 19 USE oce ! ocean dynamics and active tracers 20 USE dom_oce ! ocean space and time domain 21 USE sbc_oce ! surface boundary condition: ocean 22 USE trc_oce ! share SMS/Ocean variables 23 USE trd_oce ! trends: ocean variables 24 USE trdtra ! trends manager: tracers 25 USE phycst ! physical constants 26 USE sbc_ice, ONLY : lk_lim3 27 ! 28 USE in_out_manager ! I/O manager 29 USE prtctl ! Print control 30 USE iom ! I/O manager 31 USE fldread ! read input fields 32 USE lib_mpp ! MPP library 19 USE oce ! ocean dynamics and active tracers 20 USE dom_oce ! ocean space and time domain 21 USE sbc_oce ! surface boundary condition: ocean 22 USE trc_oce ! share SMS/Ocean variables 23 USE trdmod_oce ! ocean variables trends 24 USE trdtra ! ocean active tracers trends 25 USE in_out_manager ! I/O manager 26 USE phycst ! physical constants 27 USE prtctl ! Print control 28 USE iom ! I/O manager 29 USE fldread ! read input fields 30 USE restart ! ocean restart 31 USE lib_mpp ! MPP library 33 32 USE wrk_nemo ! Memory Allocation 34 33 USE timing ! Timing 34 USE sbc_ice, ONLY : lk_lim3 35 35 36 36 IMPLICIT NONE … … 51 51 REAL(wp), PUBLIC :: rn_si1 !: deepest depth of extinction (water type I) (2 bands) 52 52 53 INTEGER , PUBLIC :: nksr !: levels below which the light cannot penetrate ( depth larger than 391 m) 54 55 REAL(wp) :: xsi0r, xsi1r ! inverse of rn_si0 and rn_si1, resp. 56 REAL(wp), DIMENSION(3,61) :: rkrgb ! tabulated attenuation coefficients for RGB absorption 53 ! Module variables 54 REAL(wp) :: xsi0r !: inverse of rn_si0 55 REAL(wp) :: xsi1r !: inverse of rn_si1 57 56 TYPE(FLD), ALLOCATABLE, DIMENSION(:) :: sf_chl ! structure of input Chl (file informations, fields read) 57 INTEGER, PUBLIC :: nksr ! levels below which the light cannot penetrate ( depth larger than 391 m) 58 REAL(wp), DIMENSION(3,61) :: rkrgb !: tabulated attenuation coefficients for RGB absorption 58 59 59 60 !! * Substitutions … … 89 90 !! 90 91 !! ** Action : - update ta with the penetrative solar radiation trend 91 !! - s end the trend to trdtra (l_trdtra=T)92 !! - save the trend in ttrd ('key_trdtra') 92 93 !! 93 94 !! Reference : Jerlov, N. G., 1968 Optical Oceanography, Elsevier, 194pp. 94 95 !! Lengaigne et al. 2007, Clim. Dyn., V28, 5, 503-516. 95 96 !!---------------------------------------------------------------------- 97 ! 96 98 INTEGER, INTENT(in) :: kt ! ocean time-step 97 99 ! … … 118 120 ENDIF 119 121 120 IF( l_trdtra ) THEN ! Save t emperaturetrends122 IF( l_trdtra ) THEN ! Save ta and sa trends 121 123 CALL wrk_alloc( jpi, jpj, jpk, ztrdt ) 122 124 ztrdt(:,:,:) = tsa(:,:,:,jp_tem) … … 143 145 ! Compute now qsr tracer content field 144 146 ! ************************************ 147 145 148 ! ! ============================================== ! 146 149 IF( lk_qsr_bio .AND. ln_qsr_bio ) THEN ! bio-model fluxes : all vertical coordinates ! … … 164 167 DO ji = 1, jpi 165 168 IF ( qsr(ji,jj) /= 0._wp ) THEN 166 oatte(ji,jj) = ( qsr_hc(ji,jj,1) / ( r1_rau0_rcp * qsr(ji,jj) ) ) 167 iatte(ji,jj) = oatte(ji,jj) 169 fraqsr_1lev(ji,jj) = ( qsr_hc(ji,jj,1) / ( r1_rau0_rcp * qsr(ji,jj) ) ) 168 170 ENDIF 169 171 END DO … … 180 182 IF( nn_chldta == 1 .OR. lk_vvl ) THEN !* Variable Chlorophyll or ocean volume 181 183 ! 182 IF( nn_chldta == 1 ) THEN ! -Variable Chlorophyll184 IF( nn_chldta == 1 ) THEN !* Variable Chlorophyll 183 185 ! 184 186 CALL fld_read( kt, 1, sf_chl ) ! Read Chl data and provides it at the current time step … … 196 198 END DO 197 199 END DO 198 ELSE !-Variable ocean volume but constant chrlorophyll199 zchl = 0.05 200 ELSE ! Variable ocean volume but constant chrlorophyll 201 zchl = 0.05 ! constant chlorophyll 200 202 irgb = NINT( 41 + 20.*LOG10( zchl ) + 1.e-15 ) 201 zekb(:,:) = rkrgb(1,irgb) 203 zekb(:,:) = rkrgb(1,irgb) ! Separation in R-G-B depending of the chlorophyll 202 204 zekg(:,:) = rkrgb(2,irgb) 203 205 zekr(:,:) = rkrgb(3,irgb) 204 206 ENDIF 205 207 ! 206 zcoef = ( 1. - rn_abs ) / 3.e0 !-equi-partition in R-G-B207 ze0(:,:,1) = rn_abs * qsr(:,:)208 ze1(:,:,1) = 209 ze2(:,:,1) = 210 ze3(:,:,1) = 211 zea(:,:,1) = 208 zcoef = ( 1. - rn_abs ) / 3.e0 ! equi-partition in R-G-B 209 ze0(:,:,1) = rn_abs * qsr(:,:) 210 ze1(:,:,1) = zcoef * qsr(:,:) 211 ze2(:,:,1) = zcoef * qsr(:,:) 212 ze3(:,:,1) = zcoef * qsr(:,:) 213 zea(:,:,1) = qsr(:,:) 212 214 ! 213 215 DO jk = 2, nksr+1 … … 236 238 zzc2 = zcoef * EXP( - fse3t(ji,jj,1) * zekg(ji,jj) ) 237 239 zzc3 = zcoef * EXP( - fse3t(ji,jj,1) * zekr(ji,jj) ) 238 oatte(ji,jj) = 1.0 - ( zzc0 + zzc1 + zzc2 + zzc3 ) * tmask(ji,jj,2) 239 iatte(ji,jj) = 1.0 - ( zzc0 + zzc1 + zcoef + zcoef ) * tmask(ji,jj,2) 240 fraqsr_1lev(ji,jj) = 1.0 - ( zzc0 + zzc1 + zzc2 + zzc3 ) * tmask(ji,jj,2) 240 241 END DO 241 242 END DO … … 254 255 ! clem: store attenuation coefficient of the first ocean level 255 256 IF ( lk_lim3 .AND. ln_qsr_ice ) THEN 256 257 !!gm BUG ?????? ? ? ? 258 oatte(:,:) = etot3(:,:,1) / r1_rau0_rcp 259 iatte(:,:) = oatte(:,:) 257 fraqsr_1lev(:,:) = etot3(:,:,1) / r1_rau0_rcp 260 258 ENDIF 261 259 ENDIF … … 284 282 zc0 = zz0 * EXP( -fsdepw(ji,jj,1)*xsi0r ) + zz1 * EXP( -fsdepw(ji,jj,1)*xsi1r ) 285 283 zc1 = zz0 * EXP( -fsdepw(ji,jj,2)*xsi0r ) + zz1 * EXP( -fsdepw(ji,jj,2)*xsi1r ) 286 oatte(ji,jj) = ( zc0*tmask(ji,jj,1) - zc1*tmask(ji,jj,2) ) / r1_rau0_rcp 287 iatte(ji,jj) = oatte(ji,jj) 284 fraqsr_1lev(ji,jj) = ( zc0*tmask(ji,jj,1) - zc1*tmask(ji,jj,2) ) / r1_rau0_rcp 288 285 END DO 289 286 END DO … … 299 296 ! clem: store attenuation coefficient of the first ocean level 300 297 IF ( lk_lim3 .AND. ln_qsr_ice ) THEN 301 oatte(:,:) = etot3(:,:,1) / r1_rau0_rcp 302 iatte(:,:) = oatte(:,:) 298 fraqsr_1lev(:,:) = etot3(:,:,1) / r1_rau0_rcp 303 299 ENDIF 304 300 ! … … 331 327 IF( l_trdtra ) THEN ! qsr tracers trends saved for diagnostics 332 328 ztrdt(:,:,:) = tsa(:,:,:,jp_tem) - ztrdt(:,:,:) 333 CALL trd_tra( kt, 'TRA', jp_tem, jptra_ qsr, ztrdt )329 CALL trd_tra( kt, 'TRA', jp_tem, jptra_trd_qsr, ztrdt ) 334 330 CALL wrk_dealloc( jpi, jpj, jpk, ztrdt ) 335 331 ENDIF … … 362 358 !! Reference : Jerlov, N. G., 1968 Optical Oceanography, Elsevier, 194pp. 363 359 !!---------------------------------------------------------------------- 360 ! 364 361 INTEGER :: ji, jj, jk ! dummy loop indices 365 362 INTEGER :: irgb, ierror, ioptio, nqsr ! local integer … … 380 377 IF( nn_timing == 1 ) CALL timing_start('tra_qsr_init') 381 378 ! 382 ! clem init for oatte and iatte379 ! Default value for fraqsr_1lev 383 380 IF( .NOT. ln_rstart ) THEN 384 oatte(:,:) = 1._wp 385 iatte(:,:) = 1._wp 381 fraqsr_1lev(:,:) = 1._wp 386 382 ENDIF 387 383 !
Note: See TracChangeset
for help on using the changeset viewer.