Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
No results found
Show changes
Showing
with 930 additions and 851 deletions
Simple style rules for namelists
--------------------------------
NEMO reference namelists should adhere to the following simple style rules:
1. Comments outside a namelist block start with !! in column 1
2. Each namelist block starts with 3 lines of the form:
!-----------------------------------------------------------------------
&namblockname ! short description of block
!-----------------------------------------------------------------------
with all ! and & 's starting in column 1
3. The closing / for each namelist block is in column 1
4. Comments within namelist blocks never start with !- . Use ! followed
by space or != etc.
These conventions make it possible to construct empty configuration namelists.
For example, a namelist_cfg template can be produced from namelist_ref with
the following grep command; e.g.:
grep -E '^!-|^&|^/' namelist_ref > namelist_cfg.template
head namelist_cfg.template
!-----------------------------------------------------------------------
&namrun ! parameters of the run
!-----------------------------------------------------------------------
/
!-----------------------------------------------------------------------
&namcfg ! parameters of the configuration
!-----------------------------------------------------------------------
/
!-----------------------------------------------------------------------
&namdom ! time and space domain
!-----------------------------------------------------------------------
/
.
.
If all configuration namelists are produced and maintained using this
strategy then standard, side-by-side comaparators, such as vimdiff or xxdiff,
can be used to compare and transfer lines from the reference namelist to a
configuration namelist when setting up a new configuration.
Tips and tricks
---------------
1. The following bash function is useful when checking which namelist blocks
are in active use in a configuration namelist:
function list_used_nl(){ grep -n -E '^&|^/' "$1" | sed -e 's/:/ /' \
| awk ' BEGIN { x = 0 } \
{if ( NR % 2 == 0 && $1 - x > 2 ) printf("%3d %s\n", $1 - x , n) ; \
else x = $1; n = $2}' \
| sort -k 2;}
which (assuming the namelist adheres to the conventions) will list the number
of entries in each non-empty namelist block. The list is sorted on the block
name to ease comparisons. For example:
list_used_nl ORCA2_LIM3_PISCES/EXP00/namelist_cfg
1 &nambbc
5 &nambbl
30 &namberg
10 &namcfg
4 &namctl
3 &namdom
1 &namdrg
5 &namdyn_adv
1 &namdyn_hpg
22 &namdyn_ldf
1 &namdyn_spg
5 &namdyn_vor
3 &nameos
1 &namhsb
4 &namrun
1 &namsbc
1 &namsbc_blk
3 &namtra_adv
28 &namtra_ldf
10 &namtra_ldfeiv
25 &namzdf
3 &namzdf_iwm
2. vimdiff can give garish colours in some terminals. Usually this is because
vim assumes, incorrectly, that the terminal only supports 8 colours. Try forcing
256 colours with:
:set t_Co=256
to produce more pastel shades (add this to ~/.vimrc if successful).
3. Switching between vsplit panes in vim is a multi-key sequence. The tool is
much easier to use if the sequence is mapped to a spare key. Here I use the
§ and ± key on my Mac keyboard (add to ~/.vimrc):
map § ^Wl
map ± ^Wh
4. With easy switching between panes, constructing namelists in vimdiff just
requires the following commands in addition to normal editing:
]c - Go to next block of the diff
dp - Push version of the block under cursor into the other pane
do - Pull version of the block under cursor from the other pane
***********
Diagnostics
***********
.. todo::
.. contents::
:local:
Output of diagnostics in NEMO is usually done using XIOS.
This is an efficient way of writing diagnostics because
the time averaging, file writing and even some simple arithmetic or regridding is carried out in
parallel to the NEMO model run.
This page gives a basic introduction to using XIOS with NEMO.
Much more information is available from the :xios:`XIOS homepage<>` above and from the NEMO manual.
Use of XIOS for diagnostics is activated using the pre-compiler key ``key_xios``.
Extracting and installing XIOS
==============================
1. Install the NetCDF4 library.
If you want to use single file output you will need to compile the HDF & NetCDF libraries to
allow parallel IO.
2. Download the version of XIOS that you wish to use.
The recommended version is now XIOS 2.5:
.. code-block:: console
$ svn co http://forge.ipsl.jussieu.fr/ioserver/svn/XIOS/branchs/xios-2.5
and follow the instructions in :xios:`XIOS documentation <wiki/documentation>` to compile it.
If you find problems at this stage, support can be found by subscribing to
the :xios:`XIOS mailing list <../mailman/listinfo.cgi/xios-users>` and sending a mail message to it.
XIOS Configuration files
------------------------
XIOS is controlled using XML input files that should be copied to
your model run directory before running the model.
Examples of these files can be found in the reference configurations (:file:`./cfgs`).
The XIOS executable expects to find a file called :file:`iodef.xml` in the model run directory.
In NEMO we have made the decision to use include statements in the :file:`iodef.xml` file to include:
- :file:`field_def_nemo-oce.xml` (for physics),
- :file:`field_def_nemo-ice.xml` (for ice),
- :file:`field_def_nemo-pisces.xml` (for biogeochemistry) and
- :file:`domain_def.xml` from the :file:`./cfgs/SHARED` directory.
Most users will not need to modify :file:`domain_def.xml` or :file:`field_def_nemo-???.xml` unless
they want to add new diagnostics to the NEMO code.
The definition of the output files is organized into separate :file:`file_definition.xml` files which
are included in the :file:`iodef.xml` file.
Modes
=====
Detached Mode
-------------
In detached mode the XIOS executable is executed on separate cores from the NEMO model.
This is the recommended method for using XIOS for realistic model runs.
To use this mode set ``using_server`` to ``true`` at the bottom of the :file:`iodef.xml` file:
.. code-block:: xml
<variable id="using_server" type="boolean">true</variable>
Make sure there is a copy (or link to) your XIOS executable in the working directory and
in your job submission script allocate processors to XIOS.
Attached Mode
-------------
In attached mode XIOS runs on each of the cores used by NEMO.
This method is less efficient than the detached mode but can be more convenient for testing or
with small configurations.
To activate this mode simply set ``using_server`` to false in the :file:`iodef.xml` file
.. code-block:: xml
<variable id="using_server" type="boolean">false</variable>
and don't allocate any cores to XIOS.
.. note::
Due to the different domain decompositions between XIOS and NEMO,
if the total number of cores is larger than the number of grid points in the ``j`` direction then
the model run will fail.
Adding new diagnostics
======================
If you want to add a NEMO diagnostic to the NEMO code you will need to do the following:
1. Add any necessary code to calculate you new diagnostic in NEMO
2. Send the field to XIOS using ``CALL iom_put( 'field_id', variable )`` where
``field_id`` is a unique id for your new diagnostics and
variable is the fortran variable containing the data.
This should be called at every model timestep regardless of how often you want to output the field.
No time averaging should be done in the model code.
3. If it is computationally expensive to calculate your new diagnostic
you should also use "iom_use" to determine if it is requested in the current model run.
For example,
.. code-block:: fortran
IF iom_use('field_id') THEN
!Some expensive computation
!...
!...
iom_put('field_id', variable)
ENDIF
4. Add a variable definition to the :file:`field_def_nemo-???.xml` file.
5. Add the variable to the :file:`iodef.xml` or :file:`file_definition.xml` file.
......@@ -189,12 +189,14 @@
<domain id="grid_F_inner" long_name="grid F inner"/>
<!-- zonal mean grid -->
<domain_group id="gznl">
<domain id="gznl" long_name="gznl"/>
<domain id="ptr" domain_ref="gznl" >
<zoom_domain id="ptr" ibegin="0000" jbegin="0" ni="1" nj="0000" />
</domain>
</domain_group>
<domain id="gznl" long_name="gznl"/>
<domain id="ptr" domain_ref="gznl" >
<zoom_domain id="ptr" ibegin="0000" jbegin="0" ni="1" nj="0000" />
</domain>
<domain id="znl_T" domain_ref="gznl" > <zoom_domain id="znl_T"/> </domain>
<domain id="znl_W" domain_ref="gznl" > <zoom_domain id="znl_W"/> </domain>
<!-- other grids -->
......
......@@ -50,10 +50,11 @@
<field id="icevpnd" long_name="melt pond volume" standard_name="sea_ice_meltpond_volume" unit="m" />
<field id="icehlid" long_name="melt pond lid depth" standard_name="sea_ice_meltpondlid_depth" unit="m" />
<field id="icevlid" long_name="melt pond lid volume" standard_name="sea_ice_meltpondlid_volume" unit="m" />
<field id="dvpn_mlt" long_name="pond volume tendency due to surface melt" standard_name="sea_ice_pondvolume_tendency_melt" unit="kg/m2/s" />
<field id="dvpn_lid" long_name="pond volume tendency due to exchanges with lid" standard_name="sea_ice_pondvolume_tendency_lids" unit="kg/m2/s" />
<field id="dvpn_rnf" long_name="pond volume tendency due to runoff" standard_name="sea_ice_pondvolume_tendency_runoff" unit="kg/m2/s" />
<field id="dvpn_drn" long_name="pond volume tendency due to drainage" standard_name="sea_ice_pondvolume_tendency_drainage" unit="kg/m2/s" />
<field id="iceepnd" long_name="melt pond effective concentration" standard_name="sea_ice_meltpond_effective_concentration" unit="" />
<field id="dvpn_mlt" long_name="pond volume tendency due to surface melt" standard_name="sea_ice_pondvolume_tendency_melt" unit="cm/d" />
<field id="dvpn_lid" long_name="pond volume tendency due to exchanges with lid" standard_name="sea_ice_pondvolume_tendency_lids" unit="cm/d" />
<field id="dvpn_rnf" long_name="pond volume tendency due to runoff" standard_name="sea_ice_pondvolume_tendency_runoff" unit="cm/d" />
<field id="dvpn_drn" long_name="pond volume tendency due to drainage" standard_name="sea_ice_pondvolume_tendency_drainage" unit="cm/d" />
<!-- heat -->
<field id="icetemp" long_name="Mean ice temperature" unit="degC" detect_missing_value="true" />
......@@ -95,6 +96,10 @@
<field id="yield12" long_name="yield surface tensor component 12" standard_name="yield12" unit="N/m" />
<field id="beta_evp" long_name="Relaxation parameter of ice rheology (beta)" standard_name="relaxation_parameter_of_ice_rheology" unit="" />
<field id="isig1" long_name="1st principal stress component for EVP rhg" unit="" />
<field id="isig2" long_name="2nd principal stress component for EVP rhg" unit="" />
<field id="isig3" long_name="convergence measure for EVP rheology (must be around 1)" unit="" />
<!-- surface heat fluxes -->
<field id="qt_ice" long_name="total heat flux at ice surface" standard_name="surface_downward_heat_flux_in_air" unit="W/m2" />
<field id="qsr_ice" long_name="solar heat flux at ice surface" standard_name="surface_downwelling_shortwave_flux_in_air" unit="W/m2" />
......@@ -189,8 +194,15 @@
<field id="icedrift_heat" long_name="Ice heat drift (conservation check)" unit="W/m2" />
<!-- sbcssm variables -->
<field id="sst_m" unit="degC" />
<field id="sss_m" unit="psu" />
<field id="sst_m_pot" unit="degC" />
<!-- EOS-80 -->
<field id="sss_m_pra" unit="psu" />
<!-- TEOS-10 -->
<field id="sss_m_abs" unit="g/kg" />
<!-- SEOS -->
<field id="sss_m_seos" unit="psu" />
<field id="ssu_m" unit="m/s" />
<field id="ssv_m" unit="m/s" />
<field id="ssh_m" unit="m" />
......@@ -407,9 +419,17 @@
<field field_ref="iceapnd" name="siapnd" />
<field field_ref="icehpnd" name="sihpnd" />
<field field_ref="icevpnd" name="sivpnd" />
<field field_ref="iceepnd" name="siepnd" />
<field field_ref="iceage" name="siage" />
<field field_ref="sst_m" name="sst_m" />
<field field_ref="sss_m" name="sss_m" />
<field id="sst_m_pot" unit="degC" />
<!-- EOS-80 -->
<field id="sss_m_pra" unit="psu" />
<!-- TEOS-10 -->
<field id="sss_m_abs" unit="g/kg" />
<!-- SEOS -->
<field id="sss_m_seos" unit="psu" />
<!-- heat -->
<field field_ref="icetemp" name="sitemp" />
......@@ -435,7 +455,7 @@
<field field_ref="sheastr" name="sheastr" />
<field field_ref="sig1_pnorm" name="sig1_pnorm"/>
<field field_ref="sig2_pnorm" name="sig2_pnorm"/>
<field field_ref="icedlt" name="sidelt" />
<field field_ref="icedlt" name="sidelta" />
<!-- heat fluxes -->
<field field_ref="qt_oce_ai" name="qt_oce_ai" />
......
This diff is collapsed.
......@@ -418,5 +418,43 @@
<duplicate_scalar />
</axis>
</grid>
<grid id="grid_EqT" >
<domain id="EqT" />
</grid>
<!-- -->
<grid id="gznl_T_2D">
<domain id="ptr" />
</grid>
<!-- -->
<grid id="gznl_T_3D">
<domain id="ptr" />
<axis axis_ref="deptht" />
</grid>
<!-- -->
<grid id="gznl_W_2D">
<domain id="ptr" />
</grid>
<!-- -->
<grid id="gznl_W_3D">
<domain id="ptr" />
<axis axis_ref="depthw" />
</grid>
<grid id="vert_sum">
<domain id="grid_T"/>
<scalar>
<reduce_axis operation="sum" />
</scalar>
</grid>
<grid id="zoom_300">
<domain id="grid_T" />
<axis axis_ref="deptht300"/>
</grid>
<grid id="zoom_300_sum">
<domain id="grid_T" />
<scalar>
<reduce_axis operation="sum" />
</scalar>
</grid>
</grid_definition>
......@@ -24,10 +24,10 @@
jpl = 5 ! number of ice categories
nlay_i = 2 ! number of ice layers
nlay_s = 2 ! number of snow layers
ln_virtual_itd = .false. ! virtual ITD mono-category parameterization (jpl=1 only)
! i.e. enhanced thermal conductivity & virtual thin ice melting
ln_icedyn = .true. ! ice dynamics (T) or not (F)
ln_icethd = .true. ! ice thermo (T) or not (F)
ln_virtual_itd = .false., ! virtual ITD mono-category parameterization (jpl=1 only)
! i.e. enhan.false.ced thermal conductivity & virtual thin ice melting
ln_icedyn = .true., ! ice dynamics (T) or not (F)
ln_icethd = .true., ! ice thermo (T) or not (F)
rn_amax_n = 0.997 ! maximum tolerated ice concentration NH
rn_amax_s = 0.997 ! maximum tolerated ice concentration SH
cn_icerst_in = "restart_ice" ! suffix of ice restart name (input)
......@@ -38,9 +38,9 @@
!------------------------------------------------------------------------------
&namitd ! Ice discretization
!------------------------------------------------------------------------------
ln_cat_hfn = .true. ! ice categories are defined by a function following rn_himean**(-0.05)
ln_cat_hfn = .true., ! ice categories are defined by a function following rn_himean**(-0.05)
rn_himean = 2.0 ! expected domain-average ice thickness (m)
ln_cat_usr = .false. ! ice categories are defined by rn_catbnd below (m)
ln_cat_usr = .false., ! ice categories are defined by rn_catbnd below (m)
rn_catbnd = 0.,0.45,1.1,2.1,3.7,6.0
rn_himin = 0.1 ! minimum ice thickness (m) allowed
rn_himax = 99.0 ! maximum ice thickness (m) allowed
......@@ -48,14 +48,14 @@
!------------------------------------------------------------------------------
&namdyn ! Ice dynamics
!------------------------------------------------------------------------------
ln_dynALL = .true. ! dyn.: full ice dynamics (rheology + advection + ridging/rafting + correction)
ln_dynRHGADV = .false. ! dyn.: no ridge/raft & no corrections (rheology + advection)
ln_dynADV1D = .false. ! dyn.: only advection 1D (Schar & Smolarkiewicz 1996 test case)
ln_dynADV2D = .false. ! dyn.: only advection 2D w prescribed vel.(rn_uvice + advection)
ln_dynALL = .true., ! dyn.: full ice dynamics (rheology + advection + ridging/rafting + correction)
ln_dynRHGADV = .false., ! dyn.: no ridge/raft & no corrections (rheology + advection)
ln_dynADV1D = .false., ! dyn.: only advection 1D (Schar & Smolarkiewicz 1996 test case)
ln_dynADV2D = .false., ! dyn.: only advection 2D w prescribed vel.(rn_uvice + advection)
rn_uice = 0.5 ! prescribed ice u-velocity
rn_vice = 0.5 ! prescribed ice v-velocity
rn_ishlat = 2. ! lbc : free slip (0) ; partial slip (0-2) ; no slip (2) ; strong slip (>2)
ln_landfast_L16 = .false. ! landfast: parameterization from Lemieux 2016
ln_landfast_L16 = .false., ! landfast: parameterization from Lemieux 2016
rn_lf_depfra = 0.125 ! fraction of ocean depth that ice must reach to initiate landfast
! recommended range: [0.1 ; 0.25]
rn_lf_bfr = 15. ! maximum bottom stress per unit volume [N/m3]
......@@ -72,30 +72,30 @@
&namdyn_rdgrft ! Ice ridging/rafting
!------------------------------------------------------------------------------
! -- ice_rdgrft_strength -- !
ln_str_H79 = .true. ! ice strength param.: Hibler_79 => P = pstar*<h>*exp(-c_rhg*A)
ln_str_H79 = .true., ! ice strength param.: Hibler_79 => P = pstar*<h>*exp(-c_rhg*A)
rn_pstar = 2.0e+04 ! ice strength thickness parameter [N/m2]
rn_crhg = 20.0 ! ice strength conc. parameter (-)
ln_str_R75 = .false. ! ice strength param.: Rothrock_75 => P = fn of potential energy
ln_str_R75 = .false., ! ice strength param.: Rothrock_75 => P = fn of potential energy
rn_pe_rdg = 17.0 ! coef accouting for frictional dissipation
ln_str_CST = .false. ! ice strength param.: Constant
ln_str_CST = .false., ! ice strength param.: Constant
rn_str = 0.0 ! ice strength value
ln_str_smooth = .true. ! spatial smoothing of the ice strength
ln_str_smooth = .true., ! spatial smoothing of the ice strength
! -- ice_rdgrft -- !
ln_distf_lin = .true. ! redistribution function of ridged ice: linear (Hibler 1980)
ln_distf_exp = .false. ! redistribution function of ridged ice: exponential => not coded yet
ln_distf_lin = .true., ! redistribution function of ridged ice: linear (Hibler, 1980)
ln_distf_exp = .false., ! redistribution function of ridged ice: exponential (Lipscomb et al., 2007)
rn_murdg = 3.0 ! e-folding scale of ridged ice (m**.5)
rn_csrdg = 0.5 ! fraction of shearing energy contributing to ridging
! -- ice_rdgrft_prep -- !
ln_partf_lin = .false. ! Linear ridging participation function (Thorndike et al, 1975)
ln_partf_lin = .false., ! Linear ridging participation function (Thorndike et al., 1975)
rn_gstar = 0.15 ! fractional area of thin ice being ridged
ln_partf_exp = .true. ! Exponential ridging participation function (Lipscomb, 2007)
ln_partf_exp = .true., ! Exponential ridging participation function (Lipscomb et al., 2007)
rn_astar = 0.03 ! exponential measure of ridging ice fraction [set to 0.05 if hstar=100]
ln_ridging = .true. ! ridging activated (T) or not (F)
ln_ridging = .true., ! ridging activated (T) or not (F)
rn_hstar = 25.0 ! determines the maximum thickness of ridged ice [m] (Hibler, 1980)
rn_porordg = 0.3 ! porosity of newly ridged ice (Lepparanta et al., 1995)
rn_fsnwrdg = 0.5 ! snow volume fraction that survives in ridging
rn_fpndrdg = 1.0 ! pond fraction that survives in ridging (small a priori)
ln_rafting = .true. ! rafting activated (T) or not (F)
ln_rafting = .true., ! rafting activated (T) or not (F)
rn_hraft = 0.75 ! threshold thickness for rafting [m]
rn_craft = 5.0 ! squeezing coefficient used in the rafting function
rn_fsnwrft = 0.5 ! snow volume fraction that survives in rafting
......@@ -104,9 +104,9 @@
!------------------------------------------------------------------------------
&namdyn_rhg ! Ice rheology
!------------------------------------------------------------------------------
ln_rhg_EVP = .true. ! EVP rheology
ln_rhg_EAP = .false. ! EAP rheology
ln_aEVP = .true. ! adaptive rheology (Kimmritz et al. 2016 & 2017)
ln_rhg_EVP = .true., ! EVP rheology
ln_rhg_EAP = .false., ! EAP rheology
ln_aEVP = .true., ! adaptive rheology (Kimmritz et al. 2016 & 2017)
rn_creepl = 2.0e-9 ! creep limit [1/s]
rn_ecc = 2.0 ! eccentricity of the elliptical yield curve
nn_nevp = 100 ! number of EVP subcycles
......@@ -117,7 +117,7 @@
! = 1 check at the main time step (output xml: uice_cvg)
! = 2 check at both main and rheology time steps (additional output: ice_cvg.nc)
! this option 2 asks a lot of communications between cpu
ln_rhg_VP = .false. ! VP rheology
ln_rhg_VP = .false., ! VP rheology
nn_vp_nout = 10 ! number of outer iterations
nn_vp_ninn = 1500 ! number of inner iterations
nn_vp_chkcvg = 5 ! iteration step for convergence check
......@@ -125,8 +125,8 @@
!------------------------------------------------------------------------------
&namdyn_adv ! Ice advection
!------------------------------------------------------------------------------
ln_adv_Pra = .true. ! Advection scheme (Prather)
ln_adv_UMx = .false. ! Advection scheme (Ultimate-Macho)
ln_adv_Pra = .true., ! Advection scheme (Prather)
ln_adv_UMx = .false., ! Advection scheme (Ultimate-Macho)
nn_UMx = 5 ! order of the scheme for UMx (1-5 ; 20=centered 2nd order)
/
!------------------------------------------------------------------------------
......@@ -144,8 +144,8 @@
! = 0 Average N(cat) fluxes then apply the average over the N(cat) ice
! = 1 Average N(cat) fluxes then redistribute over the N(cat) ice using T-ice and albedo sensitivity
! = 2 Redistribute a single flux over categories
ln_cndflx = .false. ! Use conduction flux as surface boundary conditions (i.e. for Jules coupling)
ln_cndemulate = .false. ! emulate conduction flux (if not provided in the inputs)
ln_cndflx = .false., ! Use conduction flux as surface boundary conditions (i.e. for Jules coupling)
ln_cndemulate = .false., ! emulate conduction flux (if not provided in the inputs)
nn_qtrice = 0 ! Solar flux transmitted thru the surface scattering layer:
! = 0 Grenfell and Maykut 1977 (depends on cloudiness and is 0 when there is snow)
! = 1 Lebrun 2019 (equals 0.3 anytime with different melting/dry snw conductivities)
......@@ -153,26 +153,26 @@
!------------------------------------------------------------------------------
&namthd ! Ice thermodynamics
!------------------------------------------------------------------------------
ln_icedH = .true. ! activate ice thickness change from growing/melting (T) or not (F)
ln_icedA = .true. ! activate lateral melting param. (T) or not (F)
ln_icedO = .true. ! activate ice growth in open-water (T) or not (F)
ln_icedS = .true. ! activate brine drainage (T) or not (F)
ln_icedH = .true., ! activate ice thickness change from growing/melting (T) or not (F)
ln_icedA = .true., ! activate lateral melting param. (T) or not (F)
ln_icedO = .true., ! activate ice growth in open-water (T) or not (F)
ln_icedS = .true., ! activate brine drainage (T) or not (F)
!
ln_leadhfx = .true. ! heat in the leads is used to melt sea-ice before warming the ocean
ln_leadhfx = .true., ! heat in the leads is used to melt sea-ice before warming the ocean
/
!------------------------------------------------------------------------------
&namthd_zdf ! Ice heat diffusion
!------------------------------------------------------------------------------
ln_zdf_BL99 = .true. ! Heat diffusion follows Bitz and Lipscomb 1999
ln_cndi_U64 = .false. ! sea ice thermal conductivity: k = k0 + beta.S/T (Untersteiner, 1964)
ln_cndi_P07 = .true. ! sea ice thermal conductivity: k = k0 + beta1.S/T - beta2.T (Pringle et al., 2007)
ln_zdf_BL99 = .true., ! Heat diffusion follows Bitz and Lipscomb 1999
ln_cndi_U64 = .false., ! sea ice thermal conductivity: k = k0 + beta.S/T (Untersteiner, 1964)
ln_cndi_P07 = .true., ! sea ice thermal conductivity: k = k0 + beta1.S/T - beta2.T (Pringle et al., 2007)
rn_cnd_s = 0.31 ! thermal conductivity of the snow (0.31 W/m/K, Maykut and Untersteiner, 1971)
! Obs: 0.1-0.5 (Lecomte et al, JAMES 2013)
rn_kappa_i = 1.0 ! radiation attenuation coefficient in sea ice [1/m]
rn_kappa_s = 10.0 ! nn_qtrice = 0: radiation attenuation coefficient in snow [1/m]
rn_kappa_smlt = 7.0 ! nn_qtrice = 1: radiation attenuation coefficient in melting snow [1/m]
rn_kappa_sdry = 10.0 ! radiation attenuation coefficient in dry snow [1/m]
ln_zdf_chkcvg = .false. ! check convergence of heat diffusion scheme (outputs: tice_cvgerr, tice_cvgstp)
ln_zdf_chkcvg = .false., ! check convergence of heat diffusion scheme (outputs: tice_cvgerr, tice_cvgstp)
/
!------------------------------------------------------------------------------
&namthd_da ! Ice lateral melting
......@@ -189,7 +189,7 @@
&namthd_do ! Ice growth in open water
!------------------------------------------------------------------------------
rn_hinew = 0.1 ! thickness for new ice formation in open water (m), must be larger than rn_himin
ln_frazil = .false. ! Frazil ice parameterization (ice collection as a function of wind)
ln_frazil = .false., ! Frazil ice parameterization (ice collection as a function of wind)
rn_maxfraz = 1.0 ! maximum fraction of frazil ice collecting at the ice base
rn_vfraz = 0.417 ! thresold drift speed for frazil ice collecting at the ice bottom (m/s)
rn_Cfraz = 5.0 ! squeezing coefficient for frazil ice collecting at the ice bottom
......@@ -212,22 +212,25 @@
!------------------------------------------------------------------------------
&namthd_pnd ! Melt ponds
!------------------------------------------------------------------------------
ln_pnd = .true. ! activate melt ponds or not
ln_pnd_TOPO = .false. ! topographic melt ponds
ln_pnd_LEV = .true. ! level ice melt ponds
ln_pnd = .true., ! activate melt ponds or not
ln_pnd_TOPO = .false., ! topographic melt ponds
ln_pnd_LEV = .true., ! level ice melt ponds
rn_apnd_min = 0.15 ! minimum meltwater fraction contributing to pond growth (TOPO and LEV)
rn_apnd_max = 0.85 ! maximum meltwater fraction contributing to pond growth (TOPO and LEV)
rn_pnd_flush= 0.1 ! pond flushing efficiency (tuning parameter) (LEV)
ln_pnd_CST = .false. ! constant melt ponds
ln_pnd_CST = .false., ! constant melt ponds
rn_apnd = 0.2 ! prescribed pond fraction, at Tsu=0 degC
rn_hpnd = 0.05 ! prescribed pond depth, at Tsu=0 degC
ln_pnd_lids = .true. ! frozen lids on top of the ponds (only for ln_pnd_LEV)
ln_pnd_alb = .true. ! effect of melt ponds on ice albedo
ln_pnd_lids = .true., ! frozen lids on top of the ponds (only for ln_pnd_LEV)
ln_pnd_alb = .true., ! effect of melt ponds on ice albedo
nn_pnd_brsal = 0 ! brine salinity formulation 0 = Consistent expression with SI3
! (linear liquidus)
! 1 = used in GOSI9
/
!------------------------------------------------------------------------------
&namini ! Ice initialization
!------------------------------------------------------------------------------
ln_iceini = .true. ! activate ice initialization (T) or not (F)
ln_iceini = .true., ! activate ice initialization (T) or not (F)
nn_iceini_file = 0 ! 0 = Initialise sea ice based on SSTs
! 1 = Initialise sea ice from single category netcdf file
! 2 = Initialise sea ice from multi category restart file
......@@ -280,12 +283,12 @@
!------------------------------------------------------------------------------
&namdia ! Diagnostics
!------------------------------------------------------------------------------
ln_icediachk = .false. ! check online heat, mass & salt budgets
ln_icediachk = .false., ! check online heat, mass & salt budgets
! ! rate of ice spuriously gained/lost at each time step => rn_icechk=1 <=> 1.e-6 m/hour
rn_icechk_cel = 1. ! check at each gridcell (1.e-06m/h)=> stops the code if violated (and writes a file)
rn_icechk_glo = 1.e-04 ! check over the entire ice cover (1.e-10m/h)=> only prints warnings
ln_icediahsb = .false. ! output the heat, mass & salt budgets (T) or not (F)
ln_icectl = .false. ! ice points output for debug (T or F)
ln_icediahsb = .false., ! output the heat, mass & salt budgets (T) or not (F)
ln_icectl = .false., ! ice points output for debug (T or F)
iiceprt = 10 ! i-index for debug
jiceprt = 10 ! j-index for debug
/
This diff is collapsed.
......@@ -13,8 +13,8 @@
!-----------------------------------------------------------------------
&namtrc_run ! run information
!-----------------------------------------------------------------------
ln_top_euler = .false. ! use Euler time-stepping for TOP
ln_rsttr = .false. ! start from a restart file (T) or not (F)
ln_top_euler = .false., ! use Euler time-stepping for TOP
ln_rsttr = .false., ! start from a restart file (T) or not (F)
nn_rsttr = 0 ! restart control = 0 initial time step is not compared to the restart file value
! = 1 do not use the value in the restart file
! = 2 calendar parameters read in the restart file
......@@ -28,19 +28,19 @@
!-----------------------------------------------------------------------
jp_bgc = 0 ! Number of passive tracers of the BGC model
!
ln_pisces = .false. ! Run PISCES BGC model
ln_my_trc = .false. ! Run MY_TRC BGC model
ln_age = .false. ! Run the sea water age tracer
ln_cfc11 = .false. ! Run the CFC11 passive tracer
ln_cfc12 = .false. ! Run the CFC12 passive tracer
ln_sf6 = .false. ! Run the SF6 passive tracer
ln_c14 = .false. ! Run the Radiocarbon passive tracer
ln_pisces = .false., ! Run PISCES BGC model
ln_my_trc = .false., ! Run MY_TRC BGC model
ln_age = .false., ! Run the sea water age tracer
ln_cfc11 = .false., ! Run the CFC11 passive tracer
ln_cfc12 = .false., ! Run the CFC12 passive tracer
ln_sf6 = .false., ! Run the SF6 passive tracer
ln_c14 = .false., ! Run the Radiocarbon passive tracer
!
ln_trcdta = .false. ! Initialisation from data input file (T) or not (F)
ln_trcdmp = .false. ! add a damping termn (T) or not (F)
ln_trcdmp_clo = .false. ! damping term (T) or not (F) on closed seas
ln_trcbc = .false. ! Surface, Lateral or Open Boundaries conditions
ln_trcais = .false. ! Antarctic Ice Sheet nutrient supply
ln_trcdta = .false., ! Initialisation from data input file (T) or not (F)
ln_trcdmp = .false., ! add a damping termn (T) or not (F)
ln_trcdmp_clo = .false., ! damping term (T) or not (F) on closed seas
ln_trcbc = .false., ! Surface, Lateral or Open Boundaries conditions
ln_trcais = .false., ! Antarctic Ice Sheet nutrient supply
!
jp_dia3d = 0 ! Number of 3D diagnostic variables
jp_dia2d = 0 ! Number of 2D diagnostic variables
......@@ -66,25 +66,25 @@
!-----------------------------------------------------------------------
&namtrc_adv ! advection scheme for passive tracer (default: NO selection)
!-----------------------------------------------------------------------
ln_trcadv_OFF = .false. ! No passive tracer advection
ln_trcadv_cen = .false. ! 2nd order centered scheme
ln_trcadv_OFF = .false., ! No passive tracer advection
ln_trcadv_cen = .false., ! 2nd order centered scheme
nn_cen_h = 4 ! =2/4, horizontal 2nd order CEN / 4th order CEN
nn_cen_v = 4 ! =2/4, vertical 2nd order CEN / 4th order COMPACT
ln_trcadv_fct = .false. ! FCT scheme
ln_trcadv_fct = .false., ! FCT scheme
nn_fct_h = 2 ! =2/4, horizontal 2nd / 4th order
nn_fct_v = 2 ! =2/4, vertical 2nd / COMPACT 4th order
ln_trcadv_mus = .false. ! MUSCL scheme
ln_mus_ups = .false. ! use upstream scheme near river mouths
ln_trcadv_ubs = .false. ! UBS scheme
ln_trcadv_mus = .false., ! MUSCL scheme
ln_mus_ups = .false., ! use upstream scheme near river mouths
ln_trcadv_ubs = .false., ! UBS scheme
nn_ubs_v = 2 ! =2 , vertical 2nd order FCT
ln_trcadv_qck = .false. ! QUICKEST scheme
ln_trcadv_qck = .false., ! QUICKEST scheme
/
!-----------------------------------------------------------------------
&namtrc_ldf ! lateral diffusion scheme for passive tracer (default: NO selection)
!-----------------------------------------------------------------------
! ! Type of the operator:
ln_trcldf_OFF = .false. ! No explicit diffusion
ln_trcldf_tra = .false. ! use active tracer setting
ln_trcldf_OFF = .false., ! No explicit diffusion
ln_trcldf_tra = .false., ! use active tracer setting
! ! Coefficient (defined with namtra_ldf coefficient)
rn_ldf_multi = 1. ! multiplier of aht for TRC mixing coefficient
rn_fact_lap = 1. ! Equatorial enhanced zonal eddy diffusivity (lap only)
......@@ -92,7 +92,7 @@
!-----------------------------------------------------------------------
&namtrc_rad ! treatment of negative concentrations
!-----------------------------------------------------------------------
ln_trcrad = .true. ! artificially correct negative concentrations (T) or not (F)
ln_trcrad = .true., ! artificially correct negative concentrations (T) or not (F)
/
!-----------------------------------------------------------------------
&namtrc_snk ! Sedimentation of particles
......@@ -102,7 +102,7 @@
!-----------------------------------------------------------------------
&namtrc_dcy ! Diurnal cycle
!-----------------------------------------------------------------------
ln_trcdc2dm = .false. ! Diurnal cycle for TOP
ln_trcdc2dm = .false., ! Diurnal cycle for TOP
/
!-----------------------------------------------------------------------
&namtrc_opt ! light availability in the water column
......@@ -111,7 +111,7 @@
! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename !
sn_par = 'par.orca' , 24 , 'fr_par' , .true. , .true. , 'yearly' , '' , '' , ''
cn_dir = './' ! root directory for the location of the dynamical files
ln_varpar = .true. ! Read PAR from file
ln_varpar = .true., ! Read PAR from file
parlux = 0.43 ! Fraction of shortwave as PAR
light_loc = 'center' ! Light location in the water cell ('center', 'integral')
/
......@@ -138,21 +138,30 @@
nn_trd_trc = 5475 ! time step frequency and tracers trends
nn_ctls_trc = 0 ! control surface type in mixed-layer trends (0,1 or n<jpk)
rn_ucf_trc = 1 ! unit conversion factor (=1 -> /seconds ; =86400. -> /day)
ln_trdmld_trc_restart = .false. ! restart for ML diagnostics
ln_trdmld_trc_instant = .true. ! flag to diagnose trends of instantantaneous or mean ML T/S
ln_trdmld_trc_restart = .false.,! restart for ML diagnostics
ln_trdmld_trc_instant = .true., ! flag to diagnose trends of instantantaneous or mean ML T/S
ln_trdtrc( 1) = .true.
ln_trdtrc( 2) = .true.
ln_trdtrc(23) = .true.
/
!----------------------------------------------------------------------
&namtrc_bc ! data for boundary conditions
!----------------------------------------------------------------------
! Surface and coastal input data must be specified individually for each tracer.
! Lateral open boundary inputs are specified for each BDY segment and related inputfiles
! must contain data for the variables with active open boundary (set through &namtrc).
! By default, variable names of BDY inputfiles are the same as in &namtrc, but using
! cn_tronam it is possible to specify alternative variable names to match with inputfiles.
! ! file name ! freq ! variable ! time interp. ! clim !'yearly' ! weights ! rotation | land/sea
! sn_trcobc(1) = 'bdy_dta_trc_North_y1980', -1 , 'dummy' , .false. , .true. ,'yearly' , '', '', ''
!-----------------------------------------------------------------------
cn_dir_sbc = './' ! root directory for the location of SURFACE data files
cn_dir_cbc = './' ! root directory for the location of COASTAL data files
cn_dir_obc = './' ! root directory for the location of OPEN data files
ln_rnf_ctl = .false. ! Remove runoff dilution on tracers with absent river load
ln_rnf_ctl = .false., ! Remove runoff dilution on tracers with absent river load
rn_sbc_time = 86400. ! Time scaling factor for SBC data (seconds in a day)
rn_cbc_time = 86400. ! Time scaling factor for CBC data (seconds in a day)
! cn_tronam(1) = 'var1' ! Tracer-name to variable-name translation
/
!----------------------------------------------------------------------
&namtrc_bdy ! Setup of tracer boundary conditions
......@@ -164,6 +173,8 @@
! = 0 NO damping of tracers at open boudaries
! = 1 Only for tracers forced with external data
! = 2 Damping applied to all tracers
ln_zintobc = .false., ! T if a vertical interpolation is required. Variables gdep[t] and e3[t] must exist in the file
! automatically defined to T if the number of vertical levels in bdy dta /= jpk
/
!-----------------------------------------------------------------------
&namtrc_ais ! Representation of Antarctic Ice Sheet tracers supply
......
......@@ -7,6 +7,5 @@ ORCA2_OFF_PISCES OCE TOP OFF
ORCA2_OFF_TRC OCE TOP OFF
ORCA2_SAS_ICE OCE ICE NST SAS
ORCA2_ICE_PISCES OCE TOP ICE NST ABL
ORCA2_ICE_ABL OCE ICE ABL
SPITZ12 OCE ICE
WED025 OCE ICE
......@@ -192,6 +192,12 @@ export NEMO_DIR=${MAIN_DIR}/${x_s}
[ "${CMP_NAM}" == 'all' ] && . ${COMPIL_DIR}/Flist_archfile.sh all && exit
# Load environment if exists
env_file=`find ${MAIN_DIR}/arch -name arch-${CMP_NAM}.env`
if [ -f "${env_file}" ] ; then
echo "Load environment file arch-${CMP_NAM}.env"
. ${env_file}
fi
## No ref. cfg, demo case, nor remote cfg selected
if [[ -z "${REF_CONF}" && -z "${DEMO_CONF}" && -z "${RMT_CONF}" ]]; then
......
......@@ -56,12 +56,16 @@ set -o posix
#-
MYDIR=$1
MYFILE=$(basename "$2")
if [ "$MYFILE" == "agrif2model.f90" ];then
if [ -d ${MYDIR}/${NEW_CONF}/WORK ]; then
\cp ${MYDIR}/${NEW_CONF}/WORK/${MYFILE/.f90/.F90} ${MYDIR}/${NEW_CONF}/NEMOFILES/obj/$MYFILE
else
\cp ${CONFIG_DIR}/${NEW_CONF}/WORK/${MYFILE/.f90/.F90} ${MYDIR}/${NEW_CONF}/NEMOFILES/obj/$MYFILE
fi
# generic case
if [ -d ${MYDIR}/WORK ]; then
\cp ${MYDIR}/WORK/${MYFILE/.f90/.F90} ${MYDIR}/NEMOFILES/obj/$MYFILE
# DOMAINcfg case
elif [ -d ${MYDIR}/src ]; then
\cp ${MYDIR}/src/${MYFILE/.f90/.F90} ${MYDIR}/NEMOFILES/obj/$MYFILE
fi
else
cd ${MYDIR}/${NEW_CONF}/NEMOFILES/ppsrc/nemo ; ${MYDIR}/${NEW_CONF}/NEMOFILES/conv ${MYDIR}/${NEW_CONF}/NEMOFILES/agrif_oce.in -rm -incdir ${MYDIR}/${NEW_CONF}/NEMOFILES/inc -comdirout ${MYDIR}/${NEW_CONF}/NEMOFILES/obj -convfile ${MYFILE} > /dev/null
cd ${MYDIR}/NEMOFILES/ppsrc/nemo
${MYDIR}/NEMOFILES/conv ${MYDIR}/NEMOFILES/agrif_oce.in -rm -incdir ${MYDIR}/NEMOFILES/inc -comdirout ${MYDIR}/NEMOFILES/obj -convfile ${MYFILE} > /dev/null
fi
......@@ -11,7 +11,7 @@ inc $COMPIL_DIR/arch_nemo.fcm
inc $COMPIL_DIR/cpp.fcm
search_src 1
src::nemo $CONFIG_DIR/$NEW_CONF/WORK
src::nemo $CONFIG_DIR/$NEW_CONF/WORK
bld::target lib_cray.f90 nemo.f90 agrif_user.f90 agrif2model.f90
......@@ -20,7 +20,7 @@ dir::root $NEMO_TDIR/$NEW_CONF/NEMOFILES
bld::tool::fc_output
bld::tool::fc_compile
bld::tool::fc_include
bld::tool::fc $COMPIL_DIR/agrifpp.sh ${NEMO_TDIR}
bld::tool::fc $COMPIL_DIR/agrifpp.sh $NEMO_TDIR/$NEW_CONF
bld::tool::fflags
bld::tool::ld
bld::tool::ldflags
......
......@@ -11,7 +11,7 @@ inc $COMPIL_DIR/arch_tools.fcm
inc $COMPIL_DIR/cpp_tools.fcm
search_src 1
src::nemo $TOOLS_DIR/$NEW_CONF/src
src::nemo $TOOLS_DIR/$NEW_CONF/src
bld::target make_domain_cfg.f90 agrif_user.f90 agrif2model.f90
......@@ -20,7 +20,7 @@ dir::root $TOOLS_DIR/$NEW_CONF/NEMOFILES
bld::tool::fc_output
bld::tool::fc_compile
bld::tool::fc_include
bld::tool::fc $COMPIL_DIR/agrifpp.sh $TOOLS_DIR
bld::tool::fc $COMPIL_DIR/agrifpp.sh $TOOLS_DIR/$NEW_CONF
bld::tool::fflags
bld::tool::ld
bld::tool::ldflags
......
#!/bin/bash
#!
#BSUB -q p_short
#BSUB -n TOTAL_NPROCS
#BSUB -J NEMO_SETTE
#BSUB -o job_sette.out
#BSUB -e job_sette.out
#BSUB -P R000
#BSUB -x
###############################################################
# Test specific settings. Do not hand edit these lines; the fcm_job.sh script will set these
# (via sed operating on this template job file).
#
OCEANCORES=NPROCS
XIOS_NUMPROCS=NXIOPROCS
export SETTE_DIR=DEF_SETTE_DIR
###############################################################
#
# load sette functions (only post_test_tidyup needed)
#
. ${SETTE_DIR}/all_functions.sh
# Don't remove neither change the following line
# BODY
#
# These variables are needed by post_test_tidyup function in all_functions.sh
#
export EXE_DIR=DEF_EXE_DIR
export INPUT_DIR=DEF_INPUT_DIR
export CONFIG_DIR=DEF_CONFIG_DIR
export TOOLS_DIR=DEF_TOOLS_DIR
export NEMO_VALIDATION_DIR=DEF_NEMO_VALIDATION
export NEW_CONF=DEF_NEW_CONF
export CMP_NAM=DEF_CMP_NAM
export TEST_NAME=DEF_TEST_NAME
#
# end of set up
# Load environment if exists
env_file=`find ${TOOLS_DIR}/../arch -name arch-${CMP_NAM}.env`
if [ -f "${env_file}" ] ; then
echo "Load environment file arch-${CMP_NAM}.env"
. ${env_file}
fi
###############################################################
# Local settings for CMCC cluster
#
export I_MPI_HYDRA_BRANCH_COUNT=`cat $LSB_DJOB_HOSTFILE | uniq | wc -l`
export MPIRUN="mpiexec.hydra"
# local xios setting for MPMD
export LD_LIBRARY_PATH=${XIOS}/lib:${LD_LIBRARY_PATH}
XIOS_SERVER_PATHNAME="${XIOS}/bin/xios_server.exe"
echo "Start JOBID ${LSB_JOBID}"
###############################################################
#
# change to the working directory
#
cd ${EXE_DIR}
#
echo Running on host `hostname`
echo Time is `date`
echo Directory is `pwd`
#
# Run the parallel MPI executable
#
startTime=$(date +%s)
if [ MPI_FLAG == "yes" ]; then
if [ ${USING_MPMD} == "yes" ] && [ ${XIOS_NUMPROCS} -gt 0 ]; then
# XIOS detached mode
xioscmdfile="xioscmdfile"
#
echo "# Configuration file for mpiexec.hydra" > $xioscmdfile
echo "-n ${OCEANCORES} ./nemo" >> $xioscmdfile
echo "-n ${XIOS_NUMPROCS} ${XIOS_SERVER_PATHNAME}" >> $xioscmdfile
time ${MPIRUN} -configfile $xioscmdfile
else
# XIOS attached mode
time ${MPIRUN} ./nemo
fi
else
# Run the serial executable
time ./nemo
fi
endTime=$(date +%s)
totalTime=$(($endTime-$startTime))
echo "Model finished after $totalTime seconds for test $TEST_NAME"
#
post_test_tidyup
# END_BODY
# Don't remove neither change the previous line
exit
======================
usage of SETTE package
======================
INSTALLATION
============
* checkout the code as follow:
.. code-block:: console
$ svn checkout http://forge.ipsl.jussieu.fr/nemo/svn/utils/CI/sette sette
* The sette directory have to be located in the main directory (at the same level as ``src/`` or ``cfg/``).
MASTER SCRIPT: sette.sh
=======================
* ``sette.sh`` is a simple wrapper that runs tests on the reference configurations, test cases and generates the report at the end.
* ``sette.sh`` is able n option, to take a list of configurations in argument (sette.sh -t "CFG1 CFG2 CFG3").
- The list of available configurations is available in running ./sette_list_avail_cfg.sh.
- The default for sette is to run all of the reference and test configurations.
* Users need to set up the ``param.cfg`` file correctly and download input files before running the script.
SECONDARY SCRIPT
================
* ``sette_reference-configuration.sh`` runs sette tests on the reference configurations.
* ``sette_test-cases.sh`` runs sette tests on test cases.
* ``sette_list_avail_rev.sh`` generates a listing on all the revisions available in the validation directory for each configuration.
* ``sette_list_avail_cfg.sh`` generates a listing of all the available configurations.
* ``sette_rpt.sh`` generates the report.
USER SETUP (recommended)
========================
* in ``param.cfg`` :
- variables (NEMO_VALIDATION_REF, NEMO_REV_REF) have to be specified in param.cfg
- variables SETTE_(COMPILER, USING_XIOS, USING_MPMD, JOB_PREFIX_MPMD, JOB_PREFIX_NOMPMD, BATCH_CMD, BATCH_STAT, BATCH_NAME, FORCING_DIR, SVN_CMD, NEMO_VALIDATION_DIR, ADD_NOSIGNEDZERO)
can be exported from your shell startup files. It is advise to setup the default value in your startup file if it doesn't fit your need.
If you prefer not doing so, you need to update the default initialisation
- variable NEMO_VALIDATION_DIR is sette by default in MAIN_DIR/NEMO_VALIDATION (this is to avoid overwritting results when running sette on different branches).
- description of variables listed in param.cfg (SETTE_):
# reference version for bit reproducibility results
| NEMO_VALIDATION_REF : reference directory
| NEMO_REV_REF : reference revision
# compiler information
| COMPILER : compiler among those available in NEMOGCM/ARCH
# XIOS management
| USING_XIOS : flag to control the activation of key_xios.
"yes" to compile using key_xios and link to the external XIOS library.
"no" to compile without key_xios and link to the old IOIPSL library.
| USING_MPMD : flag to control the use of stand-alone IO servers
(requires USING_XIOS="yes").
"yes" to run in MPMD (detached) mode with stand-alone IO servers.
"no" to run in SPMD (attached) mode without separate IO servers.
# MPI communication management
| USING_MPI3 : flag to control the activation of key_mpi3
"yes" to use the MPI3 neighbourhood collectives for halo exchange
"no" to use standard point-to-point communications for halo exchange
# loop fusion management
| USING_LOOP_FUSION : flag to control the activation of key_loop_fusion
"yes" to use the loop fusion adv routines when halo = 2
"no" to use standard adv routine
# generique batch scrip prefix name if MPMD set to true/false
| JOB_PREFIX_MPMD
| JOB_PREFIX_NOMPMD
# batch command needed
| BATCH_CMD : command for job submission in batch mode
| BATCH_STAT : command to check job status
| BATCH_NAME : generic sette job name (as it appears with $BATCH_STAT command)
# file storing
| FORCING_DIR : directory where is stored input.tar file (same name in input_CONFIG_NAME.cfg)
reference configuration input tar file could be found here : https://gws-access.jasmin.ac.uk/public/nemo/sette_inputs/
| NEMO_VALIDATION_DIR : directory where is stored restarts, run.stat, tracer.stat and ocean.output files for each configuration
( NEMO_VALIDATION_DIR/WCONFIG_NAME/WCOMPILER_NAME/TEST_NAME/REVISION_NUMBER(or DATE) )
| INPUT_DIR : directory where is stored input files (DO NOT CHANGE IT)
# misc.
| SVN_CMD : svn command use to do svn info (default svn). Could be useful if you are using git svn
: Reference directory for result comparison will be NEMO_VALIDATION_REF/COMPILER/NEMO_REV_REF
| ADD_NODIGNEDZERO : set "yes" if you need key_nosignedzero to run nemo
USAGE of main scripts
=====================
* ``sette.sh`` : it is a simple wrapper to run tests on the reference configurations, test-cases and generate the report at the end.
- if no argument is given, sette run all the reference configurations and test cases
- if a list of argument is provided (sette.sh -t "CFG1 CFG2 CFG3"), sette will only run these configurations.
The list of available configurations is available in running ./sette_list_avail_cfg.sh.
- user need to set up the param.cfg file correctly and download input file before running the script.
- user can enforce synchronisation (-s option) of the existing CFG_ST with the REF configuration (EXPREF and MY_SRC).
- user can enforce cleaning of the CFG_ST configuration (use of makenemo -n CFG_ST clean) (-c option)
* ``sette_rpt.sh`` : it generates the sette report.
- if no argument is given, the report will be generated on the last changed revision.
- if an argument is given (revision number) the report will be generated for this revision only
- if 'old' is given as argument the former behavior is applied (the latest revision is check whatever the current revision
- it is possible to retreive all the available revision test using sette_list_avail_rev.sh
- XXXXX+ means sette results for revision XXXXX contain local modification in src/cfgs/test
- it is NOT possible to run sette_rpt.sh for a single configuration.
* ``sette_list_avail_rev.sh`` : generate a listing on all the revisions available in the validation directory for each configuration.
- no argument needed
- XXXXX+ means sette results for revision XXXXX contain local modification in src/cfgs/test
* ``sette_list_avail_cfg.sh`` : generate a listing of all the available configurations.
- no argument needed
NOTES
=====
* compilation issues:
- in case of error you can remove your NEW_CONF directory and all files doing :
::
$ ./makenemo -n MY_CONFIG clean_config
- if you want recompile nemo but before you want to clean compiled code do :
::
./makenemo clean
- if you have already compiled you can re-run all sette.sh and compilation part will be by-passed.
* verbose sette output:
- if you want a completly verbose makenemo you can uncomment `set -x` in makenemo script
and then launch `./sette.sh 2>&1 | tee out.sette` . This creates out.sette file in ${SETTE_DIR}
TO ADD NEW CONFIGURATION
=========================
1. creates a new ``input_NEW_CONFIG.cfg`` if you need tar file (if you use same tar file of GYRE, ORCA2_LIM or ORCA2_LIM_PISCES you can use it)
2. add a bloc in one of the ``sette_reference-configuration.sh`` or ``sette_test-cases.sh`` script
3. add your configuration to the list in ``param.cfg``
TO ADD NEW MACHINE
===================
1. add ``arch-compiler.fcm`` in ``NEMOGCM/ARCH`` directory
2. makenemo -m new_compiler (see makenemo -h for help)
3. add new batch-file
TO ADD NEW BATCH-FILE
======================
1. see in ``SETTE/BATCH_TEMPLATE`` directory existing examples
2. create you own batch file like: ``batch-${COMPILER}`` file
(note: sette_test-cases.sh and ``sette_cfg-ref.sh`` will copy it in job_batch_template if you run tests in INTERACT_FLAG="no")
EXTRA SETTING POSSIBLE
======================
Among the setting that can be modified by the user in sette_cfg-ref.sh and sette_test-cases.sh script,
there are: sequential/parrallel (default), interacive or not (default) and mpi (default) or not.
- | BATCH_COMMAND_PAR is the command for job submission in batch mode parallel (specified in param.cfg).
- | BATCH_COMMAND_SEQ is the command for job submission in batch mode sequential (NB_PROC = 1).
the default value is the BATCH_COMMAND_PAR value.
- | INTERACT_FLAG : "yes" if you want to run in interactive mode.
"no" if you want to run in batch mode (default).
- | MPIRUN_FLAG : "yes" if you want to run in parallel (MPI) (default).
"no" if you want to run in sequential mode (NB_PROC = 1).
......@@ -172,7 +172,7 @@ clean_config() {
# define validation dir
set_valid_dir () {
if [ ${DETACHED_HEAD} == "no" ] ; then
REVISION_NB=`git -C ${MAIN_DIR} rev-list --abbrev-commit origin | head -1l`
REVISION_NB=`git -C ${MAIN_DIR} rev-parse --short HEAD 2> /dev/null`
else
REVISION_NB=${DETACHED_CMIT}
fi
......
This diff is collapsed.
......@@ -983,7 +983,7 @@ if [ ${config} == "ORCA2_ICE_OBS" ] ; then
#
. ./makenemo -m ${CMP_NAM} -n ${SETTE_CONFIG} -r ORCA2_ICE_PISCES -d "OCE ICE" -j ${CMPL_CORES} add_key "key_asminc ${ADD_KEYS}" del_key "key_top ${DEL_KEYS}"
fi
if [ ${config} == "ORCA2_ICE_OBS" ] && [ ${DO_RESTART} == "1" ] ; then
if [ ${config} == "ORCA2_ICE_OBS" ] && [ ${DO_REPRO} == "1" ] ; then
## Reproducibility tests
export TEST_NAME="REPRO_4_8"
cd ${SETTE_DIR}
......@@ -1422,8 +1422,7 @@ if [ ${config} == "AGRIF" ] && [ ${DO_CORRUPT} == "1" ] ; then
sync_config AGRIF_DEMO ${SETTE_CONFIG} 'cfgs'
clean_config AGRIF_DEMO ${SETTE_CONFIG} 'cfgs'
#
# AGRIF_DEMO does not yet support nn_hls=2 => key_loop_fusion can not be used
. ./makenemo -m ${CMP_NAM} -n ${SETTE_CONFIG} -r AGRIF_DEMO -j ${CMPL_CORES} add_key "${ADD_KEYS/key_loop_fusion}" del_key "key_agrif ${DEL_KEYS}"
. ./makenemo -m ${CMP_NAM} -n ${SETTE_CONFIG} -r AGRIF_DEMO -j ${CMPL_CORES} add_key "${ADD_KEYS}" del_key "key_agrif ${DEL_KEYS}"
cd ${SETTE_DIR}
. ./prepare_exe_dir.sh
set_valid_dir
......
......@@ -591,7 +591,7 @@ if [[ $? == 0 ]] ; then
branchname="Unknown"
fi
else
revision=`git rev-list --abbrev-commit origin | head -1l`
revision=`git rev-parse --short HEAD 2> /dev/null`
fi
else
branchname="Unknown"
......