15. I/O and Online Diagnostics#
15.1. General ouptut options#
AVERAGES |
Process and output time-averaged data |
AVERAGES_K |
Process and output time-averaged vertical mixing |
PARALLEL_FILES |
Output one file per CPU |
NC4PAR |
Use NetCDF4 parallel capabilities |
XIOS |
Use XIOS IO server (only version >= 2 is supported) |
XIOS is an external library for output (developed at IPSL) providing for flexibility and design to improve performances for HPC : see http://forge.ipsl.jussieu.fr/ioserver
Preselected options:
# define AVERAGES
# define AVERAGES_K
# undef PARALLEL_FILES
# undef NC4PAR
# undef XIOS
By default, with MPI activated input and output files are treated in a pseudo-sequential way, and one NetCDFfile corresponds to the whole domain. This has drawbacks when using a large number of computational cores, since each core is writing its part of the domain sequentially, the time dedicated to outputs increase with the number of cores. Three alternatives are implemented within CROCO.
Splited files (#define PARALLEL_FILES)
In this case, each core is writing its part only of the domain in separated files (one per MPI domain). This writing is performed concurrently. One other advantage is to avoid the creation of huge output files. The domain related output files can be recombined using ncjoin utility (in fortran) compiled in the same time than CROCO. Note that in this case, input files have to be splited as well, using partit utility.
Parallel NetCDF(#define NC4PAR)
This option requires NetcDF4 verion, installed with parallel capabilities. All cores are writing concurrently but in the same time.
IO server (#define XIOS)
XIOS is an external IO server interfaced with CROCO. Informations about use and installation can be found there https://forge.ipsl.jussieu.fr/ioserver. In this case, output variables are defined in .xml files. See also the Diagnostics chapter.
15.2. Advanced diagnostics options#
DIAGNOSTICS_TS |
Store and output budget terms of the tracer equations |
DIAGNOSTICS_TS_ADV |
Choose advection rather than transport formulation for tracer budgets |
DIAGNOSTICS_TS_MLD |
Integrate tracer budgets over the mixing layer depth (hbl, defined as the turbulent layer from the mixing param) |
DIAGNOSTICS_TS_MLD_DENS |
Integrate tracer budgets over the mixed-layer depth (MLD, defined with criterion in density) |
DIAGNOSTICS_TSVAR |
Store and output budget terms of the tracer variance equations (instead of tracer) |
DIAGNOSTICS_UV |
Store and output budget terms of the momentum equations. |
DIAGNOSTICS_BARO |
Isolate contribution from barotropic/baroclinic coupling (included in the vertical mixing term otherwise) for momentum, barotropic vorticity and kinetic energy budgets |
DIAGNOSTICS_VRT |
Store and output budget terms of the barotropic vorticity equation |
DIAGNOSTICS_EK |
Store and output budget terms of the kinetic energy equation (vertically integrated) |
DIAGNOSTICS_EDDY |
Store and output time-averaged quadratic quantities u^2, v^2, u*v, u*w, v*w, u*b, v*b, w*b, u*sustr, v*svstr, u*bustr, v*bvstr, zeta^2 |
DIAGNOSTICS_PV |
Store and output non conservative term in the momentum equations and diabatic term in the tracer equations. if DIAGNOSTICS_DISS is also defined, terms are multiplied by momentum and thermal/saline expension coefficients to be used to estimate kinetic and potential energy dissipation. |
Preselected options:
# undef DIAGNOSTICS_TS
# undef DIAGNOSTICS_TS_ADV
# undef DIAGNOSTICS_TS_MLD
# undef DIAGNOSTICS_TS_MLD_DENS
# undef DIAGNOSTICS_TSVAR
# undef DIAGNOSTICS_UV
# undef DIAGNOSTICS_BARO
# undef DIAGNOSTICS_VRT
# undef DIAGNOSTICS_EK
# undef DIAGNOSTICS_PV
# undef DIAGNOSTICS_EDDY
15.2.1. Tracer budget terms#
DIAGNOSTICS_TS computes the tracer budgets in 3D.
DIAGNOSTICS_TS_MLD computes the tracer budgets in 2D:
either over the mixing layer (hbl, defined as the turbulent layer from the vertical mixing parametrization)
or over the mixed layer (MLD, defined as the homogeneous surface layer in density) if DIAGNOSTICS_TS_MLD_DENS is defined in addition.
Note
To integrate tracer budgets over the mixed layer depth, the CPP key LMD_SKPP needs to be activated.
Tracer budgets will be stored in croco_dia.nc (instantaneous) and/or croco_dia_avg.nc (average) output files.
15.2.1.1. Mixing layer calculation#
The turbulent mixing layer (hbl) is defined depending on the mixing parameterization (see Vertical mixing parametrizations).
15.2.1.2. Mixed layer calculation#
The mixed layer depth (MLD) is generally defined as the slice of the surface ocean where temperature, salinity and density are homogeneous. In reality, the mixed layer is not perfectly homogeneous, and a threshold value is applied to determine when temperature/density is no longer considered homogeneous. In addition, in regions of heavy rainfall (e.g. in some tropical regions), the density-homogeneous layer and the thermal-homogeneous layer may be different, and a salt barrier layer (BL) can form.
The MLD is thus evaluated in CROCO under the DIAGNOSTICS_TS_MLD_DENS key as the depth of homogeneous density, i.e. where the density is equal to the surface density plus a threshold defined as 0.03 kg/m³ by default (according to [de Boyer Montegut C. et al., 2004]), but that can be modified by the user in croco.in. Starting from the surface, the mixed layer level corresponds to the last level that satisfies the following condition:
where \(D(x,y,k,t)\) is the density, and \(D_{\text{threshold}}\) is 0.03 kg/m3 by default (this value can be modified by the user in croco.in).
The MLD is stored in the variable dens_mld_depth.
15.2.1.3. Barrier layer computation#
In addition the isothermal layer depth is computed, to allow the evaluation of an eventual BL. Starting from the surface, the isothermal layer is computed as the last level that satisfies the following condition:
where \(T(x,y,k,t)\) is the temperature, and \(T_{\text{threshold}}\) is 0.2°C by default (this value can be modified by the user in croco.in).
The isothermal layer depth is stored in the variable temp_mld_depth.
From dens_mld_depth and temp_mld_depth the BL thickness (BLT) can be computed:
Fig: schematic view of the calculation of the MLD based on the density criterion, and the calculation of the BLT (when existing, left).#
15.2.1.4. MLD thresholds#
The thresholds are defined and can be modified in the croco.in file (or croco_inter.in):
diag_mld_dens: RHO threshold [kg/m3], T threshold [Celsius]
3.d-2 2.d-1
Note
These values depend on the study area and default values are generally valid for deep waters. The threshold values and the reference depth are user-modifiable parameters.
15.2.1.5. Budget terms outputs#
The temperature and salinity budget terms over the homogenous-density MLD are computed, and stored in the following variables:
temp_aver_mld / salt_aver_mld: temperature/salinity averaged over the MLDtemp_rate_mld / salt_rate_mld: temperature/salinity MLD rate of change termtemp_entr_mld / salt_entr_mld: temperature/salinity MLD entrainment termtemp_xadv_mld / salt_xadv_mld: temperature/salinity MLD x-component horizontal advection termtemp_yadv_mld / salt_yadv_mld: temperature/salinity MLD y-component horizontal advection termtemp_vadv_mld / salt_vadv_mld: temperature/salinity MLD vertical advection termtemp_hmix_mld / salt_hmix_mld: temperature/salinity MLD horizontal mixing termtemp_vmix_mld / salt_vmix_mld: temperature/salinity MLD vertical mixing termtemp_forc_mld / salt_forc_mld: temperature/salinity MLD forcing term
The user can choose which variables to include in the output files by flagging the tracers with T (True) or F (False).
Temperature and salinity are examples of tracers.
diag3D_history_fields: diag_tracers3D(1:NT)
T T 50*F
diag2D_history_fields: diag_tracers2D(1:NT)
T T 50*F
diag3D_average_fields: diag_tracers3D_avg(1:NT)
T T 50*F
diag2D_average_fields: diag_tracers2D_avg(1:NT)
T T 50*F
15.2.2. Energy budget terms#
The different budgets and their computation are detailled in https://www.jgula.fr/Croco/diagnostics_croco.pdf