namespace mom_controlled_forcing

Overview

Use control-theory to adjust the surface heat flux and precipitation. More…

namespace mom_controlled_forcing {

// global functions

subroutine, public apply_ctrl_forcing(
    SST_anom SST_anom,
    SSS_anom SSS_anom,
    SSS_mean SSS_mean,
    virt_heat virt_heat,
    virt_precip virt_precip,
    day_start day_start,
    dt dt,
    G G,
    US US,
    CS CS
    );

subroutine, public register_ctrl_forcing_restarts(G G, param_file param_file, CS CS, restart_CS restart_CS);
subroutine, public controlled_forcing_init(Time Time, G G, param_file param_file, diag diag, CS CS);
subroutine, public controlled_forcing_end(CS CS);

} // namespace mom_controlled_forcing

Detailed Documentation

Use control-theory to adjust the surface heat flux and precipitation.

Adjustments are based on the time-mean or periodically (seasonally) varying anomalies from the observed state.

The techniques behind this are described in Hallberg and Adcroft (2018, in prep.).

  • By Robert Hallberg, July 2011 *

  • This program contains the subroutines that use control-theory * to adjust the surface heat flux and precipitation, based on the * time-mean or periodically (seasonally) varying anomalies from the * observed state. The techniques behind this are described in * Hallberg and Adcroft (2011, in prep.). *

  • Macros written all in capital letters are defined in MOM_memory.h. *

  • A small fragment of the grid is shown below: *

  • j+1 x ^ x ^ x At x: q * j+1 > o > o > At ^: v, tauy * j x ^ x ^ x At >: u, taux * j > o > o > At o: h, fluxes. * j-1 x ^ x ^ x * i-1 i i+1 At x & ^: * i i+1 At > & o: *

  • The boundaries always run through q grid points (x). *

Global Functions

subroutine, public apply_ctrl_forcing(
    SST_anom SST_anom,
    SSS_anom SSS_anom,
    SSS_mean SSS_mean,
    virt_heat virt_heat,
    virt_precip virt_precip,
    day_start day_start,
    dt dt,
    G G,
    US US,
    CS CS
    )

This subroutine calls any of the other subroutines in this file that are needed to specify the current surface forcing fields.

Parameters:

g

The ocean’s grid structure.

sst_anom

The sea surface temperature anomalies [degC].

sss_anom

The sea surface salinity anomlies [ppt].

sss_mean

The mean sea surface salinity [ppt].

virt_heat

Virtual (corrective) heat fluxes that are augmented in this subroutine [W m-2].

virt_precip

Virtual (corrective) precipitation fluxes that are augmented in this subroutine [kg m-2 s-1].

day_start

Start time of the fluxes.

dt

Length of time over which these fluxes will be applied [s].

us

A dimensional unit scaling type

cs

A pointer to the control structure returned by a previous call to ctrl_forcing_init.

subroutine, public register_ctrl_forcing_restarts(
    G G,
    param_file param_file,
    CS CS,
    restart_CS restart_CS
    )

This subroutine is used to allocate and register any fields in this module that should be written to or read from the restart file.

Parameters:

g

The ocean’s grid structure.

param_file

A structure indicating the open file to parse for model parameter values.

cs

A pointer that is set to point to the control structure for this module.

restart_cs

A pointer to the restart control structure.

subroutine, public controlled_forcing_init(
    Time Time,
    G G,
    param_file param_file,
    diag diag,
    CS CS
    )

Set up this modules control structure.

Parameters:

time

The current model time.

g

The ocean’s grid structure.

param_file

A structure indicating the open file to parse for model parameter values.

diag

A structure that is used to regulate diagnostic output.

cs

A pointer that is set to point to the control structure for this module.

subroutine, public controlled_forcing_end(CS CS)

Clean up this modules control structure.

Parameters:

cs

A pointer to the control structure returned by a previous call to controlled_forcing_init, it will be deallocated here.