- Timestamp:
- 2013-11-18T17:00:37+01:00 (10 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/limthd_2.F90
r4024 r4236 288 288 CALL tab_2d_1d_2( nbpb, qsr_ice_1d (1:nbpb) , qsr_ice(:,:,1) , jpi, jpj, npb(1:nbpb) ) 289 289 IF( ltrcdm2dc_ice ) & 290 & CALL tab_2d_1d_2( nbpb, qsr_ice_mean_1d (1:nbpb) , qsr_ice_mean(:,:,1) , jpi, jpj, npb(1:nbpb)290 & CALL tab_2d_1d_2( nbpb, qsr_ice_mean_1d (1:nbpb), qsr_ice_mean(:,:,1), jpi, jpj, npb(1:nbpb) ) 291 291 CALL tab_2d_1d_2( nbpb, fr1_i0_1d (1:nbpb) , fr1_i0 , jpi, jpj, npb(1:nbpb) ) 292 292 CALL tab_2d_1d_2( nbpb, fr2_i0_1d (1:nbpb) , fr2_i0 , jpi, jpj, npb(1:nbpb) ) -
branches/2013/dev_r3856_MERCATOR3_QSRMEAN24H/NEMOGCM/NEMO/LIM_SRC_2/thd_ice_2.F90
r4024 r4236 99 99 !!---------------------------------------------------------------------- 100 100 USE lib_mpp ! MPP library 101 INTEGER :: ierr( 4)101 INTEGER :: ierr(5) 102 102 !!---------------------------------------------------------------------- 103 103 ! -
branches/2013/dev_r3856_MERCATOR3_QSRMEAN24H/NEMOGCM/NEMO/OPA_SRC/ICB/icb_oce.F90
r3614 r4236 168 168 ! 169 169 icb_alloc = 0 170 ALLOCATE( berg_grid , &170 ALLOCATE( & !cbr berg_grid , & 171 171 & berg_grid%calving (jpi,jpj) , berg_grid%calving_hflx (jpi,jpj) , & 172 172 & berg_grid%stored_heat(jpi,jpj) , berg_grid%floating_melt(jpi,jpj) , & -
branches/2013/dev_r3856_MERCATOR3_QSRMEAN24H/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_ice.F90
r3625 r4236 19 19 # if defined key_lim2 20 20 USE par_ice_2 ! LIM-2 parameters 21 USE ice_2 21 22 # endif 22 23 # if defined key_cice … … 55 56 56 57 #if defined key_lim3 || defined key_lim2 57 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: qns_ice !: non solar heat flux over ice [W/m2] 58 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: qsr_ice !: solar heat flux over ice [W/m2] 59 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: qla_ice !: latent flux over ice [W/m2] 60 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: dqla_ice !: latent sensibility over ice [W/m2/K] 61 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: dqns_ice !: non solar heat flux over ice (LW+SEN+LA) [W/m2/K] 62 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: tn_ice !: ice surface temperature [K] 63 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: alb_ice !: albedo of ice 58 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: qns_ice !: non solar heat flux over ice [W/m2] 59 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: qsr_ice !: solar heat flux over ice [W/m2] 60 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: qsr_ice_mean !: dauly mean solar heat flux over ice [W/m2] 61 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: qla_ice !: latent flux over ice [W/m2] 62 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: dqla_ice !: latent sensibility over ice [W/m2/K] 63 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: dqns_ice !: non solar heat flux over ice (LW+SEN+LA) [W/m2/K] 64 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: tn_ice !: ice surface temperature [K] 65 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: alb_ice !: albedo of ice 64 66 65 67 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: utau_ice !: atmos-ice u-stress. VP: I-pt ; EVP: U,V-pts [N/m2] … … 109 111 !! *** FUNCTION sbc_ice_alloc *** 110 112 !!---------------------------------------------------------------------- 113 INTEGER :: ierr(2) 114 !!---------------------------------------------------------------------- 115 ierr(:) = 0 116 111 117 #if defined key_lim3 || defined key_lim2 112 118 ALLOCATE( qns_ice (jpi,jpj,jpl) , qsr_ice (jpi,jpj,jpl) , & … … 117 123 & fr1_i0 (jpi,jpj) , fr2_i0 (jpi,jpj) , & 118 124 #if defined key_lim3 119 & emp_ice(jpi,jpj) , tatm_ice(jpi,jpj) , STAT= sbc_ice_alloc)125 & emp_ice(jpi,jpj) , tatm_ice(jpi,jpj) , STAT= ierr(1) ) 120 126 #else 121 & emp_ice(jpi,jpj) , STAT= sbc_ice_alloc)127 & emp_ice(jpi,jpj) , STAT= ierr(1) ) 122 128 #endif 123 129 #elif defined key_cice … … 126 132 wndj_ice(jpi,jpj) , nfrzmlt(jpi,jpj) , ss_iou(jpi,jpj) , & 127 133 ss_iov(jpi,jpj) , fr_iu(jpi,jpj) , fr_iv(jpi,jpj) , & 128 a_i(jpi,jpj,ncat) , topmelt(jpi,jpj,ncat) , botmelt(jpi,jpj,ncat), STAT= sbc_ice_alloc)134 a_i(jpi,jpj,ncat) , topmelt(jpi,jpj,ncat) , botmelt(jpi,jpj,ncat), STAT= ierr(1) ) 129 135 #endif 130 136 ! 137 #if defined key_lim2 138 IF( ltrcdm2dc_ice )THEN 139 ALLOCATE( qsr_ice_mean (jpi,jpj,jpl), STAT=ierr(2) ) 140 ENDIF 141 #endif 142 ! 143 sbc_ice_alloc = MAXVAL( ierr ) 131 144 IF( lk_mpp ) CALL mpp_sum ( sbc_ice_alloc ) 132 145 IF( sbc_ice_alloc > 0 ) CALL ctl_warn('sbc_ice_alloc: allocation of arrays failed') -
branches/2013/dev_r3856_MERCATOR3_QSRMEAN24H/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_oce.F90
r4160 r4236 64 64 !! wndm is used onmpute surface gases exchanges in ice-free ocean or leads 65 65 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: wndm !: wind speed module at T-point (=|U10m-Uoce|) [m/s] 66 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ,TARGET:: 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 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: qsr !: sea heat flux: solar [W/m2] 67 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: qsr_mean !: daily mean sea heat flux: solar [W/m2] 68 68 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: qns , qns_b !: sea heat flux: non solar [W/m2] 69 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/TOP_SRC/PISCES/P2Z/p2zopt.F90
r4160 r4236 89 89 90 90 ! ! surface irradiance 91 zpar0m (:,:) = qsr _top(:,:) * 0.43 ! ------------------91 zpar0m (:,:) = qsr(:,:) * 0.43 ! ------------------ 92 92 zpar100(:,:) = zpar0m(:,:) * 0.01 93 93 zparr (:,:,1) = zpar0m(:,:) * 0.5 -
branches/2013/dev_r3856_MERCATOR3_QSRMEAN24H/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zopt.F90
r4160 r4236 114 114 115 115 IF( ln_varpar ) THEN 116 ze1(:,:,1) = par_varsw(:,:) * qsr _top(:,:) * EXP( -0.5 * zekb(:,:,1) )117 ze2(:,:,1) = par_varsw(:,:) * qsr _top(:,:) * EXP( -0.5 * zekg(:,:,1) )118 ze3(:,:,1) = par_varsw(:,:) * qsr _top(:,:) * EXP( -0.5 * zekr(:,:,1) )116 ze1(:,:,1) = par_varsw(:,:) * qsr(:,:) * EXP( -0.5 * zekb(:,:,1) ) 117 ze2(:,:,1) = par_varsw(:,:) * qsr(:,:) * EXP( -0.5 * zekg(:,:,1) ) 118 ze3(:,:,1) = par_varsw(:,:) * qsr(:,:) * EXP( -0.5 * zekr(:,:,1) ) 119 119 ELSE 120 ze1(:,:,1) = xparsw * qsr _top(:,:) * EXP( -0.5 * zekb(:,:,1) )121 ze2(:,:,1) = xparsw * qsr _top(:,:) * EXP( -0.5 * zekg(:,:,1) )122 ze3(:,:,1) = xparsw * qsr _top(:,:) * EXP( -0.5 * zekr(:,:,1) )120 ze1(:,:,1) = xparsw * qsr(:,:) * EXP( -0.5 * zekb(:,:,1) ) 121 ze2(:,:,1) = xparsw * qsr(:,:) * EXP( -0.5 * zekg(:,:,1) ) 122 ze3(:,:,1) = xparsw * qsr(:,:) * EXP( -0.5 * zekr(:,:,1) ) 123 123 ENDIF 124 124 … … 159 159 zxsi0r = 1.e0 / rn_si0 160 160 ! 161 ze0(:,:,1) = rn_abs * qsr _top(:,:)161 ze0(:,:,1) = rn_abs * qsr(:,:) 162 162 ! ! surface value : separation in R-G-B + near surface 163 163 IF( ln_varpar ) THEN 164 ze0(:,:,1) = ( 1. - 3. * par_varsw(:,:) ) * qsr _top(:,:)165 ze1(:,:,1) = par_varsw(:,:) * qsr _top(:,:)166 ze2(:,:,1) = par_varsw(:,:) * qsr _top(:,:)167 ze3(:,:,1) = par_varsw(:,:) * qsr _top(:,:)164 ze0(:,:,1) = ( 1. - 3. * par_varsw(:,:) ) * qsr(:,:) 165 ze1(:,:,1) = par_varsw(:,:) * qsr(:,:) 166 ze2(:,:,1) = par_varsw(:,:) * qsr(:,:) 167 ze3(:,:,1) = par_varsw(:,:) * qsr(:,:) 168 168 ELSE 169 ze0(:,:,1) = ( 1. - 3. * xparsw ) * qsr _top(:,:)170 ze1(:,:,1) = xparsw * qsr _top(:,:)171 ze2(:,:,1) = xparsw * qsr _top(:,:)172 ze3(:,:,1) = xparsw * qsr _top(:,:)169 ze0(:,:,1) = ( 1. - 3. * xparsw ) * qsr(:,:) 170 ze1(:,:,1) = xparsw * qsr(:,:) 171 ze2(:,:,1) = xparsw * qsr(:,:) 172 ze3(:,:,1) = xparsw * qsr(:,:) 173 173 ENDIF 174 etot3(:,:,1) = qsr _top(:,:) * tmask(:,:,1)174 etot3(:,:,1) = qsr(:,:) * tmask(:,:,1) 175 175 ! 176 176 ! … … 204 204 DO jj = 1, jpj 205 205 DO ji = 1, jpi 206 IF( etot(ji,jj,jk) >= 0.0043 * qsr _top(ji,jj) ) THEN206 IF( etot(ji,jj,jk) >= 0.0043 * qsr(ji,jj) ) THEN 207 207 neln(ji,jj) = jk+1 ! Euphotic level : 1rst T-level strictly below Euphotic layer 208 208 ! ! nb: ensure the compatibility with nmld_trc definition in trd_mld_trc_zint -
branches/2013/dev_r3856_MERCATOR3_QSRMEAN24H/NEMOGCM/NEMO/TOP_SRC/oce_trc.F90
r4160 r4236 96 96 USE sbc_oce , ONLY : vtau => vtau !: j-surface stress component 97 97 USE sbc_oce , ONLY : wndm => wndm !: 10m wind speed 98 USE sbc_oce , ONLY : qsr => qsr !: penetrative solar radiation (w m-2) 98 99 USE sbc_oce , ONLY : emp => emp !: freshwater budget: volume flux [Kg/m2/s] 99 100 USE sbc_oce , ONLY : emp_b => emp_b !: freshwater budget: volume flux [Kg/m2/s] … … 148 149 # endif 149 150 150 REAL(wp),DIMENSION(:,:),POINTER :: qsr_top 151 152 CONTAINS 153 154 INTEGER FUNCTION oce_trc_alloc() 155 !!---------------------------------------------------------------------- 156 !! *** trc_oce_alloc *** 157 !!---------------------------------------------------------------------- 158 !!---------------------------------------------------------------------- 159 INTEGER :: ierr(1) ! Local variables 160 !!---------------------------------------------------------------------- 161 ierr(:) = 0 162 ALLOCATE( qsr_top(jpi,jpj), STAT=ierr(1) ) 163 oce_trc_alloc = MAXVAL( ierr ) 164 ! 165 IF( oce_trc_alloc /= 0 ) CALL ctl_warn('oce_trc_alloc: failed to allocate qsr_top array') 166 167 END FUNCTION oce_trc_alloc 151 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: qsr_tmp !: save qsr with diurnal cycle during TOP/PISCES 152 !: timestep [W/m2] 168 153 169 154 #else -
branches/2013/dev_r3856_MERCATOR3_QSRMEAN24H/NEMOGCM/NEMO/TOP_SRC/trcini.F90
r4160 r4236 31 31 USE trcsub ! variables to substep passive tracers 32 32 USE lib_mpp ! distribued memory computing library 33 USE sbc_oce, ONLY : qsr_mean 34 USE sbc_oce, ONLY : qsr 33 USE sbc_oce 35 34 36 35 IMPLICIT NONE … … 78 77 ltrcdm2dc = .TRUE. 79 78 ltrcdm2dc_ice = .TRUE. 80 ALLOCATE( qsr_mean(jpi,jpj) , STAT = ierr )79 ALLOCATE( qsr_mean(jpi,jpj) , qsr_tmp(jpi,jpj) , STAT = ierr ) 81 80 82 81 IF( lk_mpp ) CALL mpp_sum ( ierr ) 83 82 IF( ierr > 0 ) CALL ctl_warn('trc_ini: allocation of arrays qsr_mean failed') 84 85 qsr_top => qsr_mean86 87 ELSE88 89 qsr_top => qsr90 83 91 84 ENDIF … … 218 211 ierr = trc_adv_alloc() ! Start of TOP-related alloc routines... 219 212 ierr = ierr + trc_alloc () 220 ierr = ierr + oce_trc_alloc()221 213 ierr = ierr + trc_nxt_alloc() 222 214 ierr = ierr + trc_zdf_alloc() -
branches/2013/dev_r3856_MERCATOR3_QSRMEAN24H/NEMOGCM/NEMO/TOP_SRC/trcstp.F90
r4160 r4236 11 11 !!---------------------------------------------------------------------- 12 12 USE oce_trc ! ocean dynamics and active tracers variables 13 USE sbc_oce 13 14 USE trc 14 15 USE trctrp ! passive tracers transport … … 66 67 ENDIF 67 68 ! 69 !cbr 70 IF( ln_dm2dc .AND. lk_pisces )THEN 71 qsr_tmp = qsr 72 qsr = qsr_mean 73 ENDIF 74 ! 68 75 IF( nn_dttrc /= 1 ) CALL trc_sub_stp( kt ) ! averaging physical variables for sub-stepping 69 76 ! … … 92 99 ENDIF 93 100 ! 101 !cbr 102 IF( ln_dm2dc .AND. lk_pisces )THEN 103 qsr = qsr_tmp 104 ENDIF 105 ! 94 106 ztrai = 0._wp ! content of all tracers 95 107 DO jn = 1, jptra -
branches/2013/dev_r3856_MERCATOR3_QSRMEAN24H/NEMOGCM/NEMO/TOP_SRC/trcsub.F90
r4160 r4236 124 124 emp_tm (:,:) = emp_tm (:,:) + emp (:,:) 125 125 sfx_tm (:,:) = sfx_tm (:,:) + sfx (:,:) 126 qsr_tm (:,:) = qsr_tm (:,:) + qsr _top(:,:)126 qsr_tm (:,:) = qsr_tm (:,:) + qsr (:,:) 127 127 wndm_tm (:,:) = wndm_tm (:,:) + wndm (:,:) 128 128 ! … … 212 212 emp_b_temp (:,:) = emp_b (:,:) 213 213 sfx_temp (:,:) = sfx (:,:) 214 qsr_temp (:,:) = qsr _top(:,:)214 qsr_temp (:,:) = qsr (:,:) 215 215 wndm_temp (:,:) = wndm (:,:) 216 216 #if defined key_traldf_c3d … … 316 316 emp_tm (:,:) = emp_tm (:,:) + emp (:,:) 317 317 sfx_tm (:,:) = sfx_tm (:,:) + sfx (:,:) 318 qsr_tm (:,:) = qsr_tm (:,:) + qsr _top(:,:)318 qsr_tm (:,:) = qsr_tm (:,:) + qsr (:,:) 319 319 wndm_tm (:,:) = wndm_tm (:,:) + wndm (:,:) 320 320 ! … … 332 332 IF( kt == nittrc000 ) THEN 333 333 wndm (:,:) = wndm_tm (:,:) * r1_ndttrc 334 qsr _top(:,:) = qsr_tm (:,:) * r1_ndttrc334 qsr (:,:) = qsr_tm (:,:) * r1_ndttrc 335 335 emp (:,:) = emp_tm (:,:) * r1_ndttrc 336 336 sfx (:,:) = sfx_tm (:,:) * r1_ndttrc … … 348 348 ELSE 349 349 wndm (:,:) = wndm_tm (:,:) * r1_ndttrcp1 350 qsr _top(:,:) = qsr_tm (:,:) * r1_ndttrcp1350 qsr (:,:) = qsr_tm (:,:) * r1_ndttrcp1 351 351 emp (:,:) = emp_tm (:,:) * r1_ndttrcp1 352 352 sfx (:,:) = sfx_tm (:,:) * r1_ndttrcp1 … … 501 501 CALL lbc_lnk( emp_b (:,:) , 'T', 1. ) 502 502 CALL lbc_lnk( sfx (:,:) , 'T', 1. ) 503 CALL lbc_lnk( qsr _top(:,:) , 'T', 1. )503 CALL lbc_lnk( qsr (:,:) , 'T', 1. ) 504 504 CALL lbc_lnk( wndm (:,:) , 'T', 1. ) 505 505 # if defined key_trabbl … … 709 709 sfx (:,:) = sfx_temp (:,:) 710 710 emp_b (:,:) = emp_b_temp (:,:) 711 qsr _top(:,:) = qsr_temp (:,:)711 qsr (:,:) = qsr_temp (:,:) 712 712 wndm (:,:) = wndm_temp (:,:) 713 713 # if defined key_trabbl … … 827 827 emp_tm (:,:) = emp (:,:) 828 828 sfx_tm (:,:) = sfx (:,:) 829 qsr_tm (:,:) = qsr _top(:,:)829 qsr_tm (:,:) = qsr (:,:) 830 830 wndm_tm (:,:) = wndm (:,:) 831 831 # if defined key_trabbl
Note: See TracChangeset
for help on using the changeset viewer.