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(:,:),pointer] :: spatially varying unresolved background gustiness [R L Z T-2 ~> Pa] gust is used when read_gust_2d is true.

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

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

  • % dens_restore [real(:,:),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(20)] :: Latitudes of scurve nodes [degreesN].

  • % scurves_taux [real(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.

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 :: [inout] A structure containing fields that describe the surface state of the ocean.

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

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

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

  • 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

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 :: [inout] A structure containing fields that describe the surface state of the ocean.

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

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

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

  • 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

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 :: [inout] A structure containing fields that describe the surface state of the ocean.

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

  • 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

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 :: [inout] A structure containing fields that describe the surface state of the ocean.

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

  • 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

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 :: [inout] A structure containing fields that describe the surface state of the ocean.

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

  • 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

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 :: [inout] A structure containing fields that describe the surface state of the ocean.

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

  • 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

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 :: [inout] A structure containing fields that describe the surface state of the ocean.

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

  • 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

function mom_surface_forcing/scurve(x, L) [real]

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

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

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

Called from:

scurve_wind_forcing

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

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

  • 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

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

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

  • 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

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 :: [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

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 :: [inout] A structure containing fields that describe the surface state of the ocean.

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

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

  • 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

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 :: [inout] A structure containing fields that describe the surface state of the ocean.

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

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

  • 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

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

This subroutine specifies zero surface buoyancy fluxes.

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

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

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

  • 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

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 :: [inout] A structure containing fields that describe the surface state of the ocean.

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

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

  • 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

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 :: [inout] A structure containing fields that describe the surface state of the ocean.

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

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

  • 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

function mom_surface_forcing/get_file_time_level(Time, nlev_file, days_per_rec) [integer]

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 :: [in] The number of time records in a forcing file

  • 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

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 :: [inout] A structure containing thermodynamic forcing fields

  • 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

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 :: [in] directory into which to write these restart files

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

  • 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

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 :: [in] A structure to parse for run-time parameters

  • 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

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 :: [inout] A structure containing thermodynamic forcing fields

Call to:

mom_error_handler::calltree_leave