MOM6
MOM_open_boundary.F90 File Reference
#include <MOM_memory.h>
Include dependency graph for MOM_open_boundary.F90:

Go to the source code of this file.

Data Types

type  mom_open_boundary::obc_segment_data_type
 Open boundary segment data from files (mostly). More...
 
type  mom_open_boundary::obc_segment_tracer_type
 Tracer on OBC segment data structure, for putting into a segment tracer registry. More...
 
type  mom_open_boundary::segment_tracer_registry_type
 Registry type for tracers on segments. More...
 
type  mom_open_boundary::obc_segment_type
 Open boundary segment data structure. More...
 
type  mom_open_boundary::ocean_obc_type
 Open-boundary data. More...
 
type  mom_open_boundary::file_obc_cs
 Control structure for open boundaries that read from files. Probably lots to update here. More...
 
type  mom_open_boundary::obc_struct_type
 Type to carry something (what] for the OBC registry. More...
 
type  mom_open_boundary::obc_registry_type
 Type to carry basic OBC information needed for updating values. More...
 

Modules

module  mom_open_boundary
 Controls where open boundary conditions are applied.
 

Functions/Subroutines

subroutine, public mom_open_boundary::open_boundary_config (G, US, param_file, OBC)
 Enables OBC module and reads configuration parameters This routine is called from MOM_initialize_fixed which occurs before the initialization of the vertical coordinate and ALE_init. Therefore segment data are not fully initialized here. The remainder of the segment data are initialized in a later call to update_open_boundary_data. More...
 
subroutine mom_open_boundary::initialize_segment_data (G, OBC, PF)
 Allocate space for reading OBC data from files. It sets up the required vertical remapping. In the process, it does funky stuff with the MPI processes. More...
 
subroutine mom_open_boundary::setup_segment_indices (G, seg, Is_obc, Ie_obc, Js_obc, Je_obc)
 Define indices for segment and store in hor_index_type using global segment bounds corresponding to q-points. More...
 
subroutine mom_open_boundary::setup_u_point_obc (OBC, G, US, segment_str, l_seg, PF, reentrant_y)
 Parse an OBC_SEGMENT_%%% string starting with "I=" and configure placement and type of OBC accordingly. More...
 
subroutine mom_open_boundary::setup_v_point_obc (OBC, G, US, segment_str, l_seg, PF, reentrant_x)
 Parse an OBC_SEGMENT_%%% string starting with "J=" and configure placement and type of OBC accordingly. More...
 
subroutine mom_open_boundary::parse_segment_str (ni_global, nj_global, segment_str, l, m, n, action_str, reentrant)
 Parse an OBC_SEGMENT_%%% string. More...
 
integer function interpret_int_expr (string, imax)
 
subroutine mom_open_boundary::parse_segment_data_str (segment_str, var, value, filenam, fieldnam, fields, num_fields, debug)
 Parse an OBC_SEGMENT_%%_DATA string. More...
 
subroutine mom_open_boundary::parse_for_tracer_reservoirs (OBC, PF, use_temperature)
 Parse all the OBC_SEGMENT_%%_DATA strings again to see which need tracer reservoirs (all pes need to know). More...
 
subroutine mom_open_boundary::parse_segment_param_real (segment_str, var, param_value, debug)
 Parse an OBC_SEGMENT_%%_PARAMS string. More...
 
subroutine, public mom_open_boundary::open_boundary_init (G, GV, US, param_file, OBC, restart_CSp)
 Initialize open boundary control structure and do any necessary rescaling of OBC fields that have been read from a restart file. More...
 
logical function, public mom_open_boundary::open_boundary_query (OBC, apply_open_OBC, apply_specified_OBC, apply_Flather_OBC, apply_nudged_OBC, needs_ext_seg_data)
 
subroutine mom_open_boundary::open_boundary_dealloc (OBC)
 Deallocate open boundary data. More...
 
subroutine, public mom_open_boundary::open_boundary_end (OBC)
 Close open boundary data. More...
 
subroutine, public mom_open_boundary::open_boundary_impose_normal_slope (OBC, G, depth)
 Sets the slope of bathymetry normal to an open bounndary to zero. More...
 
subroutine, public mom_open_boundary::open_boundary_impose_land_mask (OBC, G, areaCu, areaCv, US)
 Reconcile masks and open boundaries, deallocate OBC on PEs where it is not needed. Also adjust u- and v-point cell area on specified open boundaries and mask all points outside open boundaries. More...
 
subroutine mom_open_boundary::setup_obc_tracer_reservoirs (G, OBC)
 Make sure the OBC tracer reservoirs are initialized. More...
 
subroutine, public mom_open_boundary::radiation_open_bdry_conds (OBC, u_new, u_old, v_new, v_old, G, US, dt)
 Apply radiation conditions to 3D u,v at open boundaries. More...
 
subroutine, public mom_open_boundary::open_boundary_apply_normal_flow (OBC, G, u, v)
 Applies OBC values stored in segments to 3d u,v fields. More...
 
subroutine, public mom_open_boundary::open_boundary_zero_normal_flow (OBC, G, u, v)
 Applies zero values to 3d u,v fields on OBC segments. More...
 
subroutine mom_open_boundary::gradient_at_q_points (G, segment, uvel, vvel)
 Calculate the tangential gradient of the normal flow at the boundary q-points. More...
 
subroutine, public mom_open_boundary::set_tracer_data (OBC, tv, h, G, PF, tracer_Reg)
 Sets the initial values of the tracer open boundary conditions. Redoing this elsewhere. More...
 
integer function mom_open_boundary::lookup_seg_field (OBC_seg, field)
 Needs documentation. More...
 
subroutine mom_open_boundary::allocate_obc_segment_data (OBC, segment)
 Allocate segment data fields. More...
 
subroutine mom_open_boundary::deallocate_obc_segment_data (OBC, segment)
 Deallocate segment data fields. More...
 
subroutine, public mom_open_boundary::open_boundary_test_extern_uv (G, OBC, u, v)
 Set tangential velocities outside of open boundaries to silly values (used for checking the interior state is independent of values outside of the domain). More...
 
subroutine, public mom_open_boundary::open_boundary_test_extern_h (G, GV, OBC, h)
 Set thicknesses outside of open boundaries to silly values (used for checking the interior state is independent of values outside of the domain). More...
 
subroutine, public mom_open_boundary::update_obc_segment_data (G, GV, US, OBC, tv, h, Time)
 Update the OBC values on the segments. More...
 
subroutine, public mom_open_boundary::register_obc (name, param_file, Reg)
 register open boundary objects for boundary updates. More...
 
subroutine, public mom_open_boundary::obc_registry_init (param_file, Reg)
 This routine include declares and sets the variable "version". More...
 
logical function, public mom_open_boundary::register_file_obc (param_file, CS, OBC_Reg)
 Add file to OBC registry. More...
 
subroutine, public mom_open_boundary::file_obc_end (CS)
 Clean up the file OBC from registry. More...
 
subroutine, public mom_open_boundary::segment_tracer_registry_init (param_file, segment)
 Initialize the segment tracer registry. More...
 
subroutine, public mom_open_boundary::register_segment_tracer (tr_ptr, param_file, GV, segment, OBC_scalar, OBC_array)
 
subroutine, public mom_open_boundary::segment_tracer_registry_end (Reg)
 Clean up the segment tracer registry. More...
 
subroutine, public mom_open_boundary::register_temp_salt_segments (GV, OBC, tr_Reg, param_file)
 
subroutine, public mom_open_boundary::fill_temp_salt_segments (G, OBC, tv)
 
subroutine mom_open_boundary::mask_outside_obcs (G, US, param_file, OBC)
 Find the region outside of all open boundary segments and make sure it is set to land mask. Gonna need to know global land mask as well to get it right... More...
 
subroutine mom_open_boundary::flood_fill (G, color, cin, cout, cland)
 flood the cin, cout values More...
 
subroutine mom_open_boundary::flood_fill2 (G, color, cin, cout, cland)
 flood the cin, cout values More...
 
subroutine, public mom_open_boundary::open_boundary_register_restarts (HI, GV, OBC, Reg, param_file, restart_CSp, use_temperature)
 Register OBC segment data for restarts. More...
 
subroutine, public mom_open_boundary::update_segment_tracer_reservoirs (G, GV, uhr, vhr, h, OBC, dt, Reg)
 Update the OBC tracer reservoirs after the tracers have been updated. More...
 
subroutine mom_open_boundary::adjustsegmentetatofitbathymetry (G, GV, US, segment, fld)
 Adjust interface heights to fit the bathymetry and diagnose layer thickness. More...
 

Variables

integer, parameter, public mom_open_boundary::obc_none = 0
 Indicates the use of no open boundary. More...
 
integer, parameter, public mom_open_boundary::obc_simple = 1
 Indicates the use of a simple inflow open boundary. More...
 
integer, parameter, public mom_open_boundary::obc_wall = 2
 Indicates the use of a closed wall. More...
 
integer, parameter, public mom_open_boundary::obc_flather = 3
 Indicates the use of a Flather open boundary. More...
 
integer, parameter, public mom_open_boundary::obc_radiation = 4
 Indicates the use of a radiation open boundary. More...
 
integer, parameter, public mom_open_boundary::obc_direction_n = 100
 Indicates the boundary is an effective northern boundary. More...
 
integer, parameter, public mom_open_boundary::obc_direction_s = 200
 Indicates the boundary is an effective southern boundary. More...
 
integer, parameter, public mom_open_boundary::obc_direction_e = 300
 Indicates the boundary is an effective eastern boundary. More...
 
integer, parameter, public mom_open_boundary::obc_direction_w = 400
 Indicates the boundary is an effective western boundary. More...
 
integer, parameter mom_open_boundary::max_obc_fields = 100
 Maximum number of data fields needed for OBC segments. More...
 
integer mom_open_boundary::id_clock_pass
 A CPU time clock. More...
 
character(len=40) mom_open_boundary::mdl = "MOM_open_boundary"
 This module's name. More...
 

Function/Subroutine Documentation

◆ interpret_int_expr()

integer function parse_segment_str::interpret_int_expr ( character(len=*), intent(in)  string,
integer, intent(in)  imax 
)
private
Parameters
[in]stringInteger in form or I, N or N-I
[in]imaxValue to replace 'N' with

Definition at line 1214 of file MOM_open_boundary.F90.

1214  character(len=*), intent(in) :: string !< Integer in form or %I, N or N-%I
1215  integer, intent(in) :: imax !< Value to replace 'N' with
1216  ! Local variables
1217  integer slen
1218 
1219  slen = len_trim(string)
1220  if (slen==0) call mom_error(fatal, "MOM_open_boundary.F90, parse_segment_str"//&
1221  "Parsed string was empty!")
1222  if (len_trim(string)==1 .and. string(1:1)=='N') then
1223  interpret_int_expr = imax
1224  elseif (string(1:1)=='N') then
1225  if (string(2:2)=='+') then
1226  read(string(3:slen),*,err=911) interpret_int_expr
1228  elseif (string(2:2)=='-') then
1229  read(string(3:slen),*,err=911) interpret_int_expr
1231  endif
1232  else
1233  read(string(1:slen),*,err=911) interpret_int_expr
1234  endif
1235  return
1236  911 call mom_error(fatal, "MOM_open_boundary.F90, parse_segment_str"//&
1237  "Problem reading value from string '"//trim(string)//"'.")

References mom_error_handler::mom_error().

Referenced by mom_open_boundary::parse_segment_str().

Here is the call graph for this function:
Here is the caller graph for this function:
interpret_int_expr
integer function interpret_int_expr(string, imax)
Definition: MOM_open_boundary.F90:1214