Ignore:
Timestamp:
Feb 3, 2020, 2:27:46 PM (5 years ago)
Author:
lguez
Message:

If the ocean skin parameterization is working (passively or actively,
activate_ocean_skin >= 1) and we are coupled to the ocean then
receive bulk salinity of the surface layer of the ocean from the ocean
and feed it to procedure bulk_flux instead of the constant
value 35. If the ocean skin parameterization is working actively
(activate_ocean_skin == 2) and we are coupled to the ocean then send
ocean-air interface temperature to the ocean. We can only send
interface temperature from the previous time-step since communication
with the ocean is before the call to bulk_flux. In module cpl_mod,
define cpl_t_int with rank 1: no dimension for cpl_index because
t_int is only defined over ocean. New dummy argument sss of
procedures cpl_receive_ocean_fields and ocean_cpl_noice. New dummy
argument t_int of cpl_send_ocean_fields. In procedure
surf_ocean, rename local variable s1 to sss and give it the size
klon, which is required by the coupling machinery.

File:
1 edited

Legend:

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

    r3601 r3627  
    5757    REAL, DIMENSION(klon), INTENT(IN)        :: rmu0 
    5858    REAL, DIMENSION(klon), INTENT(IN)        :: fder
    59     REAL, DIMENSION(klon), INTENT(IN)        :: tsurf_in
     59    REAL, INTENT(IN):: tsurf_in(klon) ! defined only for subscripts 1:knon
    6060    REAL, DIMENSION(klon), INTENT(IN)        :: p1lay,z1lay ! pression (Pa) et altitude (m) du premier niveau
    6161    REAL, DIMENSION(klon), INTENT(IN)        :: cdragh
     
    102102    REAL, DIMENSION(klon), INTENT(OUT)       :: flux_u1, flux_v1
    103103
    104     REAL, intent(out):: t_int(:) ! (knon) interface temperature, in K
    105     real, intent(out):: s_int(:) ! (knon) interface salinity, in ppt
     104    REAL, intent(out):: t_int(:) ! (knon) ocean-air interface temperature, in K
     105    real, intent(out):: s_int(:) ! (knon) ocean-air interface salinity, in ppt
    106106
    107107    REAL, intent(out):: dter(:) ! (knon)
     
    111111
    112112    REAL, intent(out):: dser(:) ! (knon)
    113     ! Temperature variation in the diffusive microlayer, that is
    114     ! subskin temperature minus ocean-air interface temperature. In K.
     113    ! Salinity variation in the diffusive microlayer, that is
     114    ! ocean-air interface salinity minus subskin salinity. In ppt.
    115115
    116116    REAL, intent(out):: tkt(:) ! (knon)
     
    140140    real xlv(knon) ! chaleur latente d'évaporation (J / kg)
    141141    real precip_tot(knon) ! rain + snow
    142     real S1(knon) ! salinity at depth_1, in ppt
     142
     143    real sss(klon)
     144    ! Bulk salinity of the surface layer of the ocean, in ppt. (Only
     145    ! defined for subscripts 1:knon, but we have to declare it with
     146    ! size klon because of the coupling machinery.)
    143147
    144148    ! End definition
     
    186190            radsol, snow, agesno, &
    187191            qsurf, evap, fluxsens, fluxlat, flux_u1, flux_v1, &
    188             tsurf_new, dflux_s, dflux_l)
     192            tsurf_new, dflux_s, dflux_l, sss)
    189193
    190194    CASE('slab')
     
    319323       rf =  sens_heat_rain(precip_tot, temp_air(:knon), spechum(:knon), rhoa, &
    320324            xlv, tsurf_in(:knon), ps(:knon))
    321        s1 = 35.
     325       if (type_ocean /= 'couple') sss(:knon) = 35.
    322326       call bulk_flux(tkt, tks, taur, dter, dser, t_int, s_int, ds_ns, dt_ns, &
    323             u = windsp(:knon), t_ocean_1 = tsurf_new(:knon), s1 = s1, &
     327            u = windsp(:knon), t_ocean_1 = tsurf_new(:knon), s1 = sss(:knon), &
    324328            rain = precip_tot, hf = - fluxsens(:knon), hlb = - fluxlat(:knon), &
    325329            rnl = - lwnet(:knon), &
Note: See TracChangeset for help on using the changeset viewer.