Directory branches/Ocean_skin/libf/phylmd/

Total Files:
97
Deleted Files:
2
Lines of Code:
79010

Browse with Trac

[root]/branches/Ocean_skin/libf/phylmd
                    directory in repo Dust (9 files, 9231 lines)
                    directory in repo StratAer (15 files, 4059 lines)
                    directory in repo cosp (1 files, 450 lines)
                    directory in repo cosp2 (1 files, 447 lines)
                    directory in repo cospv2 (4 files, 2146 lines)
                    directory in repo dyn1d (15 files, 13573 lines)
                    directory in repo rrtm (8 files, 4700 lines)
                    directory in repo sisvat (1 files, 1741 lines)

Lines of Code

branches/Ocean_skin/libf/phylmd/ Lines of Code

Developers

Author Changes Lines of Code Lines per Change
lguez 311 (100.0%) 11939 (100.0%) 38.3

Most Recent Commits

lguez 2021-01-12 00:24 Rev.: 3798

Sync latest trunk changes to Ocean_skin

2057 lines of code changed in 48 files:

lguez 2021-01-07 23:18 Rev.: 3797

Polish

2 lines of code changed in 1 file:

lguez 2020-07-19 17:25 Rev.: 3767

Store `delta_sal` instead of `s_int`

Revision analoguous to revision [3744], for salinity. Store as a state
variable and send to the ocean `delta_sal`, the difference between
ocean-air interface salinity and bulk salinity, instead of `s_int`,
the interface salinity.

So replace dummy argument `s_int` of procedure `cpl_send_ocean_fields`
by dummy argument `delta_sal`. Replace dummy argument `s_int` of
procedures `ocean_cpl_noice` and `surf_ocean` by dummy argument
`delta_sal`. Replace variable `s_int` of module `phys_state_var_mod`
by variable `delta_sal`. Rename local variable `ys_int` of procedure
`pbl_surface` to `ydelta_sal`. Set variable `delta_sal` of module
`phys_state_var_mod` to 0 for an appearing ocean fraction and a
missing startup field. Replace variable `o_s_int` of module
`phys_output_ctrlout_mod` by variable `o_delta_sal`.

Rename variables `cpl_s_int` and `cpl_s_int_2D` of module `cpl_mod` to
`cpl_delta_sal` and `cpl_delta_sal_2D`. Rename variable `ids_s_int` of
module oasis to `ids_delta_sal`. Change `infosend(ids_delta_sal)%name`
to "CODELSSS".

74 lines of code changed in 10 files:

lguez 2020-07-17 18:24 Rev.: 3766

Bug fix: read before `close_startphy`

Bug fix: in procedure phyetat0, read `s_int`, `delta_sst`, `ds_ns` and
`dt_ns` before the call to `close_startphy`.

17 lines of code changed in 1 file:

lguez 2020-07-02 16:58 Rev.: 3747

Bug fix: revert revision [3601]

Bug fix: revert revision [3601]. Procedure `phys_output_write` is
called a first time by `physiq` before the call to phyetat0, so before
ftsoil is allocated. So we cannot reference `ftsoil(:, nsoilmx,
is_ter)` in `phys_output_write`.

3 lines of code changed in 2 files:

lguez 2020-07-01 18:57 Rev.: 3744

Store `delta_sst` instead of `sst_nff`

Store as a state variable the difference between ocean-air interface
temperature and bulk SST instead of `sst_nff`, which can be either
interface temperature or bulk SST. This is clearer. Also, it is
analoguous to what we will do with salinity.

So replace the two dummy arguments `tsurf_in` and `sst_nff` of
procedure `cpl_send_ocean_fields` by a single dummy argument
`delta_sst`. Replace dummy argument `sst_nff` of procedures
`ocean_cpl_noice` and `surf_ocean` by dummy argument
`delta_sst`. Replace variable `sst_nff` of module `phys_state_var_mod`
by variable `delta_sst`. Rename local variable `ysst_nff` of procedure
`pbl_surface` to `ydelta_sst`. Set variable `delta_sst` of module
`phys_state_var_mod` to 0 for an appearing ocean fraction and a
missing startup field. Replace variable `o_sst_nff` of module
`phys_output_ctrlout_mod` by variable `o_delta_sst`.

Rename variables `cpl_delta_temp` and `cpl_delta_temp_2D` of module
`cpl_mod` to `cpl_delta_sst` and `cpl_delta_sst_2D`, clearer. Rename
variable `ids_delta_temp` of module oasis to `ids_delta_sst`. Change
`infosend(ids_delta_temp)%name` to "CODELSST".

61 lines of code changed in 10 files:

lguez 2020-06-30 21:14 Rev.: 3740

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.

86 lines of code changed in 10 files:

lguez 2020-06-13 00:23 Rev.: 3720

Output bulk sea surface salinity

Output bulk sea surface salinity when `activate_ocean_skin` >= 1. So
add variable sss in module `phys_output_var_mod`. In procedure
`surf_ocean`, promote sss from local variable to dummy argument.

26 lines of code changed in 5 files:

lguez 2020-06-12 21:31 Rev.: 3719

Change name and meaning of `t_int` to `sst_nff`

Rename variable `t_int` of module `phys_output_var_mod` to
`sst_nff`. Rename local variable `yt_int` of `pbl_surface` to
`ysst_nff`. Rename type `o_t_int` of module `phys_output_ctrlout_mod`
to `o_sst_nff`. In procedure `phys_output_write`, write `sst_nff` if
`activate_ocean_skin` >= 1, while `t_int` was written only for
`activate_ocean_skin` == 1.

In procedure `surf_ocean`, rename dummy argument `t_int` to
`sst_nff`. Create local variable `t_int`. Set `sst_nff` to `t_int` or
`tsurf_new` depending on `activate_ocean_skin`.

Motivation: we want to output the bulk SST if `activate_ocean_skin`
== 2. Before this revision, the bulk SST in variable `tsurf_new` in
procedure `surf_ocean` was overwritten with interface temperature and
lost. We already had two output variables for SST: `t_int` and
`ftsol`, containing the same values if `activate_ocean_skin`
== 2. Instead of creating a third variable for bulk SST, change the
name and meaning of `t_int` to `sst_nff`, the SST not used to compute
surface fluxes. That is either the interface temperature or the bulk
SST depending on `activate_ocean_skin`. The SST used to compute
surface fluxes is always ftsol, meaning either the interface
temperature or the bulk SST depending on `activate_ocean_skin`.

35 lines of code changed in 5 files:

lguez 2020-05-27 16:52 Rev.: 3687

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].

63 lines of code changed in 12 files:

lguez 2020-04-29 20:32 Rev.: 3672

Do not output t_int if activate_ocean_skin == 2

4 lines of code changed in 1 file:

lguez 2020-04-01 21:34 Rev.: 3657

Bug fix: name of field received from the coupler

1 lines of code changed in 1 file:

  • branches/Ocean_skin/libf/phylmd: oasis.F90 (+1 -1)
lguez 2020-03-23 15:43 Rev.: 3652

Bug fix: the names of coupling fields should be no more than 8
characters long, according to definition of type `fld_cpl`.

2 lines of code changed in 1 file:

  • branches/Ocean_skin/libf/phylmd: oasis.F90 (+2 -2)
lguez 2020-02-21 12:46 Rev.: 3639

Bug fix: missing declaration. (This bug could not be seen in
compilation without `CPP_COUPLE`.)

1 lines of code changed in 1 file:

  • branches/Ocean_skin/libf/phylmd: oasis.F90 (+1 -2)
lguez 2020-02-19 17:14 Rev.: 3638

Change name of fields exchanged with the ocean, following choices of C. Eth\'e.

3 lines of code changed in 1 file:

  • branches/Ocean_skin/libf/phylmd: oasis.F90 (+3 -3)
lguez 2020-02-04 23:36 Rev.: 3628

If the ocean skin parameterization is working actively
(`activate_ocean_skin == 2`) and we are coupled to the ocean then send
ocean-air interface salinity to the ocean. New dummy argument `s_int`
of procedures `ocean_cpl_noice` and `cpl_send_ocean_fields`. We can
only send interface salinity from the previous time-step since
communication with the ocean is before the call to bulk_flux. So make
`s_int` a state variable: move `s_int` from `phys_output_var_mod` to
`phys_state_var_mod`. Still, we only read `s_int` from startphy,
define it before the call to `surf_ocean` and write it to restartphy
if `activate_ocean_skin == 2` and `type_ocean == 'couple'`. In
procedure `pbl_surface`, for clarity, move the definition of output
variables `t_int`, dter, dser, tkt, tks, rf, taur to `missing_val` to
after the call to `surf_ocean`, with the definition of `s_int`,
`ds_ns`, `dt_ns` to `missing_val`. This does not change anything for
`t_int`, dter, dser, tkt, tks, rf, taur. In `pbl_surface_newfrac`, we
choose to set `s_int` to 35 for an appearing ocean point, this is
questionable. In `surf_ocean`, change the intent of `s_int` from out
to inout.

82 lines of code changed in 10 files:

lguez 2020-02-03 15:27 Rev.: 3627

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.

111 lines of code changed in 4 files:

lguez 2020-01-30 15:38 Rev.: 3626

Bug fix: use `missing_val` from XIOS for output with XIOS, else the
operations are not done propoerly in XIOS.

25 lines of code changed in 3 files:

lguez 2019-12-17 16:44 Rev.: 3617

Sync latest trunk changes to branch `Ocean_skin`

3 lines of code changed in 2 files:

lguez 2019-11-21 17:43 Rev.: 3605

Merge revisions 3427:3600 of trunk into branch `Ocean_skin`

9170 lines of code changed in 139 files:

lguez 2019-11-18 17:48 Rev.: 3601

Add output variable `tsoil_deep_land`.

12 lines of code changed in 4 files:

lguez 2019-09-03 18:29 Rev.: 3556

Polish

4 lines of code changed in 3 files:

lguez 2019-04-16 17:19 Rev.: 3478

Polish.

1 lines of code changed in 1 file:

lguez 2019-02-08 15:28 Rev.: 3463

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.

16 lines of code changed in 5 files:

lguez 2019-01-30 18:55 Rev.: 3458

Introduce variable activate_ocean_skin in module config_ocean_skin_m.

Bug fix in phys_state_var_end: we need to deallocate variables for
lmdz1d (although it is useless for a 3D run).

74 lines of code changed in 7 files:

lguez 2019-01-18 19:29 Rev.: 3432

Move the call to config_ocean_skin out of !$OMP MASTER in procedure
conf_phys. Definition of jcool, jwarm and rain_effect must be done by
all threads.

Use keywords in call to bulk_flux in procedure surf_ocean, for clarity.

Define CPP_KEY IN_LMDZ in makelmdz_fcm. This could be useful for any
external code used with LMDZ.

Move the Ocean_skin folder out of the LMDZ tree. This is more
convenient and clearer because Ocean_skin stays under Git control for
now. So we do not declare a phylmd/Ocean_skin folder in
"bld.cfg". Instead, we use the option -ext_src of makelmdz_fcm.

6 lines of code changed in 2 files:

lguez 2019-01-02 20:44 Rev.: 3429

Create subdirectory Ocean_skin in libf. For now, Ocean_skin is under
control of git, not subversion.

Add variable eps_w to common YOMCST.

For now, continue to read ocean skin parameters from a namelist in
config_ocean_skin.

The parameterisation is called from procedure surf_ocean.

Add two prognostic variables for the parameterisation: dt_ns and
ds_ns. Add eight diagnostic variables: t_int, s_int, dter, dser, tkt,
tks, rf, taur. The ten variables are only defined on ocean surface,
elsewhere they are set to nf90_fill_real. In pbl_surface, we can
initialize the eight diagnostic variables to nf90_fill_real before the
loop on sub-surfaces, but we need to keep the old values of dt_ns and
ds_ns as input of the parameterisation so we set dt_ns and ds_ns to
nf90_fill_real after the call to surf_ocean. Define ten corresponding
compressed variables in pbl_surface. Define ten corresponding NetCDF
output variables in phys_output_ctrlout_mod.

In procedure pbl_surface_newfrac, for an appearing ocean sub-surface,
dt_ns and ds_ns are set to 0. In phyetat0, also set initial dt_ns and
ds_ns to 0 if they are not in start file.

In procedure surf_ocean, for now, we use a constant specific latent
heat of vaporization, as elsewhere in LMDZ, and a constant bulk
salinity.

0 lines of code changed in 22 files:

Generated by StatSVN 0.7.0