Skip to content

Forcing

Forcing is provided via CDEPS data models documented here, in particular

  • DATM for the atmosphere
  • DROF for runoff

Coupling

  • DATM and DROF are coupled to the other components via the mediator - see the coupling architecture here.
  • The coupled fields and remapping methods used are recorded in the mediator log output file and can be found with grep '^ mapping' archive/output000/log/med.log; see here for how to decode this.
  • See the Configurations Overview page for details on how the coupling is determined.

Input data

JRA55do v1.6, replicated by NCI, is used as input data for DATM and DROF, following convention used in OMIP2 and drafted for OMIP3. For interannual-forcing (IAF) experiments, this data is available from 1958 until January 2024. For repeat-year-forcing (RYF) experiments, a single year of atmosphere and runoff data is selected (Jan-Apr 1991 and May-Dec 1990) using the make_ryf.py script in om3-scripts to generate the input files. This input data is repeated to produce the same input forcing in every model year. Stewart et al. (2020) describe the selected 12-month period to be one of the most neutral across the major climate modes of variability and less affected by the anthropogenic warming found in later years of the dataset. The paper does however remind us that the resulting model is an idealised numerical experiments and not a representation of long-term climatology.

datm.streams.xml and drof.streams.xml set individual input file paths for DATM and DROF respectively, relative to this entry in the input section of config.yaml (see the Configurations Overview page). These stream files also set time and spatial interpolation, time axes and ranges

Atmosphere

JRA55-do atmosphere provides 3-hourly instantenous:

  • sea level pressure;
  • 10m wind velocity components;
  • 10m specific humidity;
  • 10m air temperature.

and 3-hourly averaged:

  • liquid and solid precipitation;
  • downwelling surface long-wave and shortwave radiation.

Input data is first remapped from DATM to the mediator, and second from the mediator to the ocean (MOM6). The first step remaps from the source grid (~55km resolution) to the access-om3 grid using bilinear interpolation spatially, and linear interpolation in time (except for downwelling shortwave, which uses "coszen" interpolation in time - cosine of the solar zenith angle). Weights for this first remapping are calculated automatically during model initialisation. The second stage remapping moves from the om3 grid without a landmask to the same grid with a landmask. For atmosphere forcing, the landmask is applied simply as a true/false mask, as access-om3 does not have partial ocean cells. This results in only the states and fluxes over the ocean being input as forcings.

Runoff

JRA55-do runoff provides 12-hourly averaged liquid and frozen runoff fields, although the runoff at many locations in the dataset is updated less frequently than 12-hourly. In the source data, all frozen run-off is distributed at the ocean surface of the Antarctic/Greenland coastlines without spreading (see 404).

Similar to atmsophere forcing, runoff data is first remapped from DROF to the mediator, and second from the mediator the the ocean (MOM6). The first mapping step is similar to the atmospheric forcing, namely using bilinear interpolation spatially and linear interpolation in time. The second stage remapping moves from the om3 grid without a landmask to the same grid with a landmask. For runoff, the differences in landmask between the incoming data on the JRA grid and the om3-grids can cause runoff to be remapped to land cells. When runoff would be placed on land cells, the volume of runoff is crudely moved to the nearest ocean cell using pre-generated weights from the generate_rof_weights.py script. generate_rof_weights.py selects the nearest ocean cell by a BallTree algorithm using Haversine distances (i.e. the shortest disance on a sphere). The combined effect of the two remapping steps is that the full global volume of runoff enters the ocean.

Ice surface wind stress

This is calculated in CICE6 (IcePack). The wind velocity, specific humidity, air density and potential temperature at the level height zlvl (with optionally a different height zlvs for scalars) are used to compute transfer coefficients used in formulas for the surface wind stress and turbulent heat fluxes.

The CICE6 forcing settings are in namelist group forcing_nml in cice_in. Many are unspecified and therefore take the default values. We use the default atmbndy = 'similarity', which uses a stability-based boundary layer parameterisation based on Monin-Obukhov theory following Kauffman and Large (2002). Because our ice-ocean coupling frequency resolves inertial oscillations we use the non-default option highfreq = .true. (Roberts et al., 2015), which uses the relative ice-atmosphere velocity to calculate the wind stress on the ice. The exchange coefficients for momentum and scalars are determined iteratively, with a convergence tolerance atmiter_conv on ustar and maximum natmiter iterations. These take default values atmiter_conv = 0.0 and natmiter = 5. We don't use spatiotemporally variable form drag (formdrag = .false, the default).

Ocean surface stress

Ocean surface stress is a combination of wind stress and ice-ocean stress. Foxx_taux and Foxx_tauy are the components of this combined surface stress received by the MOM6 cap, and are calculated in the mediator. Foxx_taux is a weighted sum of Fioi_taux (the ice-ocean stress) and Faox_taux (the atmosphere-ocean stress), weighted by the fraction of ice and open ocean in each cell. Similarly, Foxx_tauy is a weighted sum of Fioi_tauy and Faox_tauy. The prefix Foxx denotes an ocean (o) - mediator (x) flux (F) calculated by the mediator (x). Similarly Fioi denotes an ice (i) - ocean flux calculated by the ice component, and Faox indicates an atmosphere (a) - ocean flux calculated by the mediator (see here for details on this notation). Thus Fioi_taux is calculated in CICE6, whereas Faox_taux is calculated in the mediator (similarly for the y components).

Ice-ocean stress

The ice-ocean stress components Fioi_taux and Fioi_tauy are calculated in CICE6. Fioi_taux and Fioi_tauy are mapped from tauxo and tauyo in the CICE6 cap, which are in turn calculated in the CICE6 cap from strocnxT_iavg and strocnyT_iavg, which are per-ice-area quantities at T points calculated from per-cell-area stresses at U points strocnxU and strocnyU. strocnxU and strocnyU are calculated by subtroutine dyn_finish using this code; see equation (4) here and equation (2) here for an explanation. We use a turning angle $\theta=0$ (cosw = 1.0, sinw = 0.0, the defaults), which is appropriate for an ocean component with vertical resolution sufficient to resolve the surface Ekman layer. We don't use spatiotemporally variable form drag (formdrag = .false, the default).

TODO: what namelist controls the ice-ocean stress calculation?

Atmosphere-ocean stress

The atmosphere-ocean stress components Faox_taux and Faox_tauy are calculated in the mediator. We calculate Faox_taux and Faox_tauy using ocn_surface_flux_scheme = 0 in nuopc.runconfig, which is the default CESM1.2 scheme. This iterates towards convergence of ustar to a relative error of less than flux_convergence = 0.01, if this can be achieved in flux_max_iteration = 5 iterations or fewer. The atmosphere-ocean stress is calculated using the relative wind, i.e. the difference between the surface wind and surface current velocity.

References

K.D. Stewart, W.M. Kim, S. Urakawa, A.McC. Hogg, S. Yeager, H. Tsujino, H. Nakano, A.E. Kiss, G. Danabasoglu, JRA55-do-based repeat year forcing datasets for driving ocean–sea-ice models, Ocean Modelling, Volume 147, 2020, https://doi.org/10.1016/j.ocemod.2019.101557.