Ignore:
Timestamp:
Jun 30, 2020, 9:14:36 PM (4 years ago)
Author:
lguez
Message:

Send delta temperature to the ocean

The grid of Nemo is finer than the grid of LMDZ. So LMDZ receives from
Oasis a spatial average of bulk SST. If we send to Nemo the interface
temperature computed by LMDZ, it is regridded as a step function
by Oasis and, in Nemo, the difference between bulk SST and interface
temperature has spatial oscillations. To avoid this, we send to Nemo
the difference between bulk SST and interface temperature computed by
LMDZ, instead of the interface temperature.

So, in module cpl_mod, rename cpl_t_int to cpl_delta_temp,
cpl_t_int_2D to cpl_delta_temp_2D. In module oasis, rename
ids_t_int to ids_delta_temp. Change
infosend(ids_delta_temp)%name to "CODTEMP".

In procedure cpl_send_ocean_fields, rename dummy argument
t_int to tsurf_in just for clarity, because this argument is
passed also when activate_ocean_skin /= 2. Add dummy argument
sst_nff. We cannot just replace dummy argument t_int by a dummy
argument that would receive tsurf_in - sst_nff because sst_nff is
not defined when activate_ocean_skin == 0.

In procedure ocean_cpl_noice, add dummy argument sst_nff.

As for interface salinity, we have to send delta temperature from the
previous time step. So we have to transform sst_nff into a state
variable. So move sst_nff from module phys_output_var_mod to
module phys_state_var_mod. Define ysst_nff in procedure
pbl_surface before the call to surf_ocean. Choose a value of
sst_nff for an appearing ocean fraction. Read sst_nff in procedure
phyetat0, write it in procedure phyredem. Change the intent of dummy argument
sst_nff in procedure surf_ocean to inout.

File:
1 edited

Legend:

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

    r3628 r3740  
    1919       wake_s, wake_dens, zgam, zmax0, zmea, zpic, zsig, &
    2020       zstd, zthe, zval, ale_bl, ale_bl_trig, alp_bl, u10m, v10m, treedrg, &
    21        ale_wake, ale_bl_stat, s_int, ds_ns, dt_ns
     21       ale_wake, ale_bl_stat, s_int, ds_ns, dt_ns, sst_nff
    2222!FC
    2323  USE geometry_mod, ONLY : longitude_deg, latitude_deg
     
    541541
    542542  if (activate_ocean_skin >= 1) then
    543      if (activate_ocean_skin == 2 .and. type_ocean == 'couple') found &
    544           = phyetat0_get(1, s_int, "S_int", "salinity at air-ocean interface", &
    545           35.)
     543     if (activate_ocean_skin == 2 .and. type_ocean == 'couple') then
     544        found = phyetat0_get(1, s_int, "S_int", &
     545             "salinity at air-ocean interface", 35.)
     546        found = phyetat0_get(1, sst_nff, "T1", "bulk SST of coupled ocean", 0.)
     547        if (.not. found) sst_nff = ftsol(:,is_oce)
     548     end if
     549     
    546550     found = phyetat0_get(1, ds_ns, "dS_ns", "delta salinity near surface", 0.)
    547551     found = phyetat0_get(1, dt_ns, "dT_ns", "delta temperature near surface", &
     
    552556        ds_ns = missing_val
    553557        dt_ns = missing_val
     558        sst_nff = missing_val
    554559     end where
    555560  end if
Note: See TracChangeset for help on using the changeset viewer.