Changeset 3858 for branches/2013/dev_r3856_MERCATOR3_QSRMEAN24H
- Timestamp:
- 2013-04-03T11:59:02+02:00 (11 years ago)
- Location:
- branches/2013/dev_r3856_MERCATOR3_QSRMEAN24H/NEMOGCM/NEMO
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2013/dev_r3856_MERCATOR3_QSRMEAN24H/NEMOGCM/NEMO/LIM_SRC_2/ice_2.F90
r3625 r3858 62 62 63 63 !!* Ice Rheology 64 65 LOGICAL , PUBLIC:: ltrcdm2dc_ice = .FALSE. !: In case of Diurnal Cycle short wave, compute a Daily Mean short waves flux 66 64 67 # if defined key_lim2_vp 65 68 ! !!* VP rheology * … … 107 110 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: qdtcn !: energy from the ice to the ocean point (at a factor 2) 108 111 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: thcm !: part of the solar energy used in the lead heat budget 112 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: fstric_daymean!: Solar flux transmitted trough the ice, for day mean of qsr ( PISCES, with dirunal cycle ) 109 113 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: fstric !: Solar flux transmitted trough the ice 110 114 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: ffltbif !: linked with the max heat contained in brine pockets (?) … … 166 170 & tbif (jpi,jpj,jplayersp1) , STAT=ierr(5)) 167 171 172 IF( ltrcdm2dc_ice ) ALLOCATE(fstric_daymean(jpi,jpj), STAT=ierr(6) ) 173 168 174 !* moment used in the advection scheme 169 175 ALLOCATE(sxice (jpi,jpj) , syice (jpi,jpj) , sxxice(jpi,jpj) , & -
branches/2013/dev_r3856_MERCATOR3_QSRMEAN24H/NEMOGCM/NEMO/LIM_SRC_2/limsbc_2.F90
r3625 r3858 47 47 PUBLIC lim_sbc_flx_2 ! called by sbc_ice_lim_2 48 48 PUBLIC lim_sbc_tau_2 ! called by sbc_ice_lim_2 49 PUBLIC lim_bio_meanqsr_2 ! called by sbc_ice_lim_2 49 50 50 51 REAL(wp) :: r1_rdtice ! = 1. / rdt_ice … … 433 434 END SUBROUTINE lim_sbc_tau_2 434 435 436 SUBROUTINE lim_bio_meanqsr_2 437 !!--------------------------------------------------------------------- 438 !! *** ROUTINE lim_bio_meanqsr 439 !! 440 !! ** Purpose : provide daily qsr_mean for PISCES when 441 !! analytic diurnal cycle is applied in physic 442 !! 443 !! ** Method : add part under ice 444 !! 445 !!--------------------------------------------------------------------- 446 447 qsr_mean(:,:) = qsr_mean(:,:) + ( 1. - frld(:,:) ) * fstric_daymean(:,:) 448 449 END SUBROUTINE lim_bio_meanqsr_2 435 450 436 451 SUBROUTINE lim_sbc_init_2 -
branches/2013/dev_r3856_MERCATOR3_QSRMEAN24H/NEMOGCM/NEMO/LIM_SRC_2/limthd_2.F90
r3625 r3858 139 139 rdq_ice(:,:) = 0.e0 ! heat content associated with rdm_ice 140 140 zmsk (:,:,:) = 0.e0 141 IF( ltrcdm2dc_ice ) fstric_daymean (:,:) = 0.e0 ! part of solar radiation absorbing inside the ice 141 142 142 143 ! set to zero snow thickness smaller than epsi04 … … 335 336 CALL tab_1d_2d_2( nbpb, qsr_ice(:,:,1), npb, qsr_ice_1d(1:nbpb) , jpi, jpj ) 336 337 CALL tab_1d_2d_2( nbpb, qns_ice(:,:,1), npb, qns_ice_1d(1:nbpb) , jpi, jpj ) 337 IF( .NOT. lk_cpl ) CALL tab_1d_2d_2( nbpb, qla_ice(:,:,1), npb, qla_ice_1d(1:nbpb) , jpi, jpj ) 338 IF( .NOT. lk_cpl ) CALL tab_1d_2d_2( nbpb, qla_ice(:,:,1), npb, qla_ice_1d(1:nbpb) , jpi, jpj ) 339 IF( ltrcdm2dc_ice ) CALL tab_1d_2d_2( nbpb, fstric_daymean, npb, fstbif_daymean_1d (1:nbpb) , jpi, jpj ) 338 340 ! 339 341 ENDIF -
branches/2013/dev_r3856_MERCATOR3_QSRMEAN24H/NEMOGCM/NEMO/LIM_SRC_2/limthd_zdf_2.F90
r3625 r3858 273 273 END DO 274 274 275 IF( ltrcdm2dc_ice )THEN 276 277 DO ji = kideb , kiut 278 zihsn = MAX( zzero , SIGN (zone , -h_snow_1d(ji) ) ) 279 zihic = MAX( zzero , 1.0 - ( h_ice_1d(ji) / zhsu ) ) 280 zi0(ji) = zihsn * ( fr1_i0_1d(ji) + zihic * fr2_i0_1d(ji) ) 281 zexp = MIN( zone , EXP( -1.5 * ( h_ice_1d(ji) - zhsu ) ) ) 282 fstbif_daymean_1d(ji) = zi0(ji) * qsr_ice_1d(ji) * zexp 283 END DO 284 285 ENDIF 286 275 287 !-------------------------------------------------------------------------------- 276 288 ! 4. Computation of the surface temperature : determined by considering the -
branches/2013/dev_r3856_MERCATOR3_QSRMEAN24H/NEMOGCM/NEMO/LIM_SRC_2/thd_ice_2.F90
r3625 r3858 13 13 !!---------------------------------------------------------------------- 14 14 USE par_ice_2 15 USE ice_2 15 16 16 17 IMPLICIT NONE … … 54 55 fstbif_1d , & !: " " fstric 55 56 fltbif_1d , & !: " " ffltbif 57 fstbif_daymean_1d, & !: " " fstric_daymean 56 58 fscbq_1d , & !: " " fscmcbq 57 59 qsr_ice_1d , & !: " " qsr_ice … … 119 121 & tbif_1d(jpij, jplayersp1), Stat=ierr(4)) 120 122 ! 123 IF( ltrcdm2dc_ice )ALLOCATE(fstbif_daymean_1d(jpij),Stat=ierr(5)) 124 ! 121 125 thd_ice_alloc_2 = MAXVAL(ierr) 122 126 IF( thd_ice_alloc_2 /= 0 ) CALL ctl_warn('thd_ice_alloc_2: failed to allocate arrays') -
branches/2013/dev_r3856_MERCATOR3_QSRMEAN24H/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_oce.F90
r3680 r3858 57 57 !!---------------------------------------------------------------------- 58 58 LOGICAL , PUBLIC :: lhftau = .FALSE. !: HF tau used in TKE: mean(stress module) - module(mean stress) 59 LOGICAL , PUBLIC :: ltrcdm2dc !: In case of Diurnal Cycle short wave, compute a Daily Mean short waves flux 59 60 !! !! now ! before !! 60 61 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: utau , utau_b !: sea surface i-stress (ocean referential) [N/m2] … … 64 65 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: wndm !: wind speed module at T-point (=|U10m-Uoce|) [m/s] 65 66 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: qsr !: sea heat flux: solar [W/m2] 67 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:),TARGET :: qsr_mean !: daily mean sea heat flux: solar [W/m2] 66 68 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: qns , qns_b !: sea heat flux: non solar [W/m2] 67 69 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: qsr_tot !: total solar heat flux (over sea and ice) [W/m2] -
branches/2013/dev_r3856_MERCATOR3_QSRMEAN24H/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_core.F90
r3772 r3858 186 186 CALL fld_read( kt, nn_fsbc, sf ) ! input fields provided at the current time-step 187 187 188 ! If diurnal cycle is activated, compute a daily mean short waves flux for biogeochemistery 189 #if defined key_top 190 IF( ltrcdm2dc )CALL blk_bio_meanqsr 191 #endif 192 188 193 ! ! compute the surface ocean fluxes using CORE bulk formulea 189 194 IF( MOD( kt - 1, nn_fsbc ) == 0 ) CALL blk_oce_core( kt, sf, sst_m, ssu_m, ssv_m ) … … 423 428 ! 424 429 END SUBROUTINE blk_oce_core 425 430 431 SUBROUTINE blk_bio_meanqsr 432 !!--------------------------------------------------------------------- 433 !! *** ROUTINE blk_bio_meanqsr 434 !! 435 !! ** Purpose : provide daily qsr_mean for PISCES when 436 !! analytic diurnal cycle is applied in physic 437 !! 438 !! ** Method : add part where there is no ice 439 !! 440 !!--------------------------------------------------------------------- 441 INTEGER :: ji,jj 442 REAL(wp) :: zfrld 443 !!--------------------------------------------------------------------- 444 IF( nn_timing == 1 ) CALL timing_start('blk_bio_meanqsr') 445 446 qsr_mean(:,:) = (1. - albo ) * sf(jp_qsr)%fnow(:,:,1) 447 448 IF( nn_timing == 1 ) CALL timing_stop('blk_bio_meanqsr') 449 450 END SUBROUTINE blk_bio_meanqsr 451 426 452 427 453 SUBROUTINE blk_ice_core( pst , pui , pvi , palb , & -
branches/2013/dev_r3856_MERCATOR3_QSRMEAN24H/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_lim_2.F90
r3680 r3858 238 238 IF( ln_limdyn ) CALL lim_sbc_tau_2( kt, ub(:,:,1), vb(:,:,1) ) ! using before instantaneous surf. currents 239 239 ! 240 #if defined key_top 241 IF( ltrcdm2dc_ice )CALL lim_bio_meanqsr_2 242 #endif 243 ! 240 244 CALL wrk_dealloc( jpi,jpj,1, zalb_ice_os, zalb_ice_cs, zsist ) 241 245 ! -
branches/2013/dev_r3856_MERCATOR3_QSRMEAN24H/NEMOGCM/NEMO/TOP_SRC/oce_trc.F90
r3680 r3858 97 97 USE sbc_oce , ONLY : wndm => wndm !: 10m wind speed 98 98 USE sbc_oce , ONLY : qsr => qsr !: penetrative solar radiation (w m-2) 99 USE sbc_oce , ONLY : qsr_mean !: penetrative solar radiation (w m-2) 99 100 USE sbc_oce , ONLY : emp => emp !: freshwater budget: volume flux [Kg/m2/s] 100 101 USE sbc_oce , ONLY : emp_b => emp_b !: freshwater budget: volume flux [Kg/m2/s] -
branches/2013/dev_r3856_MERCATOR3_QSRMEAN24H/NEMOGCM/NEMO/TOP_SRC/trcini.F90
r3680 r3858 17 17 !!---------------------------------------------------------------------- 18 18 USE oce_trc ! shared variables between ocean and passive tracers 19 USE ice_2 ! LIM sea-ice variables 19 20 USE trc ! passive tracers common variables 20 21 USE trcrst ! passive tracers restart … … 28 29 USE zpshde ! partial step: hor. derivative (zps_hde routine) 29 30 USE prtctl_trc ! Print control passive tracers (prt_ctl_trc_init routine) 30 USE trcsub ! variables to substep passive tracers 31 31 USE trcsub ! variables to substep passive tracers 32 USE lib_mpp ! distribued memory computing library 33 32 34 IMPLICIT NONE 33 35 PRIVATE … … 57 59 !!--------------------------------------------------------------------- 58 60 INTEGER :: jk, jn, jl ! dummy loop indices 61 INTEGER :: ierr 59 62 CHARACTER (len=25) :: charout 60 63 REAL(wp), POINTER, DIMENSION(:,:,:,:) :: ztrcdta ! 4D workspace … … 69 72 CALL top_alloc() ! allocate TOP arrays 70 73 71 IF( ln_dm2dc .AND. lk_pisces ) & 72 & CALL ctl_stop( ' The diurnal cycle is not compatible with PISCES ' ) 74 IF( ln_dm2dc .AND. lk_pisces )THEN 75 CALL ctl_warn( ' Diurnal cycle on physics but not in PISCES or LOBSTER ' ) 76 ltrcdm2dc = .TRUE. 77 ltrcdm2dc_ice = .TRUE. 78 ALLOCATE( qsr_mean(jpi,jpj) , STAT = ierr ) 79 80 IF( lk_mpp ) CALL mpp_sum ( ierr ) 81 IF( ierr > 0 ) CALL ctl_warn('trc_ini: allocation of arrays qsr_mean failed') 82 83 ENDIF 73 84 74 85 IF( nn_cla == 1 ) & -
branches/2013/dev_r3856_MERCATOR3_QSRMEAN24H/NEMOGCM/NEMO/TOP_SRC/trcstp.F90
r3680 r3858 66 66 ENDIF 67 67 ! 68 IF( nn_dttrc /= 1 ) CALL trc_sub_stp( kt ) ! averaging physical variables for sub-stepping 69 70 IF( MOD( kt , nn_dttrc ) == 0 ) THEN ! only every nn_dttrc time step 68 IF( ln_dm2dc .AND. lk_pisces )THEN 69 qsr(:,:) = qsr_mean(:,:) 70 ENDIF 71 ! 72 IF( nn_dttrc /= 1 ) CALL trc_sub_stp( kt ) ! averaging physical variables for sub-stepping 73 ! 74 IF( MOD( kt , nn_dttrc ) == 0 ) THEN ! only every nn_dttrc time step 71 75 ! 72 76 IF(ln_ctl) THEN
Note: See TracChangeset
for help on using the changeset viewer.