Changeset 5222
- Timestamp:
- 2015-04-17T12:24:12+02:00 (9 years ago)
- Location:
- branches/2015/dev_r5204_CNRS_PISCES_dcy/NEMOGCM/NEMO
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2015/dev_r5204_CNRS_PISCES_dcy/NEMOGCM/NEMO/LIM_SRC_2/limsbc_2.F90
r5206 r5222 264 264 265 265 ! daily mean qsr when diurnal cycle is applied on physics - for BGC models 266 IF( l_trcdm2dc ) qsr_mean(:,:) = pfrld(:,:) * qsr_mean(:,:) + ( 1. - pfrld(:,:) ) * fstric_mean(:,:) 266 IF( l_trcdm2dc ) THEN qsr_mean(:,:) = pfrld(:,:) * qsr_mean(:,:) + ( 1. - pfrld(:,:) ) * fstric_mean(:,:) 267 ! computation the solar flux at ocean surface 268 IF( lk_cpl ) THEN 269 qsr_mean(:,:) = qsr_mean(:,:) + ( fstric_mean(:,:) - qsr_ice_mean(:,:,1) ) * ( 1.0 - pfrld(:,:) ) ! qsr_mean = qsr_tot 270 ELSE 271 qsr_mean(:,:) = pfrld(:,:) * qsr_mean(:,:) + ( 1. - pfrld(:,:) ) * fstric_mean(:,:) 272 ENDIF 273 ENDIF 267 274 268 275 -
branches/2015/dev_r5204_CNRS_PISCES_dcy/NEMOGCM/NEMO/LIM_SRC_3/limsbc.F90
r5207 r5222 219 219 220 220 221 IF( lk_cpl ) THEN 222 !!! LIM2 version zqsr = qsr_tot(ji,jj) + ( fstric(ji,jj) - qsr_ice(ji,jj,1) ) * ( 1.0 - pfrld(ji,jj) ) 223 zfcm1 = qsr_tot(ji,jj) 224 DO jl = 1, jpl 225 zfcm1 = zfcm1 + ( ftr_ice(ji,jj,jl) - qsr_ice(ji,jj,jl) ) * a_i_b(ji,jj,jl) 226 END DO 227 ELSE 228 !!! LIM2 version zqsr = pfrld(ji,jj) * qsr(ji,jj) + ( 1. - pfrld(ji,jj) ) * fstric(ji,jj) 229 zfcm1 = pfrld(ji,jj) * qsr(ji,jj) 230 DO jl = 1, jpl 231 zfcm1 = zfcm1 + a_i_b(ji,jj,jl) * ftr_ice(ji,jj,jl) 232 END DO 233 ENDIF 234 221 235 ! daily mean qsr when diurnal cycle is applied on physics - for BGC models 222 236 IF( l_trcdm2dc ) THEN 223 DO jj = 1, jpj 224 DO ji = 1, jpi 225 zfcm1 = pfrld(ji,jj) * qsr_mean(ji,jj) 226 DO jl = 1, jpl 227 zfcm1 = zfcm1 + ftr_ice_mean(ji,jj,jl) 228 END DO 229 qsr_mean(ji,jj) = zfcm1 237 IF( lk_cpl ) THEN 238 DO jj = 1, jpj 239 DO ji = 1, jpi 240 zfcm1 = qsr_mean(ji,jj) 241 DO jl = 1, jpl 242 zfcm1 = zfcm1 + ftr_ice_mean(ji,jj,jl) - qsr_ice_mean(ji,jj,jl) * a_i_b(ji,jj,jl) 243 END DO 244 qsr_mean(ji,jj) = zfcm1 245 ENDDO 230 246 ENDDO 231 ENDDO 247 ELSE 248 DO jj = 1, jpj 249 DO ji = 1, jpi 250 zfcm1 = pfrld(ji,jj) * qsr_mean(ji,jj) 251 DO jl = 1, jpl 252 zfcm1 = zfcm1 + ftr_ice_mean(ji,jj,jl) 253 END DO 254 qsr_mean(ji,jj) = zfcm1 255 ENDDO 256 ENDDO 257 ENDIF 232 258 ENDIF 233 259 -
branches/2015/dev_r5204_CNRS_PISCES_dcy/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_oce.F90
r5206 r5222 81 81 !! Ocean Surface Boundary Condition fields 82 82 !!---------------------------------------------------------------------- 83 LOGICAL , PUBLIC :: l_trcdm2dc !: In case of Diurnal Cycle short wave, compute a Daily Mean short waves flux 83 LOGICAL , PUBLIC :: l_trcdm2dc !: In case of Diurnal Cycle short wave, compute a Daily Mean short waves flux 84 INTEGER , PUBLIC :: n_cpl_qsr !: qsr coupling frequency per days 84 85 ! 85 86 LOGICAL , PUBLIC :: lhftau = .FALSE. !: HF tau used in TKE: mean(stress module) - module(mean stress) … … 137 138 !! *** FUNCTION sbc_oce_alloc *** 138 139 !!--------------------------------------------------------------------- 139 INTEGER :: ierr( 6)140 INTEGER :: ierr(5) 140 141 !!--------------------------------------------------------------------- 141 142 ierr(:) = 0 … … 145 146 ! 146 147 ALLOCATE( qns_tot(jpi,jpj) , qns (jpi,jpj) , qns_b(jpi,jpj), & 147 & qsr_tot(jpi,jpj) , qsr (jpi,jpj) , 148 & qsr_tot(jpi,jpj) , qsr (jpi,jpj) , qsr_mean(jpi,jpj), & 148 149 & emp (jpi,jpj) , emp_b(jpi,jpj) , & 149 150 & sfx (jpi,jpj) , sfx_b(jpi,jpj) , emp_tot(jpi,jpj), fmmflx(jpi,jpj), STAT=ierr(2) ) … … 159 160 & ssv_m (jpi,jpj) , sss_m (jpi,jpj), ssh_m(jpi,jpj) , STAT=ierr(4) ) 160 161 ! 161 IF( l_trcdm2dc ) ALLOCATE( qsr_mean(jpi,jpj) , STAT=ierr(5) )162 !163 162 #if defined key_vvl 164 ALLOCATE( e3t_m(jpi,jpj) , STAT=ierr( 6) )163 ALLOCATE( e3t_m(jpi,jpj) , STAT=ierr(5) ) 165 164 #endif 166 165 ! -
branches/2015/dev_r5204_CNRS_PISCES_dcy/NEMOGCM/NEMO/OPA_SRC/SBC/sbccpl.F90
r5146 r5222 135 135 136 136 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: albedo_oce_mix ! ocean albedo sent to atmosphere (mix clear/overcast sky) 137 138 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: qsr_tot_tmp ! arrays containing consecutives qsr in a day 139 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) :: qsr_ice_tmp ! === === 137 140 138 141 INTEGER , ALLOCATABLE, SAVE, DIMENSION( :) :: nrcvinfo ! OASIS info argument … … 583 586 ENDIF 584 587 ! 585 IF( ln_dm2dc .AND. ( cpl_freq( jpr_qsroce ) + cpl_freq( jpr_qsrmix ) /= 86400 ) ) & 588 n_cpl_qsr = INT( 86400 / ( cpl_freq( jpr_qsroce ) + cpl_freq( jpr_qsrmix ) ) ! qsr coupling frequency per day 589 ! 590 IF( ln_dm2dc .AND. n_cpl_qsr /= 1 ) & 586 591 & CALL ctl_stop( 'sbc_cpl_init: diurnal cycle reconstruction (ln_dm2dc) needs daily couping for solar radiation' ) 587 592 593 ! 594 ! 588 595 CALL wrk_dealloc( jpi,jpj, zacs, zaos ) 589 596 ! … … 1056 1063 1057 1064 1058 SUBROUTINE sbc_cpl_ice_flx( p_frld , palbi , psst , pist )1065 SUBROUTINE sbc_cpl_ice_flx( p_frld , kt, palbi , psst , pist ) 1059 1066 !!---------------------------------------------------------------------- 1060 1067 !! *** ROUTINE sbc_cpl_ice_flx *** … … 1096 1103 !! sprecip solid precipitation over the ocean 1097 1104 !!---------------------------------------------------------------------- 1105 INTEGER, INTENT(in ), OPTIONAL :: kt ! time-step 1098 1106 REAL(wp), INTENT(in ), DIMENSION(:,:) :: p_frld ! lead fraction [0 to 1] 1099 1107 ! optional arguments, used only in 'mixed oce-ice' case … … 1102 1110 REAL(wp), INTENT(in ), DIMENSION(:,:,:), OPTIONAL :: pist ! ice surface temperature [Kelvin] 1103 1111 ! 1104 INTEGER :: jl ! dummy loop index1112 INTEGER :: it, jl ! dummy loop index 1105 1113 REAL(wp), POINTER, DIMENSION(:,:) :: zcptn, ztmp, zicefr 1106 1114 !!---------------------------------------------------------------------- … … 1109 1117 ! 1110 1118 CALL wrk_alloc( jpi,jpj, zcptn, ztmp, zicefr ) 1119 1120 IF( PRESENT( kt ) ) it = kt 1111 1121 1112 1122 zicefr(:,:) = 1.- p_frld(:,:) … … 1272 1282 & + palbi (:,:,1) * zicefr(:,:) ) ) 1273 1283 END SELECT 1284 ! 1274 1285 IF( ln_dm2dc ) THEN ! modify qsr to include the diurnal cycle 1275 1286 qsr_tot(:,: ) = sbc_dcy( qsr_tot(:,: ) ) … … 1278 1289 ENDDO 1279 1290 ENDIF 1291 ! 1292 IF( l_trcdm2dc ) CALL sbc_cpl_qsr_mean( it ) ! computation of daily mean qsr for biogeochemical model if needed 1280 1293 1281 1294 ! ! ========================= ! … … 1313 1326 ! 1314 1327 END SUBROUTINE sbc_cpl_ice_flx 1328 1329 SUBROUTINE sbc_cpl_qsr_mean( kt ) 1330 !!---------------------------------------------------------------------- 1331 !! *** ROUTINE sbc_cpl_mean *** 1332 !! 1333 !! ** Purpose : Compute daily mean qsr for biogeochmeical model in case of diurnal cycle 1334 !! 1335 !!---------------------------------------------------------------------- 1336 INTEGER, INTENT(in) :: kt 1337 INTEGER :: jn 1338 1339 IF( kt == nit000 ) THEN 1340 ALLOCATE( qsr_tot_tmp(jpi,jpj,n_cpl_qsr), qsr_ice_tmp(jpi,jpj,jpl,n_cpl_qsr) ) 1341 DO jn = 1, n_cpl_qsr 1342 qsr_tot_tmp(:,: ,jn) = qsr_tot(:,: ) 1343 qsr_ice_tmp(:,:,:,jn) = qsr_ice(:,:,:) 1344 ENDDO 1345 qsr_mean (:,: ) = qsr_tot(:,: ) 1346 qsr_ice_mean(:,:,:) = qsr_ice(:,:,:) 1347 ENDIF 1348 ! 1349 IF( kt /= nit000 .AND. nrcvinfo(jpr_qsroce) == OASIS_Rcv ) THEN ! => need to be done only when we receive the field 1350 DO jn = 1, n_cpl_qsr - 1 1351 qsr_tot_tmp(:,: ,jn) = qsr_tot_tmp(:,: ,jn+1) 1352 qsr_ice_tmp(:,:,:,jn) = qsr_ice_tmp(:,:,:,jn+1) 1353 ENDDO 1354 qsr_tot_tmp(:,: ,n_cpl_qsr ) = qsr_tot(:,: ) 1355 qsr_ice_tmp(:,:,:,n_cpl_qsr ) = qsr_ice(:,:,:) 1356 ! 1357 qsr_mean (:,:) = SUM( qsr_tot_tmp(:,:,:), 3 ) / n_cpl_qsr 1358 qsr_ice_mean(:,:) = SUM( qsr_ice_tmp(:,:,:), 4 ) / n_cpl_qsr 1359 ! 1360 ENDIF 1361 ! 1362 END SUBROUTINE sbc_cpl_qsr_mean 1315 1363 1316 1364 -
branches/2015/dev_r5204_CNRS_PISCES_dcy/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_lim.F90
r5206 r5222 224 224 SELECT CASE( kblk ) 225 225 CASE ( jp_cpl ) 226 CALL sbc_cpl_ice_flx( p_frld=pfrld, palbi=zalb_ice, psst=sst_m, pist=t_su )226 CALL sbc_cpl_ice_flx( p_frld=pfrld, kt=kt, palbi=zalb_ice, psst=sst_m, pist=t_su ) 227 227 IF( nn_limflx == 2 ) CALL ice_lim_flx( t_su, zalb_ice, qns_ice, qsr_ice , & 228 228 & dqns_ice, qla_ice, dqla_ice, nn_limflx ) -
branches/2015/dev_r5204_CNRS_PISCES_dcy/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_lim_2.F90
r5207 r5222 233 233 CALL sbc_cpl_ice_flx( frld, & 234 234 ! optional arguments, used only in 'mixed oce-ice' case 235 & palbi = zalb_ice, psst = sst_m, pist =zsist )235 & kt=kt, palbi=zalb_ice, psst=sst_m, pist=zsist ) 236 236 sprecip(:,:) = - emp_ice(:,:) ! Ugly patch, WARNING, in coupled mode, sublimation included in snow (parsub = 0.) 237 237 ENDIF -
branches/2015/dev_r5204_CNRS_PISCES_dcy/NEMOGCM/NEMO/OPA_SRC/SBC/sbcmod.F90
r5206 r5222 152 152 END SELECT 153 153 ! 154 IF( ln_dm2dc .AND. lk_top ) THEN155 l_trcdm2dc = .TRUE.156 IF( lwp ) THEN157 WRITE(numout,*) "In case of diurnal cycle coupled with passive tracers"158 WRITE(numout,*) "Computation of a daily mean shortwave for some biogeochemical models"159 ENDIF160 ELSE161 l_trcdm2dc = .FALSE.162 ENDIF163 164 154 ! ! allocate sbc arrays 165 155 IF( sbc_oce_alloc() /= 0 ) CALL ctl_stop( 'STOP', 'sbc_init : unable to allocate sbc_oce arrays' ) … … 276 266 ! 277 267 IF( nsbc == jp_cpl ) CALL sbc_cpl_init (nn_ice) ! OASIS initialisation. must be done before first time step 268 269 l_trcdm2dc == lk_top .AND. ( ln_dm2dc .OR. ( lk_cpl .AND. n_cpl_qsr /= 1 ) ) 270 IF( l_trcdm2dc .AND. lwp ) THEN 271 WRITE(numout,*) "Coupling with passive tracers and used of diurnal cycle !!!!! " 272 WRITE(numout,*) "Computation of a daily mean shortwave for some biogeochemical models" 273 ENDIF 274 ENDIF 278 275 279 276 END SUBROUTINE sbc_init
Note: See TracChangeset
for help on using the changeset viewer.