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 8778 – NEMO

Changeset 8778


Ignore:
Timestamp:
2017-11-22T10:25:10+01:00 (6 years ago)
Author:
davestorkey
Message:

UKMO dev_r5518_flux_correction branch: commit code.

Location:
branches/UKMO/dev_r5518_flux_correction/NEMOGCM
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/dev_r5518_flux_correction/NEMOGCM/CONFIG/SHARED/field_def.xml

    r5517 r8778  
    201201 
    202202         <!-- *_oce variables available with ln_blk_clio or ln_blk_core --> 
     203         <field id="qcorr_oce"    long_name="Correction to Downward Heat Flux over open ocean"  standard_name="surface_net_downward_longwave_flux"   unit="W/m2"  /> 
    203204         <field id="qlw_oce"      long_name="Longwave Downward Heat Flux over open ocean"  standard_name="surface_net_downward_longwave_flux"   unit="W/m2"  /> 
    204205         <field id="qsb_oce"      long_name="Sensible Downward Heat Flux over open ocean"  standard_name="surface_downward_sensible_heat_flux"  unit="W/m2"  /> 
  • branches/UKMO/dev_r5518_flux_correction/NEMOGCM/CONFIG/SHARED/namelist_ref

    r5501 r8778  
    327327   sn_snow     = 'ncar_precip.15JUNE2009_fill' ,        -1         , 'SNOW'    ,   .false.    , .true. , 'yearly'  , 'weights_core_orca2_bilinear_noc.nc'  , ''       , '' 
    328328   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'  , ''       , '' 
    329330 
    330331   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) 
    331333   ln_taudif   = .false.   !  HF tau contribution: use "mean of stress module - module of the mean stress" data 
    332334   rn_zqt      = 10.        !  Air temperature and humidity reference height (m) 
  • branches/UKMO/dev_r5518_flux_correction/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_core.F90

    r8702 r8778  
    6262   PUBLIC   turb_core_2z         ! routine calles in sbcblk_mfs module 
    6363 
    64    INTEGER , PARAMETER ::   jpfld   = 9           ! maximum number of files to read 
     64   INTEGER , PARAMETER ::   jpfld   = 10          ! 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_tdif = 9           ! index of tau diff associated to HF tau   (N/m2)   at T-point 
     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 
    7475 
    7576   TYPE(FLD), ALLOCATABLE, DIMENSION(:) ::   sf   ! structure of input fields (file informations, fields read) 
     
    8586 
    8687   !                                  !!* Namelist namsbc_core : CORE bulk parameters 
     88   LOGICAL  ::   ln_htcorr   ! logical flag to apply heat flux correction to downward longwave 
    8789   LOGICAL  ::   ln_taudif   ! logical flag to use the "mean of stress module - module of mean stress" data 
    8890   REAL(wp) ::   rn_pfac     ! multiplication factor for precipitation 
     
    147149      TYPE(FLD_N) ::   sn_wndi, sn_wndj, sn_humi, sn_qsr       ! informations about the fields to be read 
    148150      TYPE(FLD_N) ::   sn_qlw , sn_tair, sn_prec, sn_snow      !   "                                 " 
    149       TYPE(FLD_N) ::   sn_tdif                                 !   "                                 " 
    150       NAMELIST/namsbc_core/ cn_dir , ln_taudif, rn_pfac, rn_efac, rn_vfac,  & 
     151      TYPE(FLD_N) ::   sn_htcorr, sn_tdif                      !   "                                 " 
     152      NAMELIST/namsbc_core/ cn_dir , ln_htcorr, ln_taudif, rn_pfac, rn_efac, rn_vfac,  & 
    151153         &                  sn_wndi, sn_wndj, sn_humi  , sn_qsr ,           & 
    152154         &                  sn_qlw , sn_tair, sn_prec  , sn_snow,           & 
    153          &                  sn_tdif, rn_zqt,  rn_zu 
     155         &                  sn_htcorr, sn_tdif, rn_zqt,  rn_zu 
    154156      !!--------------------------------------------------------------------- 
    155157      ! 
     
    180182         slf_i(jp_tair) = sn_tair   ;   slf_i(jp_humi) = sn_humi 
    181183         slf_i(jp_prec) = sn_prec   ;   slf_i(jp_snow) = sn_snow 
    182          slf_i(jp_tdif) = sn_tdif 
    183          ! 
     184         slf_i(jp_htcorr) = sn_htcorr ; slf_i(jp_tdif) = sn_tdif 
     185         ! 
     186         jfld = jpfld - COUNT( (/.NOT. ln_htcorr/) ) 
    184187         lhftau = ln_taudif                        ! do we use HF tau information? 
    185188         jfld = jpfld - COUNT( (/.NOT. lhftau/) ) 
     
    250253      REAL(wp), DIMENSION(:,:), POINTER ::   zqsatw            ! specific humidity at pst 
    251254      REAL(wp), DIMENSION(:,:), POINTER ::   zqlw, zqsb        ! long wave and sensible heat fluxes 
     255      REAL(wp), DIMENSION(:,:), POINTER ::   zqcorr            ! bias correction to long wave flux 
    252256      REAL(wp), DIMENSION(:,:), POINTER ::   zqla, zevap       ! latent heat fluxes and evaporation 
    253257      REAL(wp), DIMENSION(:,:), POINTER ::   Cd                ! transfer coefficient for momentum      (tau) 
     
    261265      IF( nn_timing == 1 )  CALL timing_start('blk_oce_core') 
    262266      ! 
    263       CALL wrk_alloc( jpi,jpj, zwnd_i, zwnd_j, zqsatw, zqlw, zqsb, zqla, zevap ) 
     267      CALL wrk_alloc( jpi,jpj, zwnd_i, zwnd_j, zqsatw, zqlw, zqcorr, zqsb, zqla, zevap ) 
    264268      CALL wrk_alloc( jpi,jpj, Cd, Ch, Ce, zst, zt_zu, zq_zu ) 
    265269      ! 
     
    308312 
    309313      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 
    310326      ! ----------------------------------------------------------------------------- ! 
    311327      !     II    Turbulent FLUXES                                                    ! 
     
    395411#endif 
    396412      ! 
    397       IF ( nn_ice == 0 ) THEN 
     413      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 
    398415         CALL iom_put( "qlw_oce" ,   zqlw )                 ! output downward longwave heat over the ocean 
    399416         CALL iom_put( "qsb_oce" , - zqsb )                 ! output downward sensible heat over the ocean 
     
    413430      ENDIF 
    414431      ! 
    415       CALL wrk_dealloc( jpi,jpj, zwnd_i, zwnd_j, zqsatw, zqlw, zqsb, zqla, zevap ) 
     432      CALL wrk_dealloc( jpi,jpj, zwnd_i, zwnd_j, zqsatw, zqlw, zqcorr, zqsb, zqla, zevap ) 
    416433      CALL wrk_dealloc( jpi,jpj, Cd, Ch, Ce, zst, zt_zu, zq_zu ) 
    417434      ! 
Note: See TracChangeset for help on using the changeset viewer.