Changeset 8897
- Timestamp:
- 2017-12-05T11:44:44+01:00 (7 years ago)
- Location:
- branches/UKMO/dev_r5518_flux_correction/NEMOGCM
- Files:
-
- 1 added
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/dev_r5518_flux_correction/NEMOGCM/CONFIG/SHARED/namelist_ref
r8778 r8897 261 261 ! option 1 and 4 need ln_isfcav = .true. (domzgr) 262 262 ln_ssr = .true. ! Sea Surface Restoring on T and/or S (T => fill namsbc_ssr) 263 ln_hfp = .false. ! Heat flux perturbation 263 264 nn_fwb = 2 ! FreshWater Budget: =0 unchecked 264 265 ! =1 global mean of e-p-r set to zero at each time step … … 327 328 sn_snow = 'ncar_precip.15JUNE2009_fill' , -1 , 'SNOW' , .false. , .true. , 'yearly' , 'weights_core_orca2_bilinear_noc.nc' , '' , '' 328 329 sn_tdif = 'taudif_core' , 24 , 'taudif' , .false. , .true. , 'yearly' , 'weights_core_orca2_bilinear_noc.nc' , '' , '' 329 sn_htcorr = 'heat_flux_correction' , -1 , 'htcorr' , .true. , .true. , 'yearly' , 'weights_core_orca2_bilinear_noc.nc' , '' , ''330 330 331 331 cn_dir = './' ! root directory for the location of the bulk files 332 ln_htcorr = .false. ! use correction climatology for heat flux into ocean (downward long wave)333 332 ln_taudif = .false. ! HF tau contribution: use "mean of stress module - module of the mean stress" data 334 333 rn_zqt = 10. ! Air temperature and humidity reference height (m) … … 481 480 ln_ref_apr = .false. ! ref. pressure: global mean Patm (T) or a constant (F) 482 481 ln_apr_obc = .false. ! inverse barometer added to OBC ssh data 482 / 483 !----------------------------------------------------------------------- 484 &namsbc_hfp ! heat flux perturbation 485 !----------------------------------------------------------------------- 486 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 487 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 488 sn_hfp = 'hfp' , -1 , 'hfp' , .true. , .true., 'yearly' , '' , '' , '' 489 cn_dir = './' ! root directory for the location of the hfp files 483 490 / 484 491 !----------------------------------------------------------------------- -
branches/UKMO/dev_r5518_flux_correction/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_oce.F90
r8702 r8897 45 45 LOGICAL , PUBLIC :: ln_rnf !: runoffs / runoff mouths 46 46 LOGICAL , PUBLIC :: ln_ssr !: Sea Surface restoring on SST and/or SSS 47 LOGICAL , PUBLIC :: ln_hfp !: Heat flux perturbation 47 48 LOGICAL , PUBLIC :: ln_apr_dyn !: Atmospheric pressure forcing used on dynamics (ocean & ice) 48 49 INTEGER , PUBLIC :: nn_ice !: flag for ice in the surface boundary condition (=0/1/2/3) -
branches/UKMO/dev_r5518_flux_correction/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_core.F90
r8779 r8897 62 62 PUBLIC turb_core_2z ! routine calles in sbcblk_mfs module 63 63 64 INTEGER , PARAMETER :: jpfld = 10! maximum number of files to read64 INTEGER , PARAMETER :: jpfld = 9 ! maximum number of files to read 65 65 INTEGER , PARAMETER :: jp_wndi = 1 ! index of 10m wind velocity (i-component) (m/s) at T-point 66 66 INTEGER , PARAMETER :: jp_wndj = 2 ! index of 10m wind velocity (j-component) (m/s) at T-point … … 71 71 INTEGER , PARAMETER :: jp_prec = 7 ! index of total precipitation (rain+snow) (Kg/m2/s) 72 72 INTEGER , PARAMETER :: jp_snow = 8 ! index of snow (solid prcipitation) (kg/m2/s) 73 INTEGER , PARAMETER :: jp_htcorr = 9 ! bias correction for heat flux to ocean (W/m2) 74 INTEGER , PARAMETER :: jp_tdif = 10 ! index of tau diff associated to HF tau (N/m2) at T-point 73 INTEGER , PARAMETER :: jp_tdif = 9 ! index of tau diff associated to HF tau (N/m2) at T-point 75 74 76 75 TYPE(FLD), ALLOCATABLE, DIMENSION(:) :: sf ! structure of input fields (file informations, fields read) … … 86 85 87 86 ! !!* Namelist namsbc_core : CORE bulk parameters 88 LOGICAL :: ln_htcorr ! logical flag to apply heat flux correction to downward longwave89 87 LOGICAL :: ln_taudif ! logical flag to use the "mean of stress module - module of mean stress" data 90 88 REAL(wp) :: rn_pfac ! multiplication factor for precipitation … … 149 147 TYPE(FLD_N) :: sn_wndi, sn_wndj, sn_humi, sn_qsr ! informations about the fields to be read 150 148 TYPE(FLD_N) :: sn_qlw , sn_tair, sn_prec, sn_snow ! " " 151 TYPE(FLD_N) :: sn_ htcorr, sn_tdif! " "152 NAMELIST/namsbc_core/ cn_dir , ln_ htcorr, ln_taudif, rn_pfac, rn_efac, rn_vfac, &149 TYPE(FLD_N) :: sn_tdif ! " " 150 NAMELIST/namsbc_core/ cn_dir , ln_taudif, rn_pfac, rn_efac, rn_vfac, & 153 151 & sn_wndi, sn_wndj, sn_humi , sn_qsr , & 154 152 & sn_qlw , sn_tair, sn_prec , sn_snow, & 155 & sn_ htcorr, sn_tdif, rn_zqt, rn_zu153 & sn_tdif, rn_zqt, rn_zu 156 154 !!--------------------------------------------------------------------- 157 155 ! … … 182 180 slf_i(jp_tair) = sn_tair ; slf_i(jp_humi) = sn_humi 183 181 slf_i(jp_prec) = sn_prec ; slf_i(jp_snow) = sn_snow 184 slf_i(jp_htcorr) = sn_htcorr ; slf_i(jp_tdif) = sn_tdif 185 ! 186 jfld = jpfld - COUNT( (/.NOT. ln_htcorr/) ) 182 slf_i(jp_tdif) = sn_tdif 183 ! 187 184 lhftau = ln_taudif ! do we use HF tau information? 188 jfld = j fld - COUNT( (/.NOT. lhftau/) )185 jfld = jpfld - COUNT( (/.NOT. lhftau/) ) 189 186 ! 190 187 ALLOCATE( sf(jfld), STAT=ierror ) ! set sf structure … … 253 250 REAL(wp), DIMENSION(:,:), POINTER :: zqsatw ! specific humidity at pst 254 251 REAL(wp), DIMENSION(:,:), POINTER :: zqlw, zqsb ! long wave and sensible heat fluxes 255 REAL(wp), DIMENSION(:,:), POINTER :: zqcorr ! bias correction to long wave flux256 252 REAL(wp), DIMENSION(:,:), POINTER :: zqla, zevap ! latent heat fluxes and evaporation 257 253 REAL(wp), DIMENSION(:,:), POINTER :: Cd ! transfer coefficient for momentum (tau) … … 265 261 IF( nn_timing == 1 ) CALL timing_start('blk_oce_core') 266 262 ! 267 CALL wrk_alloc( jpi,jpj, zwnd_i, zwnd_j, zqsatw, zqlw, zq corr, zqsb, zqla, zevap )263 CALL wrk_alloc( jpi,jpj, zwnd_i, zwnd_j, zqsatw, zqlw, zqsb, zqla, zevap ) 268 264 CALL wrk_alloc( jpi,jpj, Cd, Ch, Ce, zst, zt_zu, zq_zu ) 269 265 ! … … 312 308 313 309 zqlw(:,:) = ( sf(jp_qlw)%fnow(:,:,1) - Stef * zst(:,:)*zst(:,:)*zst(:,:)*zst(:,:) ) * tmask(:,:,1) ! Long Wave 314 IF( ln_htcorr ) THEN315 ! bias correction316 zqcorr(:,:) = sf(jp_htcorr)%fnow(:,:,1)317 WHERE( fr_i(:,:) > 0 .and. fr_i(:,:) < 0.5 )318 zqcorr(:,:) = zqcorr(:,:) * ( 1.0 - 2.0 * fr_i(:,:) )319 ENDWHERE320 WHERE( fr_i(:,:) >= 0.5 )321 zqcorr(:,:) = 0.0322 ENDWHERE323 zqlw(:,:) = ( zqlw(:,:) - zqcorr(:,:) ) * tmask(:,:,1)324 ENDIF325 326 310 ! ----------------------------------------------------------------------------- ! 327 311 ! II Turbulent FLUXES ! … … 412 396 ! 413 397 IF ( nn_ice == 0 .or. nn_ice == 4 ) THEN 414 IF(ln_htcorr) CALL iom_put( "qcorr_oce", zqcorr ) ! correction to downward longwave over the ocean415 398 CALL iom_put( "qlw_oce" , zqlw ) ! output downward longwave heat over the ocean 416 399 CALL iom_put( "qsb_oce" , - zqsb ) ! output downward sensible heat over the ocean … … 430 413 ENDIF 431 414 ! 432 CALL wrk_dealloc( jpi,jpj, zwnd_i, zwnd_j, zqsatw, zqlw, zq corr, zqsb, zqla, zevap )415 CALL wrk_dealloc( jpi,jpj, zwnd_i, zwnd_j, zqsatw, zqlw, zqsb, zqla, zevap ) 433 416 CALL wrk_dealloc( jpi,jpj, Cd, Ch, Ce, zst, zt_zu, zq_zu ) 434 417 ! -
branches/UKMO/dev_r5518_flux_correction/NEMOGCM/NEMO/OPA_SRC/SBC/sbcmod.F90
r8702 r8897 41 41 USE cpl_oasis3 ! OASIS routines for coupling 42 42 USE sbcssr ! surface boundary condition: sea surface restoring 43 USE sbchfp ! surface boundary condition: heat flux perturbation 43 44 USE sbcrnf ! surface boundary condition: runoffs 44 45 USE sbcisf ! surface boundary condition: ice shelf … … 89 90 & ln_blk_mfs, ln_apr_dyn, nn_ice, nn_ice_embd, ln_dm2dc , ln_rnf , & 90 91 & ln_ssr , nn_isf , nn_fwb, ln_cdgw , ln_wave , ln_sdw , & 91 & nn_lsm , nn_limflx , nn_components, ln_cpl 92 & nn_lsm , nn_limflx , nn_components, ln_cpl, ln_hfp 92 93 INTEGER :: ios 93 94 INTEGER :: ierr, ierr0, ierr1, ierr2, ierr3, jpm … … 296 297 297 298 CALL sbc_ssm_init ! Sea-surface mean fields initialisation 299 ! 300 IF( ln_hfp ) CALL sbc_hfp_init ! heat flux perturbation initialisation 298 301 ! 299 302 IF( ln_ssr ) CALL sbc_ssr_init ! Sea-Surface Restoring initialisation … … 393 396 END SELECT 394 397 398 IF( ln_hfp ) CALL sbc_hfp( kt ) ! add heat flux perturbation 399 395 400 IF( ln_icebergs ) CALL icb_stp( kt ) ! compute icebergs 396 401
Note: See TracChangeset
for help on using the changeset viewer.