mom_surface_forcing module reference

Functions that calculate the surface wind stresses and fluxes of buoyancy or temperature/salinity and fresh water, in ocean-only (solo) mode.

More…

Data Types

surface_forcing_cs

Structure containing pointers to the forcing fields that may be used to drive MOM.

Functions/Subroutines

set_forcing()

Calls subroutines in this file to get surface forcing fields.

wind_forcing_const()

Sets the surface wind stresses to constant values.

wind_forcing_2gyre()

Sets the surface wind stresses to set up two idealized gyres.

wind_forcing_1gyre()

Sets the surface wind stresses to set up a single idealized gyre.

wind_forcing_gyres()

Sets the surface wind stresses to set up idealized gyres.

neverworld_wind_forcing()

Sets the surface wind stresses, forcestaux and forcestauy for the Neverworld forcing configuration.

scurve_wind_forcing()

Sets the zonal wind stresses to a piecewise series of s-curves.

scurve()

Returns the value of a cosine-bell function evaluated at x/L.

wind_forcing_from_file()

wind_forcing_by_data_override()

stresses_to_ustar()

Translate the wind stresses into the friction velocity, including effects of background gustiness.

buoyancy_forcing_from_files()

Specifies zero surface buoyancy fluxes from input files.

buoyancy_forcing_from_data_override()

Specifies zero surface buoyancy fluxes from data over-ride.

buoyancy_forcing_zero()

This subroutine specifies zero surface buoyancy fluxes.

buoyancy_forcing_const()

Sets up spatially and temporally constant surface heat fluxes.

buoyancy_forcing_linear()

Sets surface fluxes of heat and salinity by restoring to temperature and salinity profiles that vary linearly with latitude.

get_file_time_level()

Return a time record to read from a file based on the model time, the number of time records in that file and the number of time records per model day.

marbl_forcing_from_data_override()

Sets the necessary MARBL forcings via the data override facility.

forcing_save_restart()

Save a restart file for the forcing fields.

surface_forcing_init()

Initialize the surface forcing module.

surface_forcing_end()

Deallocate memory associated with the surface forcing module.

Detailed Description

These functions are called every time step, even if the wind stresses or buoyancy fluxes are constant in time - in that case these routines return quickly without doing anything. In addition, any I/O of forcing fields is controlled by surface_forcing_init, located in this file.

Type Documentation

type  mom_surface_forcing/surface_forcing_cs

Structure containing pointers to the forcing fields that may be used to drive MOM. All fluxes are positive into the ocean.

Type fields:
  • % urf_cs :: type(user_revise_forcing_cs), pointer Control structures for named forcing packages.

  • % user_forcing_csp :: type(user_surface_forcing_cs), pointer Control structures for named forcing packages.

  • % bfb_forcing_csp :: type(bfb_surface_forcing_cs), pointer Control structures for named forcing packages.

  • % dumbbell_forcing_csp :: type(dumbbell_surface_forcing_cs), pointer Control structures for named forcing packages.

  • % meso_forcing_csp :: type(meso_surface_forcing_cs), pointer Control structures for named forcing packages.

  • % idealized_hurricane_csp :: type(idealized_hurricane_cs), pointer Control structures for named forcing packages.

  • % scm_cvmix_tests_csp :: type(scm_cvmix_tests_cs), pointer Control structures for named forcing packages.

  • % marbl_forcing_csp :: type(marbl_forcing_cs), pointer Control structures for named forcing packages.

  • % use_temperature :: logical if true, temp & salinity used as state variables

  • % restorebuoy :: logical if true, use restoring surface buoyancy forcing

  • % adiabatic :: logical if true, no diapycnal mass fluxes or surface buoyancy forcing

  • % nonbous :: logical If true, this run is fully non-Boussinesq.

  • % variable_winds :: logical if true, wind stresses vary with time

  • % variable_buoyforce :: logical if true, buoyancy forcing varies with time.

  • % south_lat :: real southern latitude of the domain [degrees_N] or [km] or [m]

  • % len_lat :: real domain length in latitude [degrees_N] or [km] or [m]

  • % rho0 :: real Boussinesq reference density [R ~> kg m-3].

  • % g_earth :: real gravitational acceleration [L2 Z-1 T-2 ~> m s-2]

  • % flux_const :: real piston velocity for surface restoring [Z T-1 ~> m s-1]

  • % flux_const_t :: real piston velocity for surface temperature restoring [Z T-1 ~> m s-1]

  • % flux_const_s :: real piston velocity for surface salinity restoring [Z T-1 ~> m s-1]

  • % rho_restore :: real The density that is used to convert piston velocities into salt or heat fluxes with salinity or temperature restoring [R ~> kg m-3].

  • % latent_heat_fusion :: real latent heat of fusion times [Q ~> J kg-1]

  • % latent_heat_vapor :: real latent heat of vaporization [Q ~> J kg-1]

  • % tau_x0 :: real Constant zonal wind stress used in the WIND_CONFIG=”const” forcing [R L Z T-2 ~> Pa].

  • % tau_y0 :: real Constant meridional wind stress used in the WIND_CONFIG=”const” forcing [R L Z T-2 ~> Pa].

  • % taux_mag :: real Peak magnitude of the zonal wind stress for several analytic profiles [R L Z T-2 ~> Pa].

  • % gust_const :: real constant unresolved background gustiness for ustar [R Z2 T-2 ~> Pa]

  • % read_gust_2d :: logical if true, use 2-dimensional gustiness supplied from a file

  • % gust :: real, dimension(:,:), pointer spatially varying unresolved background gustiness [R L Z T-2 ~> Pa] gust is used when read_gust_2d is true.

  • % t_restore :: real, dimension(:,:), pointer temperature to damp (restore) the SST to [C ~> degC]

  • % s_restore :: real, dimension(:,:), pointer salinity to damp (restore) the SSS [S ~> ppt]

  • % dens_restore :: real, dimension(:,:), pointer density to damp (restore) surface density [R ~> kg m-3]

  • % gyres_taux_const :: real A constant wind stress [R L Z T-2 ~> Pa].

  • % gyres_taux_sin_amp :: real The amplitude of cosine wind stress gyres [R L Z T-2 ~> Pa], if WIND_CONFIG==’gyres’.

  • % gyres_taux_cos_amp :: real The amplitude of cosine wind stress gyres [R L Z T-2 ~> Pa], if WIND_CONFIG==’gyres’.

  • % gyres_taux_n_pis :: real The number of sine lobes in the basin if WIND_CONFIG==’gyres’ [nondim].

  • % answer_date :: integer This 8-digit integer gives the approximate date with which the order of arithmetic and expressions were added to the code. Dates before 20190101 use original answers. Dates after 20190101 use a form of the gyre wind stresses that are rotationally invariant and more likely to be the same between compilers.

  • % ustar_gustless_bug :: logical If true, include a bug in the time-averaging of the gustless wind friction velocity.

  • % use_marbl_tracers :: logical If true, allocate memory for forcing needed by MARBL.

  • % scurves_ydata :: real, dimension(20) Latitudes of scurve nodes [degreesN].

  • % scurves_taux :: real, dimension(20) Zonal wind stress values at scurve nodes [R L Z T-2 ~> Pa].

  • % t_north :: real Target temperatures at north used in buoyancy_forcing_linear [C ~> degC].

  • % t_south :: real Target temperatures at south used in buoyancy_forcing_linear [C ~> degC].

  • % s_north :: real Target salinity at north used in buoyancy_forcing_linear [S ~> ppt].

  • % s_south :: real Target salinity at south used in buoyancy_forcing_linear [S ~> ppt].

  • % first_call_set_forcing :: logical True until after the first call to set_forcing.

  • % archaic_omip_file :: logical If true use the variable names and data fields from a very old version of the OMIP forcing.

  • % dataoverrideisinitialized :: logical If true, data override has been initialized.

  • % wind_scale :: real value by which wind-stresses are scaled [nondim]

  • % constantheatforcing :: real value used for sensible heat flux when buoy_config=”const” [Q R Z T-1 ~> W m-2]

  • % wind_stagger :: character(len=8) A character indicating how the wind stress components are staggered in WIND_FILE. Valid values are A or C for now.

  • % tracer_flow_csp :: type(tracer_flow_control_cs), pointer A pointer to the structure that is used to orchestrate the calling of tracer packages.

  • % restart_csp :: type(mom_restart_cs), pointer A pointer to the restart control structure.

  • % diag :: type(diag_ctrl), pointer structure used to regulate timing of diagnostic output

  • % inputdir :: character(len=200) directory where NetCDF input files are.

  • % wind_config :: character(len=200) indicator for wind forcing type (2gyre, USER, FILE..)

  • % wind_file :: character(len=200) if wind_config is “file”, file to use

  • % buoy_config :: character(len=200) indicator for buoyancy forcing type

  • % longwave_file :: character(len=200) The file from which the longwave heat flux is read.

  • % shortwave_file :: character(len=200) The file from which the shortwave heat flux is read.

  • % evaporation_file :: character(len=200) The file from which the evaporation is read.

  • % sensibleheat_file :: character(len=200) The file from which the sensible heat flux is read.

  • % latentheat_file :: character(len=200) The file from which the latent heat flux is read.

  • % rain_file :: character(len=200) The file from which the rainfall is read.

  • % snow_file :: character(len=200) The file from which the snowfall is read.

  • % runoff_file :: character(len=200) The file from which the runoff is read.

  • % longwaveup_file :: character(len=200) The file from which the upward longwave heat flux is read.

  • % shortwaveup_file :: character(len=200) The file from which the upward shortwave heat flux is read.

  • % sstrestore_file :: character(len=200) The file from which to read the sea surface temperature to restore toward.

  • % salinityrestore_file :: character(len=200) The file from which to read the sea surface salinity to restore toward.

  • % stress_x_var :: character(len=80) X-wind stress variable name in the input file.

  • % stress_y_var :: character(len=80) Y-wind stress variable name in the input file.

  • % ustar_var :: character(len=80) ustar variable name in the input file

  • % lw_var :: character(len=80) longwave heat flux variable name in the input file

  • % sw_var :: character(len=80) shortwave heat flux variable name in the input file

  • % latent_var :: character(len=80) latent heat flux variable name in the input file

  • % sens_var :: character(len=80) sensible heat flux variable name in the input file

  • % evap_var :: character(len=80) evaporation variable name in the input file

  • % rain_var :: character(len=80) rainfall variable name in the input file

  • % snow_var :: character(len=80) snowfall variable name in the input file

  • % lrunoff_var :: character(len=80) liquid runoff variable name in the input file

  • % frunoff_var :: character(len=80) frozen runoff variable name in the input file

  • % sst_restore_var :: character(len=80) target sea surface temperature variable name in the input file

  • % sss_restore_var :: character(len=80) target sea surface salinity variable name in the input file

  • % wind_days_per_rec :: integer If positive the number of days of wind stress per forcing file time level, or if negative the number of time levels per day. If 31 change forcing monthly, or if 0 the model will guess the right value based on the file size.

  • % sw_days_per_rec :: integer If positive the number of days shortwave heat flux per forcing file time level, or if negative the number of time levels per day. If 31 change forcing monthly, or if 0 the model will guess the right value based on the file size.

  • % lw_days_per_rec :: integer If positive the number of days longwave heat flux per forcing file time level, or if negative the number of time levels per day. If 31 change forcing monthly, or if 0 the model will guess the right value based on the file size.

  • % latent_days_per_rec :: integer If positive the number of days latent heat flux per forcing file time level, or if negative the number of time levels per day. If 31 change forcing monthly, or if 0 the model will guess the right value based on the file size.

  • % sens_days_per_rec :: integer If positive the number of days sensible heat flux per forcing file time level, or if negative the number of time levels per day. If 31 change forcing monthly, or if 0 the model will guess the right value based on the file size.

  • % evap_days_per_rec :: integer If positive the number of days evaporation per forcing file time level, or if negative the number of time levels per day. If 31 change forcing monthly, or if 0 the model will guess the right value based on the file size.

  • % precip_days_per_rec :: integer If positive the number of days precipitation per forcing file time level, or if negative the number of time levels per day. If 31 change forcing monthly, or if 0 the model will guess the right value based on the file size.

  • % runoff_days_per_rec :: integer If positive the number of days runoff per forcing file time level, or if negative the number of time levels per day. If 31 change forcing monthly, or if 0 the model will guess the right value based on the file size.

  • % sst_days_per_rec :: integer If positive the number of days target SST per forcing file time level, or if negative the number of time levels per day. If 31 change forcing monthly, or if 0 the model will guess the right value based on the file size.

  • % sss_days_per_rec :: integer If positive the number of days target SSS per forcing file time level, or if negative the number of time levels per day. If 31 change forcing monthly, or if 0 the model will guess the right value based on the file size.

  • % wind_nlev :: integer The number of time levels in the file of wind stress.

  • % sw_nlev :: integer The number of time levels in the file of shortwave heat flux.

  • % lw_nlev :: integer The number of time levels in the file of longwave heat flux.

  • % latent_nlev :: integer The number of time levels in the file of latent heat flux.

  • % sens_nlev :: integer The number of time levels in the file of sensible heat flux.

  • % evap_nlev :: integer The number of time levels in the file of evaporation.

  • % precip_nlev :: integer The number of time levels in the file of precipitation.

  • % runoff_nlev :: integer The number of time levels in the file of runoff.

  • % sst_nlev :: integer The number of time levels in the file of target SST.

  • % sss_nlev :: integer The number of time levels in the file of target SSS.

  • % wind_last_lev :: integer The last time level read of wind stress.

  • % sw_last_lev :: integer The last time level read of shortwave heat flux.

  • % lw_last_lev :: integer The last time level read of longwave heat flux.

  • % latent_last_lev :: integer The last time level read of latent heat flux.

  • % sens_last_lev :: integer The last time level read of sensible heat flux.

  • % evap_last_lev :: integer The last time level read of evaporation.

  • % precip_last_lev :: integer The last time level read of precipitation.

  • % runoff_last_lev :: integer The last time level read of runoff.

  • % sst_last_lev :: integer The last time level read of target SST.

  • % sss_last_lev :: integer The last time level read of target SSS.

  • % handles :: type(forcing_diags), public A structure with diagnostics handles.

[source]

Function/Subroutine Documentation

subroutine mom_surface_forcing/set_forcing(sfc_state, forces, fluxes, day_start, day_interval, G, US, CS)

Calls subroutines in this file to get surface forcing fields.

It also allocates and initializes the fields in the forcing and mech_forcing types the first time it is called.

Parameters:
  • sfc_state :: sfc_state [inout] A structure containing fields that describe the surface state of the ocean.

  • forces :: forces [inout] A structure with the driving mechanical forces

  • fluxes :: fluxes [inout] A structure containing thermodynamic forcing fields

  • day_start :: day_start [in] The start time of the fluxes

  • day_interval :: day_interval [in] Length of time over which these fluxes applied

  • g :: [inout] The ocean’s grid structure

  • us :: [in] A dimensional unit scaling type

  • cs :: pointer to control structure returned by a previous surface_forcing_init call

Call to:

buoyancy_forcing_const buoyancy_forcing_from_data_override buoyancy_forcing_from_files buoyancy_forcing_linear buoyancy_forcing_zero mom_tracer_flow_control::call_tracer_set_forcing mom_error_handler::calltree_enter mom_error_handler::calltree_leave dumbbell_surface_forcing::dumbbell_buoyancy_forcing id_clock_forcing marbl_forcing_from_data_override neverworld_wind_forcing scurve_wind_forcing wind_forcing_1gyre wind_forcing_2gyre wind_forcing_by_data_override wind_forcing_const wind_forcing_from_file wind_forcing_gyres

Called from:

mom6

[source]

subroutine mom_surface_forcing/wind_forcing_const(sfc_state, forces, tau_x0, tau_y0, day, G, US, CS)

Sets the surface wind stresses to constant values.

Parameters:
  • sfc_state :: sfc_state [inout] A structure containing fields that describe the surface state of the ocean.

  • forces :: forces [inout] A structure with the driving mechanical forces

  • tau_x0 :: tau_x0 [in] The zonal wind stress [R Z L T-2 ~> Pa]

  • tau_y0 :: tau_y0 [in] The meridional wind stress [R Z L T-2 ~> Pa]

  • day :: day [in] The time of the fluxes

  • g :: [in] The ocean’s grid structure

  • us :: [in] A dimensional unit scaling type

  • cs :: pointer to control structure returned by a previous surface_forcing_init call

Call to:

mom_error_handler::calltree_enter mom_error_handler::calltree_leave

Called from:

set_forcing

[source]

subroutine mom_surface_forcing/wind_forcing_2gyre(sfc_state, forces, day, G, US, CS)

Sets the surface wind stresses to set up two idealized gyres.

Parameters:
  • sfc_state :: sfc_state [inout] A structure containing fields that describe the surface state of the ocean.

  • forces :: forces [inout] A structure with the driving mechanical forces

  • day :: day [in] The time of the fluxes

  • g :: [in] The ocean’s grid structure

  • us :: [in] A dimensional unit scaling type

  • cs :: pointer to control structure returned by a previous surface_forcing_init call

Call to:

mom_error_handler::calltree_enter mom_error_handler::calltree_leave stresses_to_ustar

Called from:

set_forcing

[source]

subroutine mom_surface_forcing/wind_forcing_1gyre(sfc_state, forces, day, G, US, CS)

Sets the surface wind stresses to set up a single idealized gyre.

Parameters:
  • sfc_state :: sfc_state [inout] A structure containing fields that describe the surface state of the ocean.

  • forces :: forces [inout] A structure with the driving mechanical forces

  • day :: day [in] The time of the fluxes

  • g :: [in] The ocean’s grid structure

  • us :: [in] A dimensional unit scaling type

  • cs :: pointer to control structure returned by a previous surface_forcing_init call

Call to:

mom_error_handler::calltree_enter mom_error_handler::calltree_leave stresses_to_ustar

Called from:

set_forcing

[source]

subroutine mom_surface_forcing/wind_forcing_gyres(sfc_state, forces, day, G, US, CS)

Sets the surface wind stresses to set up idealized gyres.

Parameters:
  • sfc_state :: sfc_state [inout] A structure containing fields that describe the surface state of the ocean.

  • forces :: forces [inout] A structure with the driving mechanical forces

  • day :: day [in] The time of the fluxes

  • g :: [in] The ocean’s grid structure

  • us :: [in] A dimensional unit scaling type

  • cs :: pointer to control structure returned by a previous surface_forcing_init call

Call to:

mom_error_handler::calltree_enter mom_error_handler::calltree_leave stresses_to_ustar

Called from:

set_forcing

[source]

subroutine mom_surface_forcing/neverworld_wind_forcing(sfc_state, forces, day, G, US, CS)

Sets the surface wind stresses, forcestaux and forcestauy for the Neverworld forcing configuration.

Parameters:
  • sfc_state :: sfc_state [inout] A structure containing fields that describe the surface state of the ocean.

  • forces :: forces [inout] A structure with the driving mechanical forces

  • day :: day [in] Time used for determining the fluxes.

  • g :: [inout] Grid structure.

  • us :: [in] A dimensional unit scaling type

  • cs :: pointer to control structure returned by a previous surface_forcing_init call

Call to:

stresses_to_ustar

Called from:

set_forcing

[source]

subroutine mom_surface_forcing/scurve_wind_forcing(sfc_state, forces, day, G, US, CS)

Sets the zonal wind stresses to a piecewise series of s-curves.

Parameters:
  • sfc_state :: sfc_state [inout] A structure containing fields that describe the surface state of the ocean.

  • forces :: forces [inout] A structure with the driving mechanical forces

  • day :: day [in] Time used for determining the fluxes.

  • g :: [inout] Grid structure.

  • us :: [in] A dimensional unit scaling type

  • cs :: pointer to control structure returned by a previous surface_forcing_init call

Call to:

scurve stresses_to_ustar

Called from:

set_forcing

[source]

function  mom_surface_forcing/scurve(x, L)

Returns the value of a cosine-bell function evaluated at x/L.

Parameters:
  • x :: x [in] non-dimensional position [nondim]

  • l :: [in] non-dimensional width [nondim]

Called from:

scurve_wind_forcing

[source]

subroutine mom_surface_forcing/wind_forcing_from_file(sfc_state, forces, day, G, US, CS)
Parameters:
  • sfc_state :: sfc_state [inout] A structure containing fields that describe the surface state of the ocean.

  • forces :: forces [inout] A structure with the driving mechanical forces

  • day :: day [in] The time of the fluxes

  • g :: [inout] The ocean’s grid structure

  • us :: [in] A dimensional unit scaling type

  • cs :: pointer to control structure returned by a previous surface_forcing_init call

Call to:

mom_error_handler::calltree_enter mom_error_handler::calltree_leave get_file_time_level mom_string_functions::uppercase

Called from:

set_forcing

[source]

subroutine mom_surface_forcing/wind_forcing_by_data_override(sfc_state, forces, day, G, US, CS)
Parameters:
  • sfc_state :: sfc_state [inout] A structure containing fields that describe the surface state of the ocean.

  • forces :: forces [inout] A structure with the driving mechanical forces

  • day :: day [in] The time of the fluxes

  • g :: [inout] The ocean’s grid structure

  • us :: [in] A dimensional unit scaling type

  • cs :: pointer to control structure returned by a previous surface_forcing_init call

Call to:

mom_error_handler::calltree_enter mom_error_handler::calltree_leave

Called from:

set_forcing

[source]

subroutine mom_surface_forcing/stresses_to_ustar(forces, G, US, CS)

Translate the wind stresses into the friction velocity, including effects of background gustiness.

Parameters:
  • forces :: forces [inout] A structure with the driving mechanical forces

  • g :: [in] Grid structure.

  • us :: [in] A dimensional unit scaling type

  • cs :: pointer to control structure returned by a previous surface_forcing_init call

Called from:

neverworld_wind_forcing scurve_wind_forcing wind_forcing_1gyre wind_forcing_2gyre wind_forcing_gyres

[source]

subroutine mom_surface_forcing/buoyancy_forcing_from_files(sfc_state, fluxes, day, dt, G, US, CS)

Specifies zero surface buoyancy fluxes from input files.

Parameters:
  • sfc_state :: sfc_state [inout] A structure containing fields that describe the surface state of the ocean.

  • fluxes :: fluxes [inout] A structure containing thermodynamic forcing fields

  • day :: day [in] The time of the fluxes

  • dt :: dt [in] The amount of time over which the fluxes apply [T ~> s]

  • g :: [inout] The ocean’s grid structure

  • us :: [in] A dimensional unit scaling type

  • cs :: pointer to control structure returned by a previous surface_forcing_init call

Call to:

mom_error_handler::calltree_enter mom_error_handler::calltree_leave get_file_time_level

Called from:

set_forcing

[source]

subroutine mom_surface_forcing/buoyancy_forcing_from_data_override(sfc_state, fluxes, day, dt, G, US, CS)

Specifies zero surface buoyancy fluxes from data over-ride.

Parameters:
  • sfc_state :: sfc_state [inout] A structure containing fields that describe the surface state of the ocean.

  • fluxes :: fluxes [inout] A structure containing thermodynamic forcing fields

  • day :: day [in] The time of the fluxes

  • dt :: dt [in] The amount of time over which the fluxes apply [T ~> s]

  • g :: [inout] The ocean’s grid structure

  • us :: [in] A dimensional unit scaling type

  • cs :: pointer to control structure returned by a previous surface_forcing_init call

Call to:

mom_error_handler::calltree_enter mom_error_handler::calltree_leave

Called from:

set_forcing

[source]

subroutine mom_surface_forcing/buoyancy_forcing_zero(sfc_state, fluxes, day, dt, G, CS)

This subroutine specifies zero surface buoyancy fluxes.

Parameters:
  • sfc_state :: sfc_state [inout] A structure containing fields that describe the surface state of the ocean.

  • fluxes :: fluxes [inout] A structure containing thermodynamic forcing fields

  • day :: day [in] The time of the fluxes

  • dt :: dt [in] The amount of time over which the fluxes apply [T ~> s]

  • g :: [in] The ocean’s grid structure

  • cs :: pointer to control structure returned by a previous surface_forcing_init call

Call to:

mom_error_handler::calltree_enter mom_error_handler::calltree_leave

Called from:

set_forcing

[source]

subroutine mom_surface_forcing/buoyancy_forcing_const(sfc_state, fluxes, day, dt, G, US, CS)

Sets up spatially and temporally constant surface heat fluxes.

Parameters:
  • sfc_state :: sfc_state [inout] A structure containing fields that describe the surface state of the ocean.

  • fluxes :: fluxes [inout] A structure containing thermodynamic forcing fields

  • day :: day [in] The time of the fluxes

  • dt :: dt [in] The amount of time over which the fluxes apply [T ~> s]

  • g :: [in] The ocean’s grid structure

  • us :: [in] A dimensional unit scaling type

  • cs :: pointer to control structure returned by a previous surface_forcing_init call

Call to:

mom_error_handler::calltree_enter mom_error_handler::calltree_leave

Called from:

set_forcing

[source]

subroutine mom_surface_forcing/buoyancy_forcing_linear(sfc_state, fluxes, day, dt, G, US, CS)

Sets surface fluxes of heat and salinity by restoring to temperature and salinity profiles that vary linearly with latitude.

Parameters:
  • sfc_state :: sfc_state [inout] A structure containing fields that describe the surface state of the ocean.

  • fluxes :: fluxes [inout] A structure containing thermodynamic forcing fields

  • day :: day [in] The time of the fluxes

  • dt :: dt [in] The amount of time over which the fluxes apply [T ~> s]

  • g :: [in] The ocean’s grid structure

  • us :: [in] A dimensional unit scaling type

  • cs :: pointer to control structure returned by a previous surface_forcing_init call

Call to:

mom_error_handler::calltree_enter mom_error_handler::calltree_leave

Called from:

set_forcing

[source]

function  mom_surface_forcing/get_file_time_level(Time, nlev_file, days_per_rec)

Return a time record to read from a file based on the model time, the number of time records in that file and the number of time records per model day.

Parameters:
  • time :: [in] The time of the fluxes

  • nlev_file :: nlev_file [in] The number of time records in a forcing file

  • days_per_rec :: days_per_rec [in] If positive, the number of days spanned by each time record in a file, if negative the number time records per day, or if 0 determine this by guessing based on the number of records in the file. If this is 31, the time levels will be based on the months of the calendar. Setting this larger than 1000000 will always cause the time level to be set to 1.

Return:

undefined :: The time level in a file that will be read.

Called from:

buoyancy_forcing_from_files wind_forcing_from_file

[source]

subroutine mom_surface_forcing/marbl_forcing_from_data_override(fluxes, day, G, US, CS)

Sets the necessary MARBL forcings via the data override facility.

Parameters:
  • fluxes :: fluxes [inout] A structure containing thermodynamic forcing fields

  • day :: day [in] The time of the fluxes

  • g :: [inout] The ocean’s grid structure

  • us :: [in] A dimensional unit scaling type

  • cs :: pointer to control structure returned by a previous surface_forcing_init call

Call to:

mom_error_handler::calltree_enter mom_error_handler::calltree_leave marbl_forcing_mod::convert_driver_fields_to_forcings

Called from:

set_forcing

[source]

subroutine mom_surface_forcing/forcing_save_restart(CS, G, Time, directory, time_stamped, filename_suffix)

Save a restart file for the forcing fields.

Parameters:
  • cs :: pointer to control structure returned by a previous surface_forcing_init call

  • g :: [inout] The ocean’s grid structure

  • time :: [in] model time at this call; needed for mpp_write calls

  • directory :: directory [in] directory into which to write these restart files

  • time_stamped :: time_stamped [in] If true, the restart file names include a unique time stamp; the default is false.

  • filename_suffix :: filename_suffix [in] optional suffix (e.g., a time-stamp) to append to the restart file name

Call to:

mom_restart::save_restart

Called from:

mom6

[source]

subroutine mom_surface_forcing/surface_forcing_init(Time, G, US, param_file, diag, CS, tracer_flow_CSp)

Initialize the surface forcing module.

Parameters:
  • time :: [in] The current model time

  • g :: [in] The ocean’s grid structure

  • us :: [in] A dimensional unit scaling type

  • param_file :: param_file [in] A structure to parse for run-time parameters

  • diag :: diag [inout] structure used to regulate diagnostic output

  • cs :: pointer to control structure returned by a previous surface_forcing_init call

  • tracer_flow_csp :: Forcing for tracers?

Call to:

bfb_surface_forcing::bfb_surface_forcing_init mom_get_input::get_mom_input id_clock_forcing idealized_hurricane::idealized_hurricane_wind_init meso_surface_forcing::meso_surface_forcing_init mom_io::num_timelevels mom_restart::restart_init_end mom_restart::restore_state user_surface_forcing::user_surface_forcing_init

Called from:

mom6

[source]

subroutine mom_surface_forcing/surface_forcing_end(CS, fluxes)

Deallocate memory associated with the surface forcing module.

Parameters:
  • cs :: pointer to control structure returned by a previous surface_forcing_init call

  • fluxes :: fluxes [inout] A structure containing thermodynamic forcing fields

Call to:

mom_error_handler::calltree_leave

[source]

[source]