MOM6
|
Describes the decomposed MOM domain and has routines for communications across PEs.
Data Types | |
interface | clone_mom_domain |
Copy one MOM_domain_type into another. More... | |
interface | create_group_pass |
Set up a group of halo updates. More... | |
interface | fill_symmetric_edges |
Do a set of halo updates that fill in the values at the duplicated edges of a staggered symmetric memory domain. More... | |
type | mom_domain_type |
The MOM_domain_type contains information about the domain decompositoin. More... | |
interface | pass_var |
Do a halo update on an array. More... | |
interface | pass_var_complete |
Complete a non-blocking halo update on an array. More... | |
interface | pass_var_start |
Initiate a non-blocking halo update on an array. More... | |
interface | pass_vector |
Do a halo update on a pair of arrays representing the two components of a vector. More... | |
interface | pass_vector_complete |
Complete a halo update on a pair of arrays representing the two components of a vector. More... | |
interface | pass_vector_start |
Initiate a halo update on a pair of arrays representing the two components of a vector. More... | |
Functions/Subroutines | |
subroutine | pass_var_3d (array, MOM_dom, sideflag, complete, position, halo, clock) |
pass_var_3d does a halo update for a three-dimensional array. More... | |
subroutine | pass_var_2d (array, MOM_dom, sideflag, complete, position, halo, inner_halo, clock) |
pass_var_2d does a halo update for a two-dimensional array. More... | |
integer function | pass_var_start_2d (array, MOM_dom, sideflag, position, complete, halo, clock) |
pass_var_start_2d starts a halo update for a two-dimensional array. More... | |
integer function | pass_var_start_3d (array, MOM_dom, sideflag, position, complete, halo, clock) |
pass_var_start_3d starts a halo update for a three-dimensional array. More... | |
subroutine | pass_var_complete_2d (id_update, array, MOM_dom, sideflag, position, halo, clock) |
pass_var_complete_2d completes a halo update for a two-dimensional array. More... | |
subroutine | pass_var_complete_3d (id_update, array, MOM_dom, sideflag, position, halo, clock) |
pass_var_complete_3d completes a halo update for a three-dimensional array. More... | |
subroutine | pass_vector_2d (u_cmpt, v_cmpt, MOM_dom, direction, stagger, complete, halo, clock) |
pass_vector_2d does a halo update for a pair of two-dimensional arrays representing the compontents of a two-dimensional horizontal vector. More... | |
subroutine | fill_vector_symmetric_edges_2d (u_cmpt, v_cmpt, MOM_dom, stagger, scalar, clock) |
fill_vector_symmetric_edges_2d does an usual set of halo updates that only fill in the values at the edge of a pair of symmetric memory two-dimensional arrays representing the compontents of a two-dimensional horizontal vector. If symmetric memory is not being used, this subroutine does nothing except to possibly turn optional cpu clocks on or off. More... | |
subroutine | pass_vector_3d (u_cmpt, v_cmpt, MOM_dom, direction, stagger, complete, halo, clock) |
pass_vector_3d does a halo update for a pair of three-dimensional arrays representing the compontents of a three-dimensional horizontal vector. More... | |
integer function | pass_vector_start_2d (u_cmpt, v_cmpt, MOM_dom, direction, stagger, complete, halo, clock) |
pass_vector_start_2d starts a halo update for a pair of two-dimensional arrays representing the compontents of a two-dimensional horizontal vector. More... | |
integer function | pass_vector_start_3d (u_cmpt, v_cmpt, MOM_dom, direction, stagger, complete, halo, clock) |
pass_vector_start_3d starts a halo update for a pair of three-dimensional arrays representing the compontents of a three-dimensional horizontal vector. More... | |
subroutine | pass_vector_complete_2d (id_update, u_cmpt, v_cmpt, MOM_dom, direction, stagger, halo, clock) |
pass_vector_complete_2d completes a halo update for a pair of two-dimensional arrays representing the compontents of a two-dimensional horizontal vector. More... | |
subroutine | pass_vector_complete_3d (id_update, u_cmpt, v_cmpt, MOM_dom, direction, stagger, halo, clock) |
pass_vector_complete_3d completes a halo update for a pair of three-dimensional arrays representing the compontents of a three-dimensional horizontal vector. More... | |
subroutine | create_var_group_pass_2d (group, array, MOM_dom, sideflag, position, halo, clock) |
create_var_group_pass_2d sets up a group of two-dimensional array halo updates. More... | |
subroutine | create_var_group_pass_3d (group, array, MOM_dom, sideflag, position, halo, clock) |
create_var_group_pass_3d sets up a group of three-dimensional array halo updates. More... | |
subroutine | create_vector_group_pass_2d (group, u_cmpt, v_cmpt, MOM_dom, direction, stagger, halo, clock) |
create_vector_group_pass_2d sets up a group of two-dimensional vector halo updates. More... | |
subroutine | create_vector_group_pass_3d (group, u_cmpt, v_cmpt, MOM_dom, direction, stagger, halo, clock) |
create_vector_group_pass_3d sets up a group of three-dimensional vector halo updates. More... | |
subroutine, public | do_group_pass (group, MOM_dom, clock) |
do_group_pass carries out a group halo update. More... | |
subroutine, public | start_group_pass (group, MOM_dom, clock) |
start_group_pass starts out a group halo update. More... | |
subroutine, public | complete_group_pass (group, MOM_dom, clock) |
complete_group_pass completes a group halo update. More... | |
subroutine, public | mom_domains_init (MOM_dom, param_file, symmetric, static_memory, NIHALO, NJHALO, NIGLOBAL, NJGLOBAL, NIPROC, NJPROC, min_halo, domain_name, include_name, param_suffix) |
MOM_domains_init initalizes a MOM_domain_type variable, based on the information read in from a param_file_type, and optionally returns data describing various' properties of the domain type. More... | |
subroutine | clone_md_to_md (MD_in, MOM_dom, min_halo, halo_size, symmetric, domain_name) |
clone_MD_to_MD copies one MOM_domain_type into another, while allowing some properties of the new type to differ from the original one. More... | |
subroutine | clone_md_to_d2d (MD_in, mpp_domain, min_halo, halo_size, symmetric, domain_name) |
clone_MD_to_d2D uses information from a MOM_domain_type to create a new domain2d type, while allowing some properties of the new type to differ from the original one. More... | |
subroutine, public | get_domain_extent (Domain, isc, iec, jsc, jec, isd, ied, jsd, jed, isg, ieg, jsg, jeg, idg_offset, jdg_offset, symmetric, local_indexing, index_offset) |
Returns various data that has been stored in a MOM_domain_type. More... | |
subroutine, public | get_domain_extent_dsamp2 (Domain, isc_d2, iec_d2, jsc_d2, jec_d2, isd_d2, ied_d2, jsd_d2, jed_d2, isg_d2, ieg_d2, jsg_d2, jeg_d2) |
subroutine, public | get_simple_array_i_ind (domain, size, is, ie, symmetric) |
Return the (potentially symmetric) computational domain i-bounds for an array passed without index specifications (i.e. indices start at 1) based on an array size. More... | |
subroutine, public | get_simple_array_j_ind (domain, size, js, je, symmetric) |
Return the (potentially symmetric) computational domain j-bounds for an array passed without index specifications (i.e. indices start at 1) based on an array size. More... | |
subroutine, public | get_global_shape (domain, niglobal, njglobal) |
Returns the global shape of h-point arrays. More... | |
Variables | |
integer, parameter, public | to_all = To_East + To_West + To_North + To_South |
A flag for passing in all directions. More... | |
|
private |
clone_MD_to_d2D uses information from a MOM_domain_type to create a new domain2d type, while allowing some properties of the new type to differ from the original one.
[in] | md_in | An existing MOM_domain to be cloned |
[in,out] | mpp_domain | The new mpp_domain to be set up |
[in,out] | min_halo | If present, this sets the |
[in] | halo_size | If present, this sets the halo size for the domian in the i- and j-directions. min_halo and halo_size can not both be present. |
[in] | symmetric | If present, this specifies whether the new domain is symmetric, regardless of whether the macro SYMMETRIC_MEMORY_ is defined. |
[in] | domain_name | A name for the new domain, "MOM" |
Definition at line 1695 of file MOM_domains.F90.
References mom_error_handler::mom_error().
|
private |
clone_MD_to_MD copies one MOM_domain_type into another, while allowing some properties of the new type to differ from the original one.
[in] | md_in | An existing MOM_domain |
mom_dom | A pointer to a MOM_domain that will be allocated if it is unassociated, and will have data copied from MD_in | |
[in,out] | min_halo | If present, this sets the |
[in] | halo_size | If present, this sets the halo size for the domian in the i- and j-directions. min_halo and halo_size can not both be present. |
[in] | symmetric | If present, this specifies whether the new domain is symmetric, regardless of whether the macro SYMMETRIC_MEMORY_ is defined. |
[in] | domain_name | A name for the new domain, "MOM" |
Definition at line 1603 of file MOM_domains.F90.
References mom_error_handler::mom_error().
subroutine, public mom_domains::complete_group_pass | ( | type(group_pass_type), intent(inout) | group, |
type(mom_domain_type), intent(inout) | MOM_dom, | ||
integer, intent(in), optional | clock | ||
) |
complete_group_pass completes a group halo update.
[in,out] | group | The data type that store information for group update. This data will be used in do_group_pass. |
[in,out] | mom_dom | The MOM_domain_type containing the mpp_domain needed to determine where data should be sent. |
[in] | clock | The handle for a cpu time clock that should be started then stopped to time this routine. |
Definition at line 1131 of file MOM_domains.F90.
Referenced by mom_barotropic::btstep(), mom_internal_tides::propagate_int_tide(), mom::step_mom(), and mom_dynamics_split_rk2::step_mom_dyn_split_rk2().
|
private |
create_var_group_pass_2d sets up a group of two-dimensional array halo updates.
[in,out] | group | The data type that store information for group update. This data will be used in do_group_pass. |
[in,out] | array | The array which is having its halos points exchanged. |
[in,out] | mom_dom | The MOM_domain_type containing the mpp_domain needed to determine where data should be sent. |
[in] | sideflag | An optional integer indicating which directions the data should be sent. It is TO_ALL or the sum of any of TO_EAST, TO_WEST, TO_NORTH, and TO_SOUTH. For example, TO_EAST sends the data to the processor to the east, so the halos on the western side are filled. TO_ALL is the default if sideflag is omitted. |
[in] | position | An optional argument indicating the position. This is usally CORNER, but is CENTER by default. |
[in] | halo | The size of the halo to update - the full halo by default. |
[in] | clock | The handle for a cpu time clock that should be started then stopped to time this routine. |
Definition at line 888 of file MOM_domains.F90.
References to_all.
|
private |
create_var_group_pass_3d sets up a group of three-dimensional array halo updates.
[in,out] | group | The data type that store information for group update. This data will be used in do_group_pass. |
[in,out] | array | The array which is having its halos points exchanged. |
[in,out] | mom_dom | The MOM_domain_type containing the mpp_domain needed to determine where data should be sent. |
[in] | sideflag | An optional integer indicating which directions the data should be sent. It is TO_ALL or the sum of any of TO_EAST, TO_WEST, TO_NORTH, and TO_SOUTH. For example, TO_EAST sends the data to the processor to the east, so the halos on the western side are filled. TO_ALL is the default if sideflag is omitted. |
[in] | position | An optional argument indicating the position. This is usally CORNER, but is CENTER by default. |
[in] | halo | The size of the halo to update - the full halo by default. |
[in] | clock | The handle for a cpu time clock that should be started then stopped to time this routine. |
Definition at line 933 of file MOM_domains.F90.
References to_all.
|
private |
create_vector_group_pass_2d sets up a group of two-dimensional vector halo updates.
[in,out] | group | The data type that store information for group update. This data will be used in do_group_pass. |
[in,out] | u_cmpt | The nominal zonal (u) component of the vector pair which is having its halos points exchanged. |
[in,out] | v_cmpt | The nominal meridional (v) component of the vector pair which is having its halos points exchanged. |
[in,out] | mom_dom | The MOM_domain_type containing the mpp_domain needed to determine where data should be sent |
[in] | direction | An optional integer indicating which directions the data should be sent. It is TO_ALL or the sum of any of TO_EAST, TO_WEST, TO_NORTH, and TO_SOUTH, possibly plus SCALAR_PAIR if these are paired non-directional scalars discretized at the typical vector component locations. For example, TO_EAST sends the data to the processor to the east, so the halos on the western side are filled. TO_ALL is the default if omitted. |
[in] | stagger | An optional flag, which may be one of A_GRID, BGRID_NE, or CGRID_NE, indicating where the two components of the vector are discretized. Omitting stagger is the same as setting it to CGRID_NE. |
[in] | halo | The size of the halo to update - the full halo by default. |
[in] | clock | The handle for a cpu time clock that should be started then stopped to time this routine. |
Definition at line 978 of file MOM_domains.F90.
References to_all.
|
private |
create_vector_group_pass_3d sets up a group of three-dimensional vector halo updates.
[in,out] | group | The data type that store information for group update. This data will be used in do_group_pass. |
[in,out] | u_cmpt | The nominal zonal (u) component of the vector pair which is having its halos points exchanged. |
[in,out] | v_cmpt | The nominal meridional (v) component of the vector pair which is having its halos points exchanged. |
[in,out] | mom_dom | The MOM_domain_type containing the mpp_domain needed to determine where data should be sent. |
[in] | direction | An optional integer indicating which directions the data should be sent. It is TO_ALL or the sum of any of TO_EAST, TO_WEST, TO_NORTH, and TO_SOUTH, possibly plus SCALAR_PAIR if these are paired non-directional scalars discretized at the typical vector component locations. For example, TO_EAST sends the data to the processor to the east, so the halos on the western side are filled. TO_ALL is the default if omitted. |
[in] | stagger | An optional flag, which may be one of A_GRID, BGRID_NE, or CGRID_NE, indicating where the two components of the vector are discretized. Omitting stagger is the same as setting it to CGRID_NE. |
[in] | halo | The size of the halo to update - the full halo by default. |
[in] | clock | The handle for a cpu time clock that should be started then stopped to time this routine. |
Definition at line 1034 of file MOM_domains.F90.
References to_all.
subroutine, public mom_domains::do_group_pass | ( | type(group_pass_type), intent(inout) | group, |
type(mom_domain_type), intent(inout) | MOM_dom, | ||
integer, intent(in), optional | clock | ||
) |
do_group_pass carries out a group halo update.
[in,out] | group | The data type that store information for group update. This data will be used in do_group_pass. |
[in,out] | mom_dom | The MOM_domain_type containing the mpp_domain needed to determine where data should be sent. |
[in] | clock | The handle for a cpu time clock that should be started then stopped to time this routine. |
Definition at line 1090 of file MOM_domains.F90.
Referenced by mom_tracer_advect::advect_tracer(), mom_ale::ale_regrid_accelerated(), mom_bulk_mixed_layer::bulkmixedlayer(), mom_diabatic_driver::diabatic_ale(), mom_diabatic_driver::layered_diabatic(), mom_meke::meke_init(), and mom_meke::step_forward_meke().
|
private |
fill_vector_symmetric_edges_2d does an usual set of halo updates that only fill in the values at the edge of a pair of symmetric memory two-dimensional arrays representing the compontents of a two-dimensional horizontal vector. If symmetric memory is not being used, this subroutine does nothing except to possibly turn optional cpu clocks on or off.
[in,out] | u_cmpt | The nominal zonal (u) component of the vector pair which is having its halos points exchanged. |
[in,out] | v_cmpt | The nominal meridional (v) component of the vector pair which is having its halos points exchanged. |
[in,out] | mom_dom | The MOM_domain_type containing the mpp_domain needed to determine where data should be sent. |
[in] | stagger | An optional flag, which may be one of A_GRID, BGRID_NE, or CGRID_NE, indicating where the two components of the vector are discretized. Omitting stagger is the same as setting it to CGRID_NE. |
[in] | scalar | An optional argument indicating whether. |
[in] | clock | The handle for a cpu time clock that should be started then stopped to time this routine. |
Definition at line 525 of file MOM_domains.F90.
References to_all.
subroutine, public mom_domains::get_domain_extent | ( | type(mom_domain_type), intent(in) | Domain, |
integer, intent(out) | isc, | ||
integer, intent(out) | iec, | ||
integer, intent(out) | jsc, | ||
integer, intent(out) | jec, | ||
integer, intent(out) | isd, | ||
integer, intent(out) | ied, | ||
integer, intent(out) | jsd, | ||
integer, intent(out) | jed, | ||
integer, intent(out) | isg, | ||
integer, intent(out) | ieg, | ||
integer, intent(out) | jsg, | ||
integer, intent(out) | jeg, | ||
integer, intent(out) | idg_offset, | ||
integer, intent(out) | jdg_offset, | ||
logical, intent(out) | symmetric, | ||
logical, intent(in), optional | local_indexing, | ||
integer, intent(in), optional | index_offset | ||
) |
Returns various data that has been stored in a MOM_domain_type.
[in] | domain | The MOM domain from which to extract information |
[out] | isc | The start i-index of the computational domain |
[out] | iec | The end i-index of the computational domain |
[out] | jsc | The start j-index of the computational domain |
[out] | jec | The end j-index of the computational domain |
[out] | isd | The start i-index of the data domain |
[out] | ied | The end i-index of the data domain |
[out] | jsd | The start j-index of the data domain |
[out] | jed | The end j-index of the data domain |
[out] | isg | The start i-index of the global domain |
[out] | ieg | The end i-index of the global domain |
[out] | jsg | The start j-index of the global domain |
[out] | jeg | The end j-index of the global domain |
[out] | idg_offset | The offset between the corresponding global and data i-index spaces. |
[out] | jdg_offset | The offset between the corresponding global and data j-index spaces. |
[out] | symmetric | True if symmetric memory is used. |
[in] | local_indexing | If true, local tracer array indices start at 1, as in most MOM6 code. |
[in] | index_offset | A fixed additional offset to all indices. This can be useful for some types of debugging with dynamic memory allocation. |
Definition at line 1769 of file MOM_domains.F90.
Referenced by mom_hor_index::hor_index_init().
subroutine, public mom_domains::get_domain_extent_dsamp2 | ( | type(mom_domain_type), intent(in) | Domain, |
integer, intent(out) | isc_d2, | ||
integer, intent(out) | iec_d2, | ||
integer, intent(out) | jsc_d2, | ||
integer, intent(out) | jec_d2, | ||
integer, intent(out) | isd_d2, | ||
integer, intent(out) | ied_d2, | ||
integer, intent(out) | jsd_d2, | ||
integer, intent(out) | jed_d2, | ||
integer, intent(out) | isg_d2, | ||
integer, intent(out) | ieg_d2, | ||
integer, intent(out) | jsg_d2, | ||
integer, intent(out) | jeg_d2 | ||
) |
[in] | domain | The MOM domain from which to extract information |
[out] | isc_d2 | The start i-index of the computational domain |
[out] | iec_d2 | The end i-index of the computational domain |
[out] | jsc_d2 | The start j-index of the computational domain |
[out] | jec_d2 | The end j-index of the computational domain |
[out] | isd_d2 | The start i-index of the data domain |
[out] | ied_d2 | The end i-index of the data domain |
[out] | jsd_d2 | The start j-index of the data domain |
[out] | jed_d2 | The end j-index of the data domain |
[out] | isg_d2 | The start i-index of the global domain |
[out] | ieg_d2 | The end i-index of the global domain |
[out] | jsg_d2 | The start j-index of the global domain |
[out] | jeg_d2 | The end j-index of the global domain |
Definition at line 1827 of file MOM_domains.F90.
Referenced by mom_grid::mom_grid_init().
subroutine, public mom_domains::get_global_shape | ( | type(mom_domain_type), intent(in) | domain, |
integer, intent(out) | niglobal, | ||
integer, intent(out) | njglobal | ||
) |
Returns the global shape of h-point arrays.
[in] | domain | MOM domain |
[out] | niglobal | i-index global size of h-point arrays |
[out] | njglobal | j-index global size of h-point arrays |
Definition at line 1927 of file MOM_domains.F90.
Referenced by mom_grid::get_global_grid_size().
subroutine, public mom_domains::get_simple_array_i_ind | ( | type(mom_domain_type), intent(in) | domain, |
integer, intent(in) | size, | ||
integer, intent(out) | is, | ||
integer, intent(out) | ie, | ||
logical, intent(in), optional | symmetric | ||
) |
Return the (potentially symmetric) computational domain i-bounds for an array passed without index specifications (i.e. indices start at 1) based on an array size.
[in] | domain | MOM domain from which to extract information |
[in] | size | The i-array size |
[out] | is | The computational domain starting i-index. |
[out] | ie | The computational domain ending i-index. |
[in] | symmetric | If present, indicates whether symmetric sizes can be considered. |
Definition at line 1855 of file MOM_domains.F90.
References mom_error_handler::mom_error().
Referenced by mom_io::mom_read_data_2d(), mom_io::mom_read_data_3d(), mom_io::mom_read_data_4d(), mom_io::mom_read_vector_2d(), and mom_io::mom_read_vector_3d().
subroutine, public mom_domains::get_simple_array_j_ind | ( | type(mom_domain_type), intent(in) | domain, |
integer, intent(in) | size, | ||
integer, intent(out) | js, | ||
integer, intent(out) | je, | ||
logical, intent(in), optional | symmetric | ||
) |
Return the (potentially symmetric) computational domain j-bounds for an array passed without index specifications (i.e. indices start at 1) based on an array size.
[in] | domain | MOM domain from which to extract information |
[in] | size | The j-array size |
[out] | js | The computational domain starting j-index. |
[out] | je | The computational domain ending j-index. |
[in] | symmetric | If present, indicates whether symmetric sizes can be considered. |
Definition at line 1892 of file MOM_domains.F90.
References mom_error_handler::mom_error().
Referenced by mom_io::mom_read_data_2d(), mom_io::mom_read_data_3d(), mom_io::mom_read_data_4d(), mom_io::mom_read_vector_2d(), and mom_io::mom_read_vector_3d().
subroutine, public mom_domains::mom_domains_init | ( | type(mom_domain_type), pointer | MOM_dom, |
type(param_file_type), intent(in) | param_file, | ||
logical, intent(in), optional | symmetric, | ||
logical, intent(in), optional | static_memory, | ||
integer, intent(in), optional | NIHALO, | ||
integer, intent(in), optional | NJHALO, | ||
integer, intent(in), optional | NIGLOBAL, | ||
integer, intent(in), optional | NJGLOBAL, | ||
integer, intent(in), optional | NIPROC, | ||
integer, intent(in), optional | NJPROC, | ||
integer, dimension(2), intent(inout), optional | min_halo, | ||
character(len=*), intent(in), optional | domain_name, | ||
character(len=*), intent(in), optional | include_name, | ||
character(len=*), intent(in), optional | param_suffix | ||
) |
MOM_domains_init initalizes a MOM_domain_type variable, based on the information read in from a param_file_type, and optionally returns data describing various' properties of the domain type.
mom_dom | A pointer to the MOM_domain_type being defined here. | |
[in] | param_file | A structure to parse for run-time parameters |
[in] | symmetric | If present, this specifies whether this domain is symmetric, regardless of whether the macro SYMMETRIC_MEMORY_ is defined. |
[in] | static_memory | If present and true, this domain type is set up for static memory and error checking of various input values is performed against those in the input file. |
[in] | nihalo | Default halo sizes, required with static memory. |
[in] | njhalo | Default halo sizes, required with static memory. |
[in] | niglobal | Total domain sizes, required with static memory. |
[in] | njglobal | Total domain sizes, required with static memory. |
[in] | niproc | Processor counts, required with static memory. |
[in] | njproc | Processor counts, required with static memory. |
[in,out] | min_halo | If present, this sets the minimum halo size for this domain in the i- and j- directions, and returns the actual halo size used. |
[in] | domain_name | A name for this domain, "MOM" if missing. |
[in] | include_name | A name for model's include file, "MOM_memory.h" if missing. |
[in] | param_suffix | A suffix to apply to layout-specific parameters. |
Definition at line 1155 of file MOM_domains.F90.
References mom_error_handler::mom_error(), mom_error_handler::mom_mesg(), and mom_string_functions::slasher().
Referenced by mom_oda_driver_mod::init_oda().
|
private |
pass_var_2d does a halo update for a two-dimensional array.
[in,out] | array | The array which is having its halos points exchanged. |
[in,out] | mom_dom | The MOM_domain_type containing the mpp_domain needed to determine where data should be sent. |
[in] | sideflag | An optional integer indicating which directions the data should be sent. It is TO_ALL or the sum of any of TO_EAST, TO_WEST, TO_NORTH, and TO_SOUTH. For example, TO_EAST sends the data to the processor to the east, so the halos on the western side are filled. TO_ALL is the default if sideflag is omitted. |
[in] | complete | An optional argument indicating whether the halo updates should be completed before progress resumes. Omitting complete is the same as setting complete to .true. |
[in] | position | An optional argument indicating the position. This is usally CORNER, but is CENTER by default. |
[in] | halo | The size of the halo to update - the full halo by default. |
[in] | inner_halo | The size of an inner halo to avoid updating, or 0 to avoid updating symmetric memory computational domain points. Setting this >=0 also enforces that complete=.true. |
[in] | clock | The handle for a cpu time clock that should be started then stopped to time this routine. |
Definition at line 185 of file MOM_domains.F90.
References mom_error_handler::mom_error(), and to_all.
|
private |
pass_var_3d does a halo update for a three-dimensional array.
[in,out] | array | The array which is having its halos points exchanged. |
[in,out] | mom_dom | The MOM_domain_type containing the mpp_domain needed to determine where data should be sent. |
[in] | sideflag | An optional integer indicating which directions the data should be sent. It is TO_ALL or the sum of any of TO_EAST, TO_WEST, TO_NORTH, and TO_SOUTH. For example, TO_EAST sends the data to the processor to the east, sothe halos on the western side are filled. TO_ALL is the default if sideflag is omitted. |
[in] | complete | An optional argument indicating whether the halo updates should be completed before progress resumes. Omitting complete is the same as setting complete to .true. |
[in] | position | An optional argument indicating the position. This is usally CORNER, but is CENTER by default. |
[in] | halo | The size of the halo to update - the full halo by default. |
[in] | clock | The handle for a cpu time clock that should be started then stopped to time this routine. |
Definition at line 139 of file MOM_domains.F90.
References to_all.
|
private |
pass_var_complete_2d completes a halo update for a two-dimensional array.
[in] | id_update | The integer id of this update which has been returned from a previous call to pass_var_start. |
[in,out] | array | The array which is having its halos points exchanged. |
[in,out] | mom_dom | The MOM_domain_type containing the mpp_domain needed to determine where data should be sent. |
[in] | sideflag | An optional integer indicating which directions the data should be sent. It is TO_ALL or the sum of any of TO_EAST, TO_WEST, TO_NORTH, and TO_SOUTH. For example, TO_EAST sends the data to the processor to the east, so the halos on the western side are filled. TO_ALL is the default if sideflag is omitted. |
[in] | position | An optional argument indicating the position. This is usally CORNER, but is CENTER by default. |
[in] | halo | The size of the halo to update - the full halo by default. |
[in] | clock | The handle for a cpu time clock that should be started then stopped to time this routine. |
Definition at line 377 of file MOM_domains.F90.
References to_all.
|
private |
pass_var_complete_3d completes a halo update for a three-dimensional array.
[in] | id_update | The integer id of this update which has been returned from a previous call to pass_var_start. |
[in,out] | array | The array which is having its halos points exchanged. |
[in,out] | mom_dom | The MOM_domain_type containing the mpp_domain needed to determine where data should be sent. |
[in] | sideflag | An optional integer indicating which directions the data should be sent. It is TO_ALL or the sum of any of TO_EAST, TO_WEST, TO_NORTH, and TO_SOUTH. For example, TO_EAST sends the data to the processor to the east, so the halos on the western side are filled. TO_ALL is the default if sideflag is omitted. |
[in] | position | An optional argument indicating the position. This is usally CORNER, but is CENTER by default. |
[in] | halo | The size of the halo to update - the full halo by default. |
[in] | clock | The handle for a cpu time clock that should be started then stopped to time this routine. |
Definition at line 420 of file MOM_domains.F90.
References to_all.
|
private |
pass_var_start_2d starts a halo update for a two-dimensional array.
[in,out] | array | The array which is having its halos points exchanged. |
[in,out] | mom_dom | The MOM_domain_type containing the mpp_domain needed to determine where data should be sent. |
[in] | sideflag | An optional integer indicating which directions the data should be sent. It is TO_ALL or the sum of any of TO_EAST, TO_WEST, TO_NORTH, and TO_SOUTH. For example, TO_EAST sends the data to the processor to the east, so the halos on the western side are filled. TO_ALL is the default if sideflag is omitted. |
[in] | position | An optional argument indicating the position. This is usally CORNER, but is CENTER by default. |
[in] | complete | An optional argument indicating whether the halo updates should be completed before progress resumes. Omitting complete is the same as setting complete to .true. |
[in] | halo | The size of the halo to update - the full halo by default. |
[in] | clock | The handle for a cpu time clock that should be started then stopped to time this routine. |
Definition at line 287 of file MOM_domains.F90.
References to_all.
|
private |
pass_var_start_3d starts a halo update for a three-dimensional array.
[in,out] | array | The array which is having its halos points exchanged. |
[in,out] | mom_dom | The MOM_domain_type containing the mpp_domain needed to determine where data should be sent. |
[in] | sideflag | An optional integer indicating which directions the data should be sent. It is TO_ALL or the sum of any of TO_EAST, TO_WEST, TO_NORTH, and TO_SOUTH. For example, TO_EAST sends the data to the processor to the east, so the halos on the western side are filled. TO_ALL is the default if sideflag is omitted. |
[in] | position | An optional argument indicating the position. This is usally CORNER, but is CENTER by default. |
[in] | complete | An optional argument indicating whether the halo updates should be completed before progress resumes. Omitting complete is the same as setting complete to .true. |
[in] | halo | The size of the halo to update - the full halo by default. |
[in] | clock | The handle for a cpu time clock that should be started then stopped to time this routine. |
Definition at line 332 of file MOM_domains.F90.
References to_all.
|
private |
pass_vector_2d does a halo update for a pair of two-dimensional arrays representing the compontents of a two-dimensional horizontal vector.
[in,out] | u_cmpt | The nominal zonal (u) component of the vector pair which is having its halos points exchanged. |
[in,out] | v_cmpt | The nominal meridional (v) component of the vector pair which is having its halos points exchanged. |
[in,out] | mom_dom | The MOM_domain_type containing the mpp_domain needed to determine where data should be sent. |
[in] | direction | An optional integer indicating which directions the data should be sent. It is TO_ALL or the sum of any of TO_EAST, TO_WEST, TO_NORTH, and TO_SOUTH, possibly plus SCALAR_PAIR if these are paired non-directional scalars discretized at the typical vector component locations. For example, TO_EAST sends the data to the processor to the east, so the halos on the western side are filled. TO_ALL is the default if omitted. |
[in] | stagger | An optional flag, which may be one of A_GRID, BGRID_NE, or CGRID_NE, indicating where the two components of the vector are discretized. Omitting stagger is the same as setting it to CGRID_NE. |
[in] | complete | An optional argument indicating whether the halo updates should be completed before progress resumes. Omitting complete is the same as setting complete to .true. |
[in] | halo | The size of the halo to update - the full halo by default. |
[in] | clock | The handle for a cpu time clock that should be started then stopped to time this routine. |
Definition at line 464 of file MOM_domains.F90.
References to_all.
|
private |
pass_vector_3d does a halo update for a pair of three-dimensional arrays representing the compontents of a three-dimensional horizontal vector.
[in,out] | u_cmpt | The nominal zonal (u) component of the vector pair which is having its halos points exchanged. |
[in,out] | v_cmpt | The nominal meridional (v) component of the vector pair which is having its halos points exchanged. |
[in,out] | mom_dom | The MOM_domain_type containing the mpp_domain needed to determine where data should be sent. |
[in] | direction | An optional integer indicating which directions the data should be sent. It is TO_ALL or the sum of any of TO_EAST, TO_WEST, TO_NORTH, and TO_SOUTH, possibly plus SCALAR_PAIR if these are paired non-directional scalars discretized at the typical vector component locations. For example, TO_EAST sends the data to the processor to the east, so the halos on the western side are filled. TO_ALL is the default if omitted. |
[in] | stagger | An optional flag, which may be one of A_GRID, BGRID_NE, or CGRID_NE, indicating where the two components of the vector are discretized. Omitting stagger is the same as setting it to CGRID_NE. |
[in] | complete | An optional argument indicating whether the halo updates should be completed before progress resumes. Omitting complete is the same as setting complete to .true. |
[in] | halo | The size of the halo to update - the full halo by default. |
[in] | clock | The handle for a cpu time clock that should be started then stopped to time this routine. |
Definition at line 610 of file MOM_domains.F90.
References to_all.
|
private |
pass_vector_complete_2d completes a halo update for a pair of two-dimensional arrays representing the compontents of a two-dimensional horizontal vector.
[in] | id_update | The integer id of this update which has been returned from a previous call to pass_var_start. |
[in,out] | u_cmpt | The nominal zonal (u) component of the vector pair which is having its halos points exchanged. |
[in,out] | v_cmpt | The nominal meridional (v) component of the vector pair which is having its halos points exchanged. |
[in,out] | mom_dom | The MOM_domain_type containing the mpp_domain needed to determine where data should be sent. |
[in] | direction | An optional integer indicating which directions the data should be sent. It is TO_ALL or the sum of any of TO_EAST, TO_WEST, TO_NORTH, and TO_SOUTH, possibly plus SCALAR_PAIR if these are paired non-directional scalars discretized at the typical vector component locations. For example, TO_EAST sends the data to the processor to the east, so the halos on the western side are filled. TO_ALL is the default if omitted. |
[in] | stagger | An optional flag, which may be one of A_GRID, BGRID_NE, or CGRID_NE, indicating where the two components of the vector are discretized. Omitting stagger is the same as setting it to CGRID_NE. |
[in] | halo | The size of the halo to update - the full halo by default. |
[in] | clock | The handle for a cpu time clock that should be started then stopped to time this routine. |
Definition at line 781 of file MOM_domains.F90.
References to_all.
|
private |
pass_vector_complete_3d completes a halo update for a pair of three-dimensional arrays representing the compontents of a three-dimensional horizontal vector.
[in] | id_update | The integer id of this update which has been returned from a previous call to pass_var_start. |
[in,out] | u_cmpt | The nominal zonal (u) component of the vector pair which is having its halos points exchanged. |
[in,out] | v_cmpt | The nominal meridional (v) component of the vector pair which is having its halos points exchanged. |
[in,out] | mom_dom | The MOM_domain_type containing the mpp_domain needed to determine where data should be sent. |
[in] | direction | An optional integer indicating which directions the data should be sent. It is TO_ALL or the sum of any of TO_EAST, TO_WEST, TO_NORTH, and TO_SOUTH, possibly plus SCALAR_PAIR if these are paired non-directional scalars discretized at the typical vector component locations. For example, TO_EAST sends the data to the processor to the east, so the halos on the western side are filled. TO_ALL is the default if omitted. |
[in] | stagger | An optional flag, which may be one of A_GRID, BGRID_NE, or CGRID_NE, indicating where the two components of the vector are discretized. Omitting stagger is the same as setting it to CGRID_NE. |
[in] | halo | The size of the halo to update - the full halo by default. |
[in] | clock | The handle for a cpu time clock that should be started then stopped to time this routine. |
Definition at line 835 of file MOM_domains.F90.
References to_all.
|
private |
pass_vector_start_2d starts a halo update for a pair of two-dimensional arrays representing the compontents of a two-dimensional horizontal vector.
[in,out] | u_cmpt | The nominal zonal (u) component of the vector pair which is having its halos points exchanged. |
[in,out] | v_cmpt | The nominal meridional (v) component of the vector pair which is having its halos points exchanged. |
[in,out] | mom_dom | The MOM_domain_type containing the mpp_domain needed to determine where data should be sent. |
[in] | direction | An optional integer indicating which directions the data should be sent. It is TO_ALL or the sum of any of TO_EAST, TO_WEST, TO_NORTH, and TO_SOUTH, possibly plus SCALAR_PAIR if these are paired non-directional scalars discretized at the typical vector component locations. For example, TO_EAST sends the data to the processor to the east, so the halos on the western side are filled. TO_ALL is the default if omitted. |
[in] | stagger | An optional flag, which may be one of A_GRID, BGRID_NE, or CGRID_NE, indicating where the two components of the vector are discretized. Omitting stagger is the same as setting it to CGRID_NE. |
[in] | complete | An optional argument indicating whether the halo updates should be completed before progress resumes. Omitting complete is the same as setting complete to .true. |
[in] | halo | The size of the halo to update - the full halo by default. |
[in] | clock | The handle for a cpu time clock that should be started then stopped to time this routine. |
Definition at line 668 of file MOM_domains.F90.
References to_all.
|
private |
pass_vector_start_3d starts a halo update for a pair of three-dimensional arrays representing the compontents of a three-dimensional horizontal vector.
[in,out] | u_cmpt | The nominal zonal (u) component of the vector pair which is having its halos points exchanged. |
[in,out] | v_cmpt | The nominal meridional (v) component of the vector pair which is having its halos points exchanged. |
[in,out] | mom_dom | The MOM_domain_type containing the mpp_domain needed to determine where data should be sent. |
[in] | direction | An optional integer indicating which directions the data should be sent. It is TO_ALL or the sum of any of TO_EAST, TO_WEST, TO_NORTH, and TO_SOUTH, possibly plus SCALAR_PAIR if these are paired non-directional scalars discretized at the typical vector component locations. For example, TO_EAST sends the data to the processor to the east, so the halos on the western side are filled. TO_ALL is the default if omitted. |
[in] | stagger | An optional flag, which may be one of A_GRID, BGRID_NE, or CGRID_NE, indicating where the two components of the vector are discretized. Omitting stagger is the same as setting it to CGRID_NE. |
[in] | complete | An optional argument indicating whether the halo updates should be completed before progress resumes. Omitting complete is the same as setting complete to .true. |
[in] | halo | The size of the halo to update - the full halo by default. |
[in] | clock | The handle for a cpu time clock that should be started then stopped to time this routine. |
Definition at line 725 of file MOM_domains.F90.
References to_all.
subroutine, public mom_domains::start_group_pass | ( | type(group_pass_type), intent(inout) | group, |
type(mom_domain_type), intent(inout) | MOM_dom, | ||
integer, intent(in), optional | clock | ||
) |
start_group_pass starts out a group halo update.
[in,out] | group | The data type that store information for group update. This data will be used in do_group_pass. |
[in,out] | mom_dom | The MOM_domain_type containing the mpp_domain needed to determine where data should be sent. |
[in] | clock | The handle for a cpu time clock that should be started then stopped to time this routine. |
Definition at line 1110 of file MOM_domains.F90.
Referenced by mom_barotropic::btstep(), mom_internal_tides::propagate_int_tide(), mom::step_mom(), and mom_dynamics_split_rk2::step_mom_dyn_split_rk2().
integer, parameter, public mom_domains::to_all = To_East + To_West + To_North + To_South |
A flag for passing in all directions.
Definition at line 132 of file MOM_domains.F90.
Referenced by mom_ice_shelf::add_shelf_flux(), mom_ice_shelf::add_shelf_forces(), mom_debugging::check_redundant_sb2d(), mom_debugging::chksum_vec_a2d(), mom_debugging::chksum_vec_a3d(), mom_debugging::chksum_vec_b2d(), mom_debugging::chksum_vec_b3d(), mom_debugging::chksum_vec_c2d(), mom_debugging::chksum_vec_c3d(), mom_transcribe_grid::copy_dyngrid_to_mom_grid(), mom_transcribe_grid::copy_mom_grid_to_dyngrid(), create_var_group_pass_2d(), create_var_group_pass_3d(), create_vector_group_pass_2d(), create_vector_group_pass_3d(), fill_vector_symmetric_edges_2d(), mom_ice_shelf_dynamics::ice_shelf_solve_inner(), mom_marine_ice::iceberg_forces(), mom_ice_shelf_dynamics::initialize_ice_shelf_dyn(), pass_var_2d(), pass_var_3d(), pass_var_complete_2d(), pass_var_complete_3d(), pass_var_start_2d(), pass_var_start_3d(), pass_vector_2d(), pass_vector_3d(), pass_vector_complete_2d(), pass_vector_complete_3d(), pass_vector_start_2d(), pass_vector_start_3d(), mom_shared_initialization::reset_face_lengths_file(), scm_cvmix_tests::scm_cvmix_tests_wind_forcing(), mom_wave_interface::surface_bands_by_data_override(), and mom_ice_shelf_dynamics::update_velocity_masks().