Ignore:
Timestamp:
May 27, 2020, 4:52:16 PM (5 years ago)
Author:
lguez
Message:

Modify sensible heat due to rain sent to the ocean

Modify the sensible heat flux due to rain which is sent to the
ocean. Replace the computation of sens_prec_liq in procedure
calcul_fluxs by a call to sens_heat_rain. Set sens_prec_sol in
procedure calcul_fluxs to 0 because, for now, sens_heat_rain is
supposed to account for both rain and snow.

For the call to sens_heat_rain in procedure calcul_fluxs, we need
an additional dummy argument rhoa of calcul_fluxs. Add dummy
argument rhoa to ocean_cpl_noice, ocean_forced_noice,
ocean_forced_ice and ocean_cpl_ice because we need to pass it down
to calcul_fluxs.

Change the dimension of sens_prec_liq and sens_prec_sol in
procedures calcul_fluxs, ocean_cpl_noice, ocean_cpl_ice,
ocean_forced_noice, ocean_forced_ice, cpl_send_ocean_fields and
cpl_send_seaice_fields to knon.

In procedures ocean_forced_noice and ocean_cpl_noice, promote
sens_prec_liq from local variable to dummy argument because we need
it in surf_ocean. Remove useless initialization of sens_prec_liq
and sens_prec_sol in ocean_cpl_noice, ocean_cpl_ice,
ocean_forced_ice and ocean_forced_noice: they are intent out in
calcul_fluxs.

Remove variable rf of module phys_output_var_mod, we use
sens_prec_liq instead. Remove local variable yrf of procedure
pbl_surface. rf and yrf appeared in pbl_surface only to be output.
Remove variable o_rf of module phys_output_ctrlout_mod. Remove
dummy argument rf of procedure surf_ocean.

Do not call sens_heat_rain in surf_ocean since we now call it
from calcul_fluxs. Move the computation of rhoa in surf_ocean
before the calls to ocean_cpl_noice and ocean_forced_noice.

Add the computation of rhoa in surf_seaice, to pass it down to
ocean_cpl_ice and ocean_forced_ice.

If activate_ocean_skin == 1 then the results are changed because the
call to sens_heat_rain in calcul_fluxs now uses the SST from the
current time step of physics. On this point, the present revision
reverses revision [3463].

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/branches/Ocean_skin/libf/phylmd/ocean_forced_mod.F90

    r3463 r3687  
    2222       radsol, snow, agesno, &
    2323       qsurf, evap, fluxsens, fluxlat, flux_u1, flux_v1, &
    24        tsurf_new, dflux_s, dflux_l)
     24       tsurf_new, dflux_s, dflux_l, sens_prec_liq, rhoa)
    2525!
    2626! This subroutine treats the "open ocean", all grid points that are not entierly covered
     
    5555    REAL, DIMENSION(klon), INTENT(IN)        :: u1, v1, gustiness
    5656    REAL, DIMENSION(klon), INTENT(IN)        :: tsurf_in
     57    real, intent(in):: rhoa(:) ! (knon) density of moist air  (kg / m3)
    5758
    5859! In/Output arguments
     
    6970    REAL, DIMENSION(klon), INTENT(OUT)       :: tsurf_new
    7071    REAL, DIMENSION(klon), INTENT(OUT)       :: dflux_s, dflux_l
     72    REAL, intent(out):: sens_prec_liq(:) ! (knon)
    7173
    7274! Local variables
     
    7880    REAL, DIMENSION(klon)       :: u1_lay, v1_lay
    7981    LOGICAL                     :: check=.FALSE.
    80     REAL, DIMENSION(klon) :: sens_prec_liq, sens_prec_sol   
     82    REAL sens_prec_sol(knon)
    8183    REAL, DIMENSION(klon) :: lat_prec_liq, lat_prec_sol   
    8284
     
    111113    alb_neig(:) = 0.
    112114    agesno(:) = 0.
    113     sens_prec_liq = 0.; sens_prec_sol = 0.; lat_prec_liq = 0.; lat_prec_sol = 0.
     115    lat_prec_liq = 0.; lat_prec_sol = 0.
    114116
    115117! Suppose zero surface speed
     
    127129         f_qsat_oce,AcoefH, AcoefQ, BcoefH, BcoefQ, &
    128130         tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l, &
    129          sens_prec_liq, sens_prec_sol, lat_prec_liq, lat_prec_sol)
     131         sens_prec_liq, sens_prec_sol, lat_prec_liq, lat_prec_sol, rhoa)
    130132    if (activate_ocean_skin == 2) tsurf_new = tsurf_lim
    131133
     
    158160       radsol, snow, qsol, agesno, tsoil, &
    159161       qsurf, alb1_new, alb2_new, evap, fluxsens, fluxlat, flux_u1, flux_v1, &
    160        tsurf_new, dflux_s, dflux_l)
     162       tsurf_new, dflux_s, dflux_l, rhoa)
    161163!
    162164! This subroutine treats the ocean where there is ice.
     
    191193    REAL, DIMENSION(klon), INTENT(IN)    :: ps
    192194    REAL, DIMENSION(klon), INTENT(IN)    :: u1, v1, gustiness
     195    real, intent(in):: rhoa(:) ! (knon) density of moist air  (kg / m3)
    193196
    194197! In/Output arguments
     
    220223    REAL, DIMENSION(klon)       :: u0, v0
    221224    REAL, DIMENSION(klon)       :: u1_lay, v1_lay
    222     REAL, DIMENSION(klon)       :: sens_prec_liq, sens_prec_sol    
     225    REAL sens_prec_liq(knon), sens_prec_sol (knon)   
    223226    REAL, DIMENSION(klon)       :: lat_prec_liq, lat_prec_sol   
    224227
     
    254257
    255258    beta = 1.0
    256     sens_prec_liq = 0.; sens_prec_sol = 0.; lat_prec_liq = 0.; lat_prec_sol = 0.
     259    lat_prec_liq = 0.; lat_prec_sol = 0.
    257260
    258261! Suppose zero surface speed
     
    267270         f_qsat_oce,AcoefH, AcoefQ, BcoefH, BcoefQ, &
    268271         tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l, &
    269          sens_prec_liq, sens_prec_sol, lat_prec_liq, lat_prec_sol)
     272         sens_prec_liq, sens_prec_sol, lat_prec_liq, lat_prec_sol, rhoa)
    270273    do j = 1, knon
    271274      i = knindex(j)
Note: See TracChangeset for help on using the changeset viewer.