MOM6
|
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.).
Data Types | |
type | ctrl_forcing_cs |
Control structure for MOM_controlled_forcing. More... | |
Functions/Subroutines | |
subroutine, public | apply_ctrl_forcing (SST_anom, SSS_anom, SSS_mean, virt_heat, virt_precip, day_start, dt, G, US, CS) |
This subroutine calls any of the other subroutines in this file that are needed to specify the current surface forcing fields. More... | |
integer function | periodic_int (rval, num_period) |
This function maps rval into an integer in the range from 1 to num_period. More... | |
real function | periodic_real (rval, num_period) |
This function shifts rval by an integer multiple of num_period so that 0 <= val_out < num_period. More... | |
subroutine, public | register_ctrl_forcing_restarts (G, param_file, 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. More... | |
subroutine, public | controlled_forcing_init (Time, G, param_file, diag, CS) |
Set up this modules control structure. More... | |
subroutine, public | controlled_forcing_end (CS) |
Clean up this modules control structure. More... | |
subroutine, public mom_controlled_forcing::apply_ctrl_forcing | ( | real, dimension(szi_(g),szj_(g)), intent(in) | SST_anom, |
real, dimension(szi_(g),szj_(g)), intent(in) | SSS_anom, | ||
real, dimension(szi_(g),szj_(g)), intent(in) | SSS_mean, | ||
real, dimension(szi_(g),szj_(g)), intent(inout) | virt_heat, | ||
real, dimension(szi_(g),szj_(g)), intent(inout) | virt_precip, | ||
type(time_type), intent(in) | day_start, | ||
real, intent(in) | dt, | ||
type(ocean_grid_type), intent(inout) | G, | ||
type(unit_scale_type), intent(in) | US, | ||
type(ctrl_forcing_cs), pointer | CS | ||
) |
This subroutine calls any of the other subroutines in this file that are needed to specify the current surface forcing fields.
[in,out] | g | The ocean's grid structure. |
[in] | sst_anom | The sea surface temperature anomalies [degC]. |
[in] | sss_anom | The sea surface salinity anomlies [ppt]. |
[in] | sss_mean | The mean sea surface salinity [ppt]. |
[in,out] | virt_heat | Virtual (corrective) heat fluxes that are augmented in this subroutine [W m-2]. |
[in,out] | virt_precip | Virtual (corrective) precipitation fluxes that are augmented in this subroutine [kg m-2 s-1]. |
[in] | day_start | Start time of the fluxes. |
[in] | dt | Length of time over which these fluxes will be applied [s]. |
[in] | us | A dimensional unit scaling type |
cs | A pointer to the control structure returned by a previous call to ctrl_forcing_init. |
Definition at line 83 of file MOM_controlled_forcing.F90.
References mom_error_handler::mom_error(), periodic_int(), periodic_real(), and mom_time_manager::real_to_time().
subroutine, public mom_controlled_forcing::controlled_forcing_end | ( | type(ctrl_forcing_cs), pointer | CS | ) |
Clean up this modules control structure.
cs | A pointer to the control structure returned by a previous call to controlled_forcing_init, it will be deallocated here. |
Definition at line 565 of file MOM_controlled_forcing.F90.
subroutine, public mom_controlled_forcing::controlled_forcing_init | ( | type(time_type), intent(in) | Time, |
type(ocean_grid_type), intent(in) | G, | ||
type(param_file_type), intent(in) | param_file, | ||
type(diag_ctrl), intent(in), target | diag, | ||
type(ctrl_forcing_cs), pointer | CS | ||
) |
Set up this modules control structure.
[in] | time | The current model time. |
[in] | g | The ocean's grid structure. |
[in] | param_file | A structure indicating the open file to parse for model parameter values. |
[in] | 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. |
Definition at line 485 of file MOM_controlled_forcing.F90.
|
private |
This function maps rval into an integer in the range from 1 to num_period.
[in] | rval | Input for mapping. |
[in] | num_period | Maximum output. |
Definition at line 377 of file MOM_controlled_forcing.F90.
Referenced by apply_ctrl_forcing().
|
private |
This function shifts rval by an integer multiple of num_period so that 0 <= val_out < num_period.
[in] | rval | Input to be shifted into valid range. |
[in] | num_period | Maximum valid value. |
Definition at line 392 of file MOM_controlled_forcing.F90.
Referenced by apply_ctrl_forcing().
subroutine, public mom_controlled_forcing::register_ctrl_forcing_restarts | ( | type(ocean_grid_type), intent(in) | G, |
type(param_file_type), intent(in) | param_file, | ||
type(ctrl_forcing_cs), pointer | CS, | ||
type(mom_restart_cs), pointer | 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.
[in] | g | The ocean's grid structure. |
[in] | 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. |
Definition at line 408 of file MOM_controlled_forcing.F90.
References mom_error_handler::mom_error(), and mom_io::var_desc().