New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 8897 – NEMO

Changeset 8897


Ignore:
Timestamp:
2017-12-05T11:44:44+01:00 (6 years ago)
Author:
davestorkey
Message:

UKMO/dev_r5518_flux_correction branch: update formulation.

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  
    261261                           !  option 1 and 4 need ln_isfcav = .true. (domzgr) 
    262262   ln_ssr      = .true.    !  Sea Surface Restoring on T and/or S       (T => fill namsbc_ssr) 
     263   ln_hfp      = .false.   !  Heat flux perturbation 
    263264   nn_fwb      = 2         !  FreshWater Budget: =0 unchecked 
    264265                           !     =1 global mean of e-p-r set to zero at each time step 
     
    327328   sn_snow     = 'ncar_precip.15JUNE2009_fill' ,        -1         , 'SNOW'    ,   .false.    , .true. , 'yearly'  , 'weights_core_orca2_bilinear_noc.nc'  , ''       , '' 
    328329   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'  , ''       , '' 
    330330 
    331331   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) 
    333332   ln_taudif   = .false.   !  HF tau contribution: use "mean of stress module - module of the mean stress" data 
    334333   rn_zqt      = 10.        !  Air temperature and humidity reference height (m) 
     
    481480   ln_ref_apr  = .false.    !  ref. pressure: global mean Patm (T) or a constant (F) 
    482481   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 
    483490/ 
    484491!----------------------------------------------------------------------- 
  • branches/UKMO/dev_r5518_flux_correction/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_oce.F90

    r8702 r8897  
    4545   LOGICAL , PUBLIC ::   ln_rnf         !: runoffs / runoff mouths 
    4646   LOGICAL , PUBLIC ::   ln_ssr         !: Sea Surface restoring on SST and/or SSS       
     47   LOGICAL , PUBLIC ::   ln_hfp         !: Heat flux perturbation 
    4748   LOGICAL , PUBLIC ::   ln_apr_dyn     !: Atmospheric pressure forcing used on dynamics (ocean & ice) 
    4849   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  
    6262   PUBLIC   turb_core_2z         ! routine calles in sbcblk_mfs module 
    6363 
    64    INTEGER , PARAMETER ::   jpfld   = 10          ! maximum number of files to read 
     64   INTEGER , PARAMETER ::   jpfld   = 9           ! maximum number of files to read 
    6565   INTEGER , PARAMETER ::   jp_wndi = 1           ! index of 10m wind velocity (i-component) (m/s)    at T-point 
    6666   INTEGER , PARAMETER ::   jp_wndj = 2           ! index of 10m wind velocity (j-component) (m/s)    at T-point 
     
    7171   INTEGER , PARAMETER ::   jp_prec = 7           ! index of total precipitation (rain+snow) (Kg/m2/s) 
    7272   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 
    7574 
    7675   TYPE(FLD), ALLOCATABLE, DIMENSION(:) ::   sf   ! structure of input fields (file informations, fields read) 
     
    8685 
    8786   !                                  !!* Namelist namsbc_core : CORE bulk parameters 
    88    LOGICAL  ::   ln_htcorr   ! logical flag to apply heat flux correction to downward longwave 
    8987   LOGICAL  ::   ln_taudif   ! logical flag to use the "mean of stress module - module of mean stress" data 
    9088   REAL(wp) ::   rn_pfac     ! multiplication factor for precipitation 
     
    149147      TYPE(FLD_N) ::   sn_wndi, sn_wndj, sn_humi, sn_qsr       ! informations about the fields to be read 
    150148      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,  & 
    153151         &                  sn_wndi, sn_wndj, sn_humi  , sn_qsr ,           & 
    154152         &                  sn_qlw , sn_tair, sn_prec  , sn_snow,           & 
    155          &                  sn_htcorr, sn_tdif, rn_zqt,  rn_zu 
     153         &                  sn_tdif, rn_zqt,  rn_zu 
    156154      !!--------------------------------------------------------------------- 
    157155      ! 
     
    182180         slf_i(jp_tair) = sn_tair   ;   slf_i(jp_humi) = sn_humi 
    183181         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         ! 
    187184         lhftau = ln_taudif                        ! do we use HF tau information? 
    188          jfld = jfld - COUNT( (/.NOT. lhftau/) ) 
     185         jfld = jpfld - COUNT( (/.NOT. lhftau/) ) 
    189186         ! 
    190187         ALLOCATE( sf(jfld), STAT=ierror )         ! set sf structure 
     
    253250      REAL(wp), DIMENSION(:,:), POINTER ::   zqsatw            ! specific humidity at pst 
    254251      REAL(wp), DIMENSION(:,:), POINTER ::   zqlw, zqsb        ! long wave and sensible heat fluxes 
    255       REAL(wp), DIMENSION(:,:), POINTER ::   zqcorr            ! bias correction to long wave flux 
    256252      REAL(wp), DIMENSION(:,:), POINTER ::   zqla, zevap       ! latent heat fluxes and evaporation 
    257253      REAL(wp), DIMENSION(:,:), POINTER ::   Cd                ! transfer coefficient for momentum      (tau) 
     
    265261      IF( nn_timing == 1 )  CALL timing_start('blk_oce_core') 
    266262      ! 
    267       CALL wrk_alloc( jpi,jpj, zwnd_i, zwnd_j, zqsatw, zqlw, zqcorr, zqsb, zqla, zevap ) 
     263      CALL wrk_alloc( jpi,jpj, zwnd_i, zwnd_j, zqsatw, zqlw, zqsb, zqla, zevap ) 
    268264      CALL wrk_alloc( jpi,jpj, Cd, Ch, Ce, zst, zt_zu, zq_zu ) 
    269265      ! 
     
    312308 
    313309      zqlw(:,:) = (  sf(jp_qlw)%fnow(:,:,1) - Stef * zst(:,:)*zst(:,:)*zst(:,:)*zst(:,:)  ) * tmask(:,:,1)   ! Long  Wave 
    314       IF( ln_htcorr ) THEN 
    315          ! bias correction 
    316          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          ENDWHERE 
    320          WHERE( fr_i(:,:) >= 0.5 )  
    321             zqcorr(:,:) = 0.0 
    322          ENDWHERE 
    323          zqlw(:,:) = ( zqlw(:,:) - zqcorr(:,:) ) * tmask(:,:,1) 
    324       ENDIF 
    325  
    326310      ! ----------------------------------------------------------------------------- ! 
    327311      !     II    Turbulent FLUXES                                                    ! 
     
    412396      ! 
    413397      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 ocean 
    415398         CALL iom_put( "qlw_oce" ,   zqlw )                 ! output downward longwave heat over the ocean 
    416399         CALL iom_put( "qsb_oce" , - zqsb )                 ! output downward sensible heat over the ocean 
     
    430413      ENDIF 
    431414      ! 
    432       CALL wrk_dealloc( jpi,jpj, zwnd_i, zwnd_j, zqsatw, zqlw, zqcorr, zqsb, zqla, zevap ) 
     415      CALL wrk_dealloc( jpi,jpj, zwnd_i, zwnd_j, zqsatw, zqlw, zqsb, zqla, zevap ) 
    433416      CALL wrk_dealloc( jpi,jpj, Cd, Ch, Ce, zst, zt_zu, zq_zu ) 
    434417      ! 
  • branches/UKMO/dev_r5518_flux_correction/NEMOGCM/NEMO/OPA_SRC/SBC/sbcmod.F90

    r8702 r8897  
    4141   USE cpl_oasis3       ! OASIS routines for coupling 
    4242   USE sbcssr           ! surface boundary condition: sea surface restoring 
     43   USE sbchfp           ! surface boundary condition: heat flux perturbation 
    4344   USE sbcrnf           ! surface boundary condition: runoffs 
    4445   USE sbcisf           ! surface boundary condition: ice shelf 
     
    8990         &             ln_blk_mfs, ln_apr_dyn, nn_ice, nn_ice_embd, ln_dm2dc   , ln_rnf   ,   & 
    9091         &             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 
    9293      INTEGER  ::   ios 
    9394      INTEGER  ::   ierr, ierr0, ierr1, ierr2, ierr3, jpm 
     
    296297 
    297298                               CALL sbc_ssm_init               ! Sea-surface mean fields initialisation 
     299      ! 
     300      IF( ln_hfp           )   CALL sbc_hfp_init              ! heat flux perturbation initialisation 
    298301      ! 
    299302      IF( ln_ssr           )   CALL sbc_ssr_init               ! Sea-Surface Restoring initialisation 
     
    393396      END SELECT                                               
    394397 
     398      IF( ln_hfp         )   CALL sbc_hfp( kt )               ! add heat flux perturbation 
     399 
    395400      IF( ln_icebergs    )   CALL icb_stp( kt )                   ! compute icebergs 
    396401 
Note: See TracChangeset for help on using the changeset viewer.