Changeset 3463


Ignore:
Timestamp:
Feb 8, 2019, 2:28:03 PM (5 years ago)
Author:
lguez
Message:

Compute surface sensible heat flux and latent heat flux using
ocean-atmosphere interface temperature instead of bulk SST, if
activate_ocean_skin == 2. So we add argument tsurf_in to
ocean_cpl_noice and ocean_forced_noice, and call calcul_fluxs with
tsurf_in. tsurf_in was already an argument of ocean_slab_noice, and
calcul_fluxs was already called with tsurf_in in ocean_slab_noice.

In procedure surf_ocean, when activate_ocean_skin == 2, rf should be
computed from the ocean-atmosphere interface temperature, tsurf_in,
not the SST bulk temperature, tsurf_new. So, for consistency, we also
use tsurf_in when activate_ocean_skin == 1. So this revision also
changes the results when activate_ocean_skin == 1.

Location:
LMDZ6/branches/Ocean_skin/libf/phylmd
Files:
3 edited

Legend:

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

    r3102 r3463  
    5252       AcoefH, AcoefQ, BcoefH, BcoefQ, &
    5353       AcoefU, AcoefV, BcoefU, BcoefV, &
    54        ps, u1, v1, gustiness, &
     54       ps, u1, v1, gustiness, tsurf_in, &
    5555       radsol, snow, agesno, &
    5656       qsurf, evap, fluxsens, fluxlat, flux_u1, flux_v1, &
     
    6868    USE phys_output_var_mod, ONLY : sens_prec_liq_o, sens_prec_sol_o, lat_prec_liq_o, lat_prec_sol_o
    6969    USE cpl_mod,             ONLY : gath2cpl
     70    use config_ocean_skin_m, only: activate_ocean_skin
    7071
    7172    INCLUDE "YOMCST.h"
     
    9091    REAL, DIMENSION(klon), INTENT(IN)        :: ps
    9192    REAL, DIMENSION(klon), INTENT(IN)        :: u1, v1, gustiness
     93    REAL, DIMENSION(klon), INTENT(IN)        :: tsurf_in
    9294
    9395! In/Output arguments
     
    147149
    148150    CALL calcul_fluxs(knon, is_oce, dtime, &
    149          tsurf_cpl, p1lay, cal, beta, cdragh, cdragq, ps, &
     151         merge(tsurf_in, tsurf_cpl, activate_ocean_skin == 2), p1lay, cal, &
     152         beta, cdragh, cdragq, ps, &
    150153         precip_rain, precip_snow, snow, qsurf,  &
    151154         radsol, dif_grnd, temp_air, spechum, u1_lay, v1_lay, gustiness, &
     
    153156         tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l, &
    154157         sens_prec_liq, sens_prec_sol, lat_prec_liq, lat_prec_sol)
     158    if (activate_ocean_skin == 2) tsurf_new = tsurf_cpl
     159   
    155160    do j = 1, knon
    156161      i = knindex(j)
  • LMDZ6/branches/Ocean_skin/libf/phylmd/ocean_forced_mod.F90

    r3327 r3463  
    1919       AcoefH, AcoefQ, BcoefH, BcoefQ, &
    2020       AcoefU, AcoefV, BcoefU, BcoefV, &
    21        ps, u1, v1, gustiness, &
     21       ps, u1, v1, gustiness, tsurf_in, &
    2222       radsol, snow, agesno, &
    2323       qsurf, evap, fluxsens, fluxlat, flux_u1, flux_v1, &
     
    3535    USE indice_sol_mod
    3636    USE phys_output_var_mod, ONLY : sens_prec_liq_o, sens_prec_sol_o, lat_prec_liq_o, lat_prec_sol_o
     37    use config_ocean_skin_m, only: activate_ocean_skin
    3738
    3839    INCLUDE "YOMCST.h"
     
    5354    REAL, DIMENSION(klon), INTENT(IN)        :: ps
    5455    REAL, DIMENSION(klon), INTENT(IN)        :: u1, v1, gustiness
     56    REAL, DIMENSION(klon), INTENT(IN)        :: tsurf_in
    5557
    5658! In/Output arguments
     
    119121! Calcul de tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l and qsurf
    120122    CALL calcul_fluxs(knon, is_oce, dtime, &
    121          tsurf_lim, p1lay, cal, beta, cdragh, cdragq, ps, &
     123         merge(tsurf_in, tsurf_lim, activate_ocean_skin == 2), p1lay, cal, &
     124         beta, cdragh, cdragq, ps, &
    122125         precip_rain, precip_snow, snow, qsurf,  &
    123126         radsol, dif_grnd, temp_air, spechum, u1_lay, v1_lay, gustiness, &
     
    125128         tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l, &
    126129         sens_prec_liq, sens_prec_sol, lat_prec_liq, lat_prec_sol)
     130    if (activate_ocean_skin == 2) tsurf_new = tsurf_lim
    127131
    128132    do j = 1, knon
  • LMDZ6/branches/Ocean_skin/libf/phylmd/surf_ocean_mod.F90

    r3458 r3463  
    182182            AcoefH, AcoefQ, BcoefH, BcoefQ, &
    183183            AcoefU, AcoefV, BcoefU, BcoefV, &
    184             ps, u1, v1, gustiness, &
     184            ps, u1, v1, gustiness, tsurf_in, &
    185185            radsol, snow, agesno, &
    186186            qsurf, evap, fluxsens, fluxlat, flux_u1, flux_v1, &
     
    205205            AcoefH, AcoefQ, BcoefH, BcoefQ, &
    206206            AcoefU, AcoefV, BcoefU, BcoefV, &
    207             ps, u1, v1, gustiness, &
     207            ps, u1, v1, gustiness, tsurf_in, &
    208208            radsol, snow, agesno, &
    209209            qsurf, evap, fluxsens, fluxlat, flux_u1, flux_v1, &
     
    317317       precip_tot = precip_rain(:knon) + precip_snow(:knon)
    318318       rf =  sens_heat_rain(precip_tot, temp_air(:knon), spechum(:knon), rhoa, &
    319             xlv, tsurf_new(:knon), ps(:knon))
     319            xlv, tsurf_in(:knon), ps(:knon))
    320320       s1 = 35.
    321321       call bulk_flux(tkt, tks, taur, dter, dser, t_int, s_int, ds_ns, dt_ns, &
Note: See TracChangeset for help on using the changeset viewer.