Opened 5 years ago

Closed 3 years ago

#1605 closed Task (fixed)

Stochastic parametrization of the equation of state.

Reported by: bouttier Owned by:
Priority: low Milestone:
Component: OCE Version: release-3.6
Severity: Keywords: EOS STO
Cc: Review:
MP ready?:


It has been shown in [Brankart 2013] that unresolved scales represent a major source of uncertainties in the computation of the large scale horizontal gradient density from the large-scale temperature and salinity fields.

The effect of these uncertainties can be simulated using random processes to represent unresolved temperature and salinity fluctuations.

This task can be separated in two steps:

  • Implement a generic random autoregressive processes generator in NEMO
  • Use it to simulate explicitly unresolved mesoscale temperature and salinity fluctuations in adding them in the equation of state.

Technical implementation

The first implementation of this functionality has been done on the development branch:
and has been integrated to the NEMO V3.6_STABLE with some minor modifications:

First, a random autoregressive processes generator has been implemented. Source files are under the OPA_SRC/STO/ directory. storng.F90 contains a Pseudo Random Numbers Generator (PRNG). stopar.F90 is the module that will generate random processes.

To perturb to the temperature and salinity variables, the computation of adapted random walk is done in the stopts.F90 module.

Finally, we have modified the eosbn2.F90 module, and more particularly the eos_insitu_pot routine to add these fluctuations to the equation of state.

The parametrization of this module is driven by the namelist block namsto and concerns essentially random processes generator: random walk horizontal and vertical standard deviation , random walk time correlation,  order of the autoregressive processes.

Pertubation of the equation of state is activated when the namelist parameter ln_sto_eos is set to .true.


For now, only SETTE tests with disabled stochastic parametrization of EOS have been done successfully. No scientific tests have been done with the enabled module.


Some elements are still missing about this module.  Even if inline documentation is quite explicit, the NEMO book chapter about this functionality is still empty.

The PRNG (storng.F90) is not fully coded following NEMO coding conventions. There are two reasons about that:

  • First, routines are very optimized because they can be called a lot of time.
  • Secondly, it is more clear that the written code follows the PRNG algorithm to ensure its validation which can be tricky for a PRNG.

The allocation of arrays in stopar.F90 and stopts.F90 modules are not checked. This have to be done.

Commit History (0)

(No commits)

Change History (5)

comment:1 Changed 5 years ago by pabouttier

Last edited 5 years ago by pabouttier (previous) (diff)

comment:2 Changed 4 years ago by nicolasmartin

  • Keywords EOS added; eos removed

comment:3 Changed 4 years ago by nicolasmartin

  • Keywords STO added; sto removed

comment:4 Changed 3 years ago by nicolasmartin

  • Owner nemo deleted
  • Status changed from new to assigned

comment:5 Changed 3 years ago by clevy

  • Milestone 2015 WP deleted
  • Resolution set to fixed
  • Status changed from assigned to closed
Note: See TracTickets for help on using tickets.