Skip to content

Ingesting and coupling interface #80

@einola

Description

@einola

We need an interface between the physical model and forcing data, whether it's coming from some idealised settings, files, or a coupler. In short, what people usually do when forcing a model with reanalysis data is the following:

  1. Read atmospheric state from files, e.g.
    • 10 m wind (u,v)
    • 2 m temperature
    • One of 2m dew point, mixing ratio, or specific humidity
    • mean sea level pressure
    • incoming long- and short-wave radiation at the surface
    • rain
    • snowfall
  2. Use bulk formulas to calculate the total flux at the surface, sometimes along with the derivative of the total flux w.r.t. surface temperature.
  3. Hand the total flux (and its derivative) to a thermodynamic routine that:
    • updates the ice surface temperature
    • calculates the temperature profile in the ice
  4. Hand the imbalance in energy at ice top and/or bottom to a function of the thermodynamic model that:
    • calculates melt or growth of the ice

In many cases steps 3 and 4 are done in the same function.

Different coupling strategies with the atmosphere insert their data in different places in this routine. The ones I'm aware of (and I'm reasonably sure it's all there is):

  • CNRM: The atmosphere calculates the fluxes and hands them to the ice model through the coupler. This means the data is input directly into step 3.
  • CESM: The atmosphere hands the atmospheric state at the 1st model level to the ice model through the coupler. Data is input into step 2 for the ice model to calculate fluxes.
  • The Winton (2000) approach. The atmosphere calculates the imbalance in energy at the ice top or bottom and sends this to the ice model via the coupler. Data is input into step 4.

We need to accommodate at a minimum reading from files and the CNRM approach in SASIP, the CESM approach should also be accomodated. The Winton (2000) approach is the most physically consistent and my favourite ... but I don't know if anyone's actually using it.


To accommodate at least reading from files and the CNRM and CESM approaches, I suggest that we rearrange a bit the current structure of ElementData and NextsimPhysics. I propose a basic Inputs class that inherits from BaseElementData and holds the total surface fluxes (both over ice and open water) and does the following:

  • Use bulk formulas to calculate fluxes from the atmospheric state received on input
  • Sum up the fluxes received as input

In addition, we would have to write different IModelStep implementations that implement the following:

  1. Read in from files:
    • Receive data from XIOS (through inheritance)
    • Loop over a vector of Inputs objects, calling the routine to calculate fluxes via bulk formula
    • Loop over a modified NextsimPhysics with the vector of Inputs objects on input to calculate melt and growth
  2. Couple with CNRM:
    • Receive data from OASIS (through inheritance)
    • Loop over a vector of Inputs objects, calling the routine to sum up fluxes
    • Loop over a modified NextsimPhysics with the vector of Inputs objects on input to calculate melt and growth
  3. Couple with CESM:
    • Receive data from CESM coupler (through inheritance)
    • Loop over a vector of Inputs objects, calling the routine to calculate fluxes via bulk formula
    • Loop over a modified NextsimPhysics with the vector of Inputs objects on input to calculate melt and growth
  4. Winton's approach:
    • We won't do this for now, but the setup is flexible enough so that it could be done if we just split the Winton model in two (as he intended).

On top of all this, we also need to accommodate different bulk formula implementations through the modules system. (but this can come later).

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

Status

In Progress

Relationships

None yet

Development

No branches or pull requests

Issue actions