sens_heat_rain_m.F90 Source File


This file depends on

sourcefile~~sens_heat_rain_m.f90~~EfferentGraph sourcefile~sens_heat_rain_m.f90 sens_heat_rain_m.F90 sourcefile~const.f90 const.f90 sourcefile~sens_heat_rain_m.f90->sourcefile~const.f90 sourcefile~esat_m.f90 esat_m.f90 sourcefile~sens_heat_rain_m.f90->sourcefile~esat_m.f90

Files dependent on this one

sourcefile~~sens_heat_rain_m.f90~~AfferentGraph sourcefile~sens_heat_rain_m.f90 sens_heat_rain_m.F90 sourcefile~calcul_fluxs_mod.f90 calcul_fluxs_mod.f90 sourcefile~calcul_fluxs_mod.f90->sourcefile~sens_heat_rain_m.f90 sourcefile~calcul_fluxs_mod.f90~2 calcul_fluxs_mod.f90 sourcefile~calcul_fluxs_mod.f90~2->sourcefile~sens_heat_rain_m.f90 sourcefile~ocean_forced_mod.f90 ocean_forced_mod.F90 sourcefile~ocean_forced_mod.f90->sourcefile~calcul_fluxs_mod.f90 sourcefile~surf_landice_mod.f90~2 surf_landice_mod.F90 sourcefile~surf_landice_mod.f90~2->sourcefile~calcul_fluxs_mod.f90 sourcefile~surf_land_bucket_hetero_mod.f90 surf_land_bucket_hetero_mod.F90 sourcefile~surf_land_bucket_hetero_mod.f90->sourcefile~calcul_fluxs_mod.f90 sourcefile~surf_landice_mod.f90 surf_landice_mod.F90 sourcefile~surf_landice_mod.f90->sourcefile~calcul_fluxs_mod.f90 sourcefile~ocean_slab_mod.f90~2 ocean_slab_mod.f90 sourcefile~ocean_slab_mod.f90~2->sourcefile~calcul_fluxs_mod.f90 sourcefile~surf_land_bucket_mod.f90~2 surf_land_bucket_mod.F90 sourcefile~surf_land_bucket_mod.f90~2->sourcefile~calcul_fluxs_mod.f90 sourcefile~ocean_cpl_mod.f90 ocean_cpl_mod.f90 sourcefile~ocean_cpl_mod.f90->sourcefile~calcul_fluxs_mod.f90 sourcefile~ocean_cpl_mod.f90~2 ocean_cpl_mod.f90 sourcefile~ocean_cpl_mod.f90~2->sourcefile~calcul_fluxs_mod.f90 sourcefile~surf_land_bucket_mod.f90 surf_land_bucket_mod.F90 sourcefile~surf_land_bucket_mod.f90->sourcefile~calcul_fluxs_mod.f90 sourcefile~surf_land_mod.f90 surf_land_mod.F90 sourcefile~surf_land_mod.f90->sourcefile~calcul_fluxs_mod.f90 sourcefile~surf_land_mod.f90->sourcefile~surf_land_bucket_hetero_mod.f90 sourcefile~surf_land_mod.f90->sourcefile~surf_land_bucket_mod.f90 sourcefile~ocean_slab_mod.f90 ocean_slab_mod.f90 sourcefile~ocean_slab_mod.f90->sourcefile~calcul_fluxs_mod.f90 sourcefile~ocean_forced_mod.f90~2 ocean_forced_mod.F90 sourcefile~ocean_forced_mod.f90~2->sourcefile~calcul_fluxs_mod.f90 sourcefile~surf_land_mod.f90~2 surf_land_mod.F90 sourcefile~surf_land_mod.f90~2->sourcefile~calcul_fluxs_mod.f90 sourcefile~surf_land_mod.f90~2->sourcefile~surf_land_bucket_hetero_mod.f90 sourcefile~surf_land_mod.f90~2->sourcefile~surf_land_bucket_mod.f90 sourcefile~surf_land_bucket_hetero_mod.f90~2 surf_land_bucket_hetero_mod.F90 sourcefile~surf_land_bucket_hetero_mod.f90~2->sourcefile~calcul_fluxs_mod.f90 sourcefile~surf_seaice_mod.f90 surf_seaice_mod.F90 sourcefile~surf_seaice_mod.f90->sourcefile~ocean_forced_mod.f90 sourcefile~surf_seaice_mod.f90->sourcefile~ocean_cpl_mod.f90 sourcefile~surf_seaice_mod.f90->sourcefile~ocean_slab_mod.f90 sourcefile~surf_ocean_mod.f90~2 surf_ocean_mod.F90 sourcefile~surf_ocean_mod.f90~2->sourcefile~ocean_forced_mod.f90 sourcefile~surf_ocean_mod.f90~2->sourcefile~ocean_cpl_mod.f90 sourcefile~surf_ocean_mod.f90~2->sourcefile~ocean_slab_mod.f90 sourcefile~phys_output_write_mod.f90 phys_output_write_mod.F90 sourcefile~phys_output_write_mod.f90->sourcefile~ocean_slab_mod.f90 sourcefile~pbl_surface_mod.f90 pbl_surface_mod.F90 sourcefile~phys_output_write_mod.f90->sourcefile~pbl_surface_mod.f90 sourcefile~limit_slab.f90 limit_slab.f90 sourcefile~limit_slab.f90->sourcefile~ocean_slab_mod.f90 sourcefile~phys_output_write_mod.f90~2 phys_output_write_mod.F90 sourcefile~phys_output_write_mod.f90~2->sourcefile~ocean_slab_mod.f90 sourcefile~phys_output_write_mod.f90~2->sourcefile~pbl_surface_mod.f90 sourcefile~change_srf_frac_mod.f90 change_srf_frac_mod.f90 sourcefile~change_srf_frac_mod.f90->sourcefile~ocean_slab_mod.f90 sourcefile~change_srf_frac_mod.f90->sourcefile~pbl_surface_mod.f90 sourcefile~phys_output_write_spl_mod.f90~2 phys_output_write_spl_mod.F90 sourcefile~phys_output_write_spl_mod.f90~2->sourcefile~ocean_slab_mod.f90 sourcefile~phys_output_write_spl_mod.f90~2->sourcefile~pbl_surface_mod.f90 sourcefile~pbl_surface_mod.f90->sourcefile~surf_landice_mod.f90 sourcefile~pbl_surface_mod.f90->sourcefile~surf_land_mod.f90 sourcefile~pbl_surface_mod.f90->sourcefile~surf_seaice_mod.f90 sourcefile~surf_ocean_mod.f90 surf_ocean_mod.F90 sourcefile~pbl_surface_mod.f90->sourcefile~surf_ocean_mod.f90 sourcefile~surf_seaice_mod.f90~2 surf_seaice_mod.F90 sourcefile~surf_seaice_mod.f90~2->sourcefile~ocean_forced_mod.f90 sourcefile~surf_seaice_mod.f90~2->sourcefile~ocean_cpl_mod.f90 sourcefile~surf_seaice_mod.f90~2->sourcefile~ocean_slab_mod.f90 sourcefile~phys_output_write_spl_mod.f90 phys_output_write_spl_mod.F90 sourcefile~phys_output_write_spl_mod.f90->sourcefile~ocean_slab_mod.f90 sourcefile~phys_output_write_spl_mod.f90->sourcefile~pbl_surface_mod.f90 sourcefile~limit_slab.f90~2 limit_slab.f90 sourcefile~limit_slab.f90~2->sourcefile~ocean_slab_mod.f90 sourcefile~phyredem.f90 phyredem.f90 sourcefile~phyredem.f90->sourcefile~ocean_slab_mod.f90 sourcefile~phyredem.f90->sourcefile~pbl_surface_mod.f90 sourcefile~phyetat0_mod.f90 phyetat0_mod.f90 sourcefile~phyetat0_mod.f90->sourcefile~ocean_cpl_mod.f90 sourcefile~phyetat0_mod.f90->sourcefile~ocean_slab_mod.f90 sourcefile~phyetat0_mod.f90->sourcefile~pbl_surface_mod.f90 sourcefile~surf_ocean_mod.f90->sourcefile~ocean_forced_mod.f90 sourcefile~surf_ocean_mod.f90->sourcefile~ocean_cpl_mod.f90 sourcefile~surf_ocean_mod.f90->sourcefile~ocean_slab_mod.f90 sourcefile~pbl_surface_mod.f90~2 pbl_surface_mod.F90 sourcefile~pbl_surface_mod.f90~2->sourcefile~surf_landice_mod.f90 sourcefile~pbl_surface_mod.f90~2->sourcefile~surf_land_mod.f90 sourcefile~pbl_surface_mod.f90~2->sourcefile~surf_seaice_mod.f90 sourcefile~pbl_surface_mod.f90~2->sourcefile~surf_ocean_mod.f90 sourcefile~diag_slp.f90 diag_slp.f90 sourcefile~diag_slp.f90->sourcefile~phys_output_write_mod.f90 sourcefile~phys_output_mod.f90 phys_output_mod.F90 sourcefile~phys_output_mod.f90->sourcefile~phys_output_write_mod.f90 sourcefile~diag_slp.f90~2 diag_slp.f90 sourcefile~diag_slp.f90~2->sourcefile~phys_output_write_mod.f90 sourcefile~old_lmdz1d.f90 old_lmdz1d.f90 sourcefile~old_lmdz1d.f90->sourcefile~pbl_surface_mod.f90 sourcefile~phyaqua_mod.f90 phyaqua_mod.F90 sourcefile~old_lmdz1d.f90->sourcefile~phyaqua_mod.f90 sourcefile~physiq_mod.f90 physiq_mod.F90 sourcefile~old_lmdz1d.f90->sourcefile~physiq_mod.f90 sourcefile~iniphysiq_mod.f90 iniphysiq_mod.F90 sourcefile~old_lmdz1d.f90->sourcefile~iniphysiq_mod.f90 sourcefile~create_etat0_unstruct_mod.f90 create_etat0_unstruct_mod.f90 sourcefile~create_etat0_unstruct_mod.f90->sourcefile~pbl_surface_mod.f90 sourcefile~phyaqua_mod.f90->sourcefile~pbl_surface_mod.f90 sourcefile~physiqex_mod.f90 physiqex_mod.F90 sourcefile~physiqex_mod.f90->sourcefile~phyetat0_mod.f90 sourcefile~physiq_mod.f90->sourcefile~phys_output_write_mod.f90 sourcefile~physiq_mod.f90->sourcefile~change_srf_frac_mod.f90 sourcefile~physiq_mod.f90->sourcefile~pbl_surface_mod.f90 sourcefile~physiq_mod.f90->sourcefile~phys_output_write_spl_mod.f90 sourcefile~physiq_mod.f90->sourcefile~phyetat0_mod.f90 sourcefile~physiq_mod.f90->sourcefile~diag_slp.f90 sourcefile~physiq_mod.f90->sourcefile~phys_output_mod.f90 sourcefile~physiq_mod.f90->sourcefile~phyaqua_mod.f90 sourcefile~physiq_mod.f90->sourcefile~physiqex_mod.f90 sourcefile~create_etat0_limit_unstruct_mod.f90 create_etat0_limit_unstruct_mod.f90 sourcefile~physiq_mod.f90->sourcefile~create_etat0_limit_unstruct_mod.f90 sourcefile~phys_output_mod.f90~2 phys_output_mod.F90 sourcefile~phys_output_mod.f90~2->sourcefile~phys_output_write_mod.f90 sourcefile~etat0phys_netcdf.f90 etat0phys_netcdf.f90 sourcefile~etat0phys_netcdf.f90->sourcefile~pbl_surface_mod.f90 sourcefile~create_etat0_unstruct_mod.f90~2 create_etat0_unstruct_mod.f90 sourcefile~create_etat0_unstruct_mod.f90~2->sourcefile~pbl_surface_mod.f90 sourcefile~scm.f90 scm.f90 sourcefile~scm.f90->sourcefile~pbl_surface_mod.f90 sourcefile~scm.f90->sourcefile~phyaqua_mod.f90 sourcefile~scm.f90->sourcefile~physiq_mod.f90 sourcefile~scm.f90->sourcefile~iniphysiq_mod.f90 sourcefile~physiq_mod.f90~2 physiq_mod.F90 sourcefile~physiq_mod.f90~2->sourcefile~phys_output_write_mod.f90 sourcefile~physiq_mod.f90~2->sourcefile~change_srf_frac_mod.f90 sourcefile~physiq_mod.f90~2->sourcefile~pbl_surface_mod.f90 sourcefile~physiq_mod.f90~2->sourcefile~phys_output_write_spl_mod.f90 sourcefile~physiq_mod.f90~2->sourcefile~phyetat0_mod.f90 sourcefile~physiq_mod.f90~2->sourcefile~diag_slp.f90 sourcefile~physiq_mod.f90~2->sourcefile~phys_output_mod.f90 sourcefile~physiq_mod.f90~2->sourcefile~phyaqua_mod.f90 sourcefile~physiq_mod.f90~2->sourcefile~physiqex_mod.f90 sourcefile~physiq_mod.f90~2->sourcefile~create_etat0_limit_unstruct_mod.f90 sourcefile~physiqex_mod.f90~2 physiqex_mod.F90 sourcefile~physiqex_mod.f90~2->sourcefile~phyetat0_mod.f90 sourcefile~recmwf_aero.f90 recmwf_aero.F90 sourcefile~recmwf_aero.f90->sourcefile~phys_output_mod.f90 sourcefile~create_etat0_limit_unstruct_mod.f90~2 create_etat0_limit_unstruct_mod.f90 sourcefile~create_etat0_limit_unstruct_mod.f90~2->sourcefile~create_etat0_unstruct_mod.f90 sourcefile~create_etat0_limit_unstruct_mod.f90~2->sourcefile~phyaqua_mod.f90 sourcefile~iniphysiq_mod.f90->sourcefile~phyaqua_mod.f90 sourcefile~callphysiq_mod.f90 callphysiq_mod.f90 sourcefile~callphysiq_mod.f90->sourcefile~physiq_mod.f90 sourcefile~recmwf_aero.f90~2 recmwf_aero.F90 sourcefile~recmwf_aero.f90~2->sourcefile~phys_output_mod.f90 sourcefile~sw_aeroar4.f90~2 sw_aeroAR4.f90 sourcefile~sw_aeroar4.f90~2->sourcefile~phys_output_mod.f90 sourcefile~ce0l.f90 ce0l.F90 sourcefile~ce0l.f90->sourcefile~etat0phys_netcdf.f90 sourcefile~ce0l.f90->sourcefile~iniphysiq_mod.f90 sourcefile~callphysiq_mod.f90~2 callphysiq_mod.f90 sourcefile~callphysiq_mod.f90~2->sourcefile~physiq_mod.f90 sourcefile~create_etat0_limit_unstruct_mod.f90->sourcefile~create_etat0_unstruct_mod.f90 sourcefile~create_etat0_limit_unstruct_mod.f90->sourcefile~phyaqua_mod.f90 sourcefile~iniphysiq_mod.f90~2 iniphysiq_mod.F90 sourcefile~iniphysiq_mod.f90~2->sourcefile~phyaqua_mod.f90 sourcefile~sw_aeroar4.f90 sw_aeroAR4.f90 sourcefile~sw_aeroar4.f90->sourcefile~phys_output_mod.f90 sourcefile~calfis.f90 calfis.f90 sourcefile~calfis.f90->sourcefile~callphysiq_mod.f90 sourcefile~gcm.f90 gcm.F90 sourcefile~gcm.f90->sourcefile~iniphysiq_mod.f90 sourcefile~replay3d.f90 replay3d.f90 sourcefile~replay3d.f90->sourcefile~iniphysiq_mod.f90

Contents

Source Code


Source Code

module sens_heat_rain_m

  implicit none

contains

#ifdef IN_LMDZ
  real function sens_heat_rain(rain, t, q, rhoa, xlv, t_int, p)
#else
  elemental real function sens_heat_rain(rain, t, q, rhoa, xlv, t_int, p)
#endif

    ! Computes heat flux due to rainfall, in W m-2, positive
    ! upward.

    ! If in LMDZ, do not declare this function as elemental because
    ! YOMCST.h contains an OpenMP directive, and that only works in
    ! OpenMP 5.0.

    use const, only: cpa, cpw, rgas
#ifndef IN_LMDZ
    use const, only: eps_w
#endif
    use esat_m, only: esat

#ifdef IN_LMDZ
     USE yomcst_mod_h, ONLY: eps_w
#endif

    real, intent(in):: rain ! rain mass flux, in kg m-2 s-1
    real, intent(in):: t ! air temperature at 10 m, in K
    real, intent(in):: q ! specific humidity at 10 m
    real, intent(in):: rhoa ! density of moist air  (kg / m3)
    real, intent(in):: xlv ! latent heat of evaporation (J / kg)
    real, intent(in):: t_int ! interface temperature, in K
    real, intent(in):: p ! surface pressure, in Pa

    ! Local:
    
    real es ! saturation pressure of wator vapor, in Pa
    real alfac ! wet bulb factor
    real dwat ! water vapour diffusivity
    real dtmp ! heat diffusivity
    real q_int ! specific (saturation) humidity at ocean interface
    real t_celsius ! air temperature at 10 m, in Celsius degrees

    real wetc
    ! derivative of saturated mass fraction of water vapor with
    ! respect to temperature, at constant total pressure

    !---------------------------------------------------------------------

    es = esat(t_int, p) * 0.98 ! reduced for salinity, Kraus 1972 page 46
    q_int = eps_w * (es / (p - (1. - eps_w) * es))
    wetc = eps_w * xlv * q_int / (rgas * t_int**2)
    dwat = 2.11e-5 * (t / 273.15)**1.94
    t_celsius = t - 273.15
    dtmp = (1. + 3.309e-3 * t_celsius - 1.44e-6 * t_celsius**2) * 0.02411 &
         / (rhoa * cpa)

    ! Gosnell 1995 k0991, equation (11):
    alfac =  1. / (1. + (wetc * xlv * dwat) / (cpa * dtmp))

    ! Gosnell 1995 k0991, equation (12):
    sens_heat_rain =  rain * alfac * cpw * (t_int - t + (q_int - q) * xlv / cpa)

  end function sens_heat_rain
  
end module sens_heat_rain_m