MOM6
|
Functions that calculate the surface wind stresses and fluxes of buoyancy or temperature/salinity andfresh water, in ocean-only (solo) mode.
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.
Data Types | |
type | surface_forcing_cs |
Structure containing pointers to the forcing fields that may be used to drive MOM. All fluxes are positive into the ocean. More... | |
integer | id_clock_forcing |
A CPU time clock. More... | |
subroutine, public | set_forcing (sfc_state, forces, fluxes, day_start, day_interval, G, US, CS) |
Calls subroutines in this file to get surface forcing fields. More... | |
subroutine | wind_forcing_const (sfc_state, forces, tau_x0, tau_y0, day, G, US, CS) |
Sets the surface wind stresses to constant values. More... | |
subroutine | wind_forcing_2gyre (sfc_state, forces, day, G, US, CS) |
Sets the surface wind stresses to set up two idealized gyres. More... | |
subroutine | wind_forcing_1gyre (sfc_state, forces, day, G, US, CS) |
Sets the surface wind stresses to set up a single idealized gyre. More... | |
subroutine | wind_forcing_gyres (sfc_state, forces, day, G, US, CS) |
Sets the surface wind stresses to set up idealized gyres. More... | |
subroutine | wind_forcing_from_file (sfc_state, forces, day, G, US, CS) |
subroutine | wind_forcing_by_data_override (sfc_state, forces, day, G, US, CS) |
subroutine | buoyancy_forcing_from_files (sfc_state, fluxes, day, dt, G, US, CS) |
Specifies zero surface bouyancy fluxes from input files. More... | |
subroutine | buoyancy_forcing_from_data_override (sfc_state, fluxes, day, dt, G, US, CS) |
Specifies zero surface bouyancy fluxes from data over-ride. More... | |
subroutine | buoyancy_forcing_zero (sfc_state, fluxes, day, dt, G, CS) |
This subroutine specifies zero surface bouyancy fluxes. More... | |
subroutine | buoyancy_forcing_const (sfc_state, fluxes, day, dt, G, CS) |
Sets up spatially and temporally constant surface heat fluxes. More... | |
subroutine | 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. More... | |
subroutine, public | forcing_save_restart (CS, G, Time, directory, time_stamped, filename_suffix) |
Save a restart file for the forcing fields. More... | |
subroutine, public | surface_forcing_init (Time, G, US, param_file, diag, CS, tracer_flow_CSp) |
Initialize the surface forcing module. More... | |
subroutine | surface_forcing_end (CS, fluxes) |
Deallocate memory associated with the surface forcing module. More... | |
|
private |
Sets up spatially and temporally constant surface heat fluxes.
[in,out] | sfc_state | A structure containing fields that describe the surface state of the ocean. |
[in,out] | fluxes | A structure containing thermodynamic forcing fields |
[in] | day | The time of the fluxes |
[in] | dt | The amount of time over which the fluxes apply [s] |
[in] | g | The ocean's grid structure |
cs | pointer to control struct returned by a previous surface_forcing_init call |
Definition at line 1255 of file MOM_surface_forcing.F90.
References mom_error_handler::calltree_enter(), and mom_error_handler::calltree_leave().
Referenced by set_forcing().
|
private |
Specifies zero surface bouyancy fluxes from data over-ride.
[in,out] | sfc_state | A structure containing fields that describe the surface state of the ocean. |
[in,out] | fluxes | A structure containing thermodynamic forcing fields |
[in] | day | The time of the fluxes |
[in] | dt | The amount of time over which the fluxes apply [s] |
[in,out] | g | The ocean's grid structure |
[in] | us | A dimensional unit scaling type |
cs | pointer to control struct returned by a previous surface_forcing_init call |
Definition at line 1035 of file MOM_surface_forcing.F90.
References mom_error_handler::calltree_enter(), and mom_error_handler::calltree_leave().
Referenced by set_forcing().
|
private |
Specifies zero surface bouyancy fluxes from input files.
[in,out] | sfc_state | A structure containing fields that describe the surface state of the ocean. |
[in,out] | fluxes | A structure containing thermodynamic forcing fields |
[in] | day | The time of the fluxes |
[in] | dt | The amount of time over which the fluxes apply [s] |
[in,out] | g | The ocean's grid structure |
[in] | us | A dimensional unit scaling type |
cs | pointer to control struct returned by a previous surface_forcing_init call |
Definition at line 755 of file MOM_surface_forcing.F90.
References mom_error_handler::calltree_enter(), and mom_error_handler::calltree_leave().
Referenced by set_forcing().
|
private |
Sets surface fluxes of heat and salinity by restoring to temperature and salinity profiles that vary linearly with latitude.
[in,out] | sfc_state | A structure containing fields that describe the surface state of the ocean. |
[in,out] | fluxes | A structure containing thermodynamic forcing fields |
[in] | day | The time of the fluxes |
[in] | dt | The amount of time over which the fluxes apply [s] |
[in] | g | The ocean's grid structure |
[in] | us | A dimensional unit scaling type |
cs | pointer to control struct returned by a previous surface_forcing_init call |
Definition at line 1297 of file MOM_surface_forcing.F90.
References mom_error_handler::calltree_enter(), and mom_error_handler::calltree_leave().
Referenced by set_forcing().
|
private |
This subroutine specifies zero surface bouyancy fluxes.
[in,out] | sfc_state | A structure containing fields that describe the surface state of the ocean. |
[in,out] | fluxes | A structure containing thermodynamic forcing fields |
[in] | day | The time of the fluxes |
[in] | dt | The amount of time over which the fluxes apply [s] |
[in] | g | The ocean's grid structure |
cs | pointer to control struct returned by a previous surface_forcing_init call |
Definition at line 1212 of file MOM_surface_forcing.F90.
References mom_error_handler::calltree_enter(), and mom_error_handler::calltree_leave().
Referenced by set_forcing().
subroutine, public mom_surface_forcing::forcing_save_restart | ( | type(surface_forcing_cs), pointer | CS, |
type(ocean_grid_type), intent(inout) | G, | ||
type(time_type), intent(in) | Time, | ||
character(len=*), intent(in) | directory, | ||
logical, intent(in), optional | time_stamped, | ||
character(len=*), intent(in), optional | filename_suffix | ||
) |
Save a restart file for the forcing fields.
cs | pointer to control struct returned by a previous surface_forcing_init call | |
[in,out] | g | The ocean's grid structure |
[in] | time | model time at this call; needed for mpp_write calls |
[in] | directory | directory into which to write these restart files |
[in] | time_stamped | If true, the restart file names include a unique time stamp; the default is false. |
[in] | filename_suffix | optional suffix (e.g., a time-stamp) to append to the restart fname |
Definition at line 1379 of file MOM_surface_forcing.F90.
References mom_restart::save_restart().
Referenced by mom_main().
subroutine, public mom_surface_forcing::set_forcing | ( | type(surface), intent(inout) | sfc_state, |
type(mech_forcing), intent(inout) | forces, | ||
type(forcing), intent(inout) | fluxes, | ||
type(time_type), intent(in) | day_start, | ||
type(time_type), intent(in) | day_interval, | ||
type(ocean_grid_type), intent(inout) | G, | ||
type(unit_scale_type), intent(in) | US, | ||
type(surface_forcing_cs), pointer | 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.
[in,out] | sfc_state | A structure containing fields that describe the surface state of the ocean. |
[in,out] | forces | A structure with the driving mechanical forces |
[in,out] | fluxes | A structure containing thermodynamic forcing fields |
[in] | day_start | The start time of the fluxes |
[in] | day_interval | Length of time over which these fluxes applied |
[in,out] | g | The ocean's grid structure |
[in] | us | A dimensional unit scaling type |
cs | pointer to control struct returned by a previous surface_forcing_init call |
Definition at line 221 of file MOM_surface_forcing.F90.
References mom_forcing_type::allocate_mech_forcing(), buoyancy_forcing_const(), buoyancy_forcing_from_data_override(), buoyancy_forcing_from_files(), buoyancy_forcing_linear(), buoyancy_forcing_zero(), mom_error_handler::calltree_enter(), mom_error_handler::calltree_leave(), dumbbell_surface_forcing::dumbbell_buoyancy_forcing(), id_clock_forcing, wind_forcing_1gyre(), wind_forcing_2gyre(), wind_forcing_by_data_override(), wind_forcing_const(), wind_forcing_from_file(), and wind_forcing_gyres().
Referenced by mom_main().
|
private |
Deallocate memory associated with the surface forcing module.
cs | pointer to control struct returned by a previous surface_forcing_init call | |
[in,out] | fluxes | A structure containing thermodynamic forcing fields |
Definition at line 1821 of file MOM_surface_forcing.F90.
subroutine, public mom_surface_forcing::surface_forcing_init | ( | type(time_type), intent(in) | Time, |
type(ocean_grid_type), intent(in) | G, | ||
type(unit_scale_type), intent(in) | US, | ||
type(param_file_type), intent(in) | param_file, | ||
type(diag_ctrl), intent(inout), target | diag, | ||
type(surface_forcing_cs), pointer | CS, | ||
type(tracer_flow_control_cs), pointer | tracer_flow_CSp | ||
) |
Initialize the surface forcing module.
[in] | time | The current model time |
[in] | g | The ocean's grid structure |
[in] | us | A dimensional unit scaling type |
[in] | param_file | A structure to parse for run-time parameters |
[in,out] | diag | structure used to regulate diagnostic output |
cs | pointer to control struct returned by a previous surface_forcing_init call | |
tracer_flow_csp | Forcing for tracers? |
Definition at line 1398 of file MOM_surface_forcing.F90.
References bfb_surface_forcing::bfb_surface_forcing_init(), mom_get_input::get_mom_input(), id_clock_forcing, meso_surface_forcing::meso_surface_forcing_init(), neverland_surface_forcing::neverland_surface_forcing_init(), mom_io::num_timelevels(), mom_restart::restart_init_end(), mom_restart::restore_state(), and user_surface_forcing::user_surface_forcing_init().
Referenced by mom_main().
|
private |
Sets the surface wind stresses to set up a single idealized gyre.
[in,out] | sfc_state | A structure containing fields that describe the surface state of the ocean. |
[in,out] | forces | A structure with the driving mechanical forces |
[in] | day | The time of the fluxes |
[in] | g | The ocean's grid structure |
[in] | us | A dimensional unit scaling type |
cs | pointer to control struct returned by a previous surface_forcing_init call |
Definition at line 445 of file MOM_surface_forcing.F90.
References mom_error_handler::calltree_enter(), and mom_error_handler::calltree_leave().
Referenced by set_forcing().
|
private |
Sets the surface wind stresses to set up two idealized gyres.
[in,out] | sfc_state | A structure containing fields that describe the surface state of the ocean. |
[in,out] | forces | A structure with the driving mechanical forces |
[in] | day | The time of the fluxes |
[in] | g | The ocean's grid structure |
[in] | us | A dimensional unit scaling type |
cs | pointer to control struct returned by a previous surface_forcing_init call |
Definition at line 411 of file MOM_surface_forcing.F90.
References mom_error_handler::calltree_enter(), and mom_error_handler::calltree_leave().
Referenced by set_forcing().
|
private |
[in,out] | sfc_state | A structure containing fields that describe the surface state of the ocean. |
[in,out] | forces | A structure with the driving mechanical forces |
[in] | day | The time of the fluxes |
[in,out] | g | The ocean's grid structure |
[in] | us | A dimensional unit scaling type |
cs | pointer to control struct returned by a previous surface_forcing_init call |
Definition at line 686 of file MOM_surface_forcing.F90.
References mom_forcing_type::allocate_mech_forcing(), mom_error_handler::calltree_enter(), and mom_error_handler::calltree_leave().
Referenced by set_forcing().
|
private |
Sets the surface wind stresses to constant values.
[in,out] | sfc_state | A structure containing fields that describe the surface state of the ocean. |
[in,out] | forces | A structure with the driving mechanical forces |
[in] | tau_x0 | The zonal wind stress [Pa] |
[in] | tau_y0 | The meridional wind stress [Pa] |
[in] | day | The time of the fluxes |
[in] | g | The ocean's grid structure |
[in] | us | A dimensional unit scaling type |
cs | pointer to control struct returned by a previous surface_forcing_init call |
Definition at line 363 of file MOM_surface_forcing.F90.
References mom_error_handler::calltree_enter(), and mom_error_handler::calltree_leave().
Referenced by set_forcing().
|
private |
[in,out] | sfc_state | A structure containing fields that describe the surface state of the ocean. |
[in,out] | forces | A structure with the driving mechanical forces |
[in] | day | The time of the fluxes |
[in,out] | g | The ocean's grid structure |
[in] | us | A dimensional unit scaling type |
cs | pointer to control struct returned by a previous surface_forcing_init call |
Definition at line 531 of file MOM_surface_forcing.F90.
References mom_error_handler::calltree_enter(), mom_error_handler::calltree_leave(), and mom_string_functions::uppercase().
Referenced by set_forcing().
|
private |
Sets the surface wind stresses to set up idealized gyres.
[in,out] | sfc_state | A structure containing fields that describe the surface state of the ocean. |
[in,out] | forces | A structure with the driving mechanical forces |
[in] | day | The time of the fluxes |
[in] | g | The ocean's grid structure |
[in] | us | A dimensional unit scaling type |
cs | pointer to control struct returned by a previous surface_forcing_init call |
Definition at line 478 of file MOM_surface_forcing.F90.
References mom_error_handler::calltree_enter(), and mom_error_handler::calltree_leave().
Referenced by set_forcing().
integer mom_surface_forcing::id_clock_forcing |
A CPU time clock.
Definition at line 212 of file MOM_surface_forcing.F90.
Referenced by set_forcing(), and surface_forcing_init().