Namespaces | Functions | Variables
multi_domain.cc File Reference

Go to the source code of this file.

Namespaces

 oomph
 //////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
 
 oomph::Multi_domain_functions
 

Functions

void oomph::Multi_domain_functions::send_and_receive_missing_zetas (Problem *problem_pt)
 Send the zeta coordinates from the current process to the next process; receive from the previous process. More...
 
void oomph::Multi_domain_functions::send_and_receive_located_info (int &iproc, Mesh *const &external_mesh_pt, Problem *problem_pt)
 Send location information from current process; Received location information from (current process + iproc) modulo (nproc) More...
 
void oomph::Multi_domain_functions::add_external_haloed_node_to_storage (int &iproc, Node *nod_pt, Problem *problem_pt, Mesh *const &external_mesh_pt, int &n_cont_inter_values)
 Helper function to add external haloed nodes, including any masters. More...
 
void oomph::Multi_domain_functions::recursively_add_masters_of_external_haloed_node (int &iproc, Node *nod_pt, Problem *problem_pt, Mesh *const &external_mesh_pt, int &n_cont_inter_values)
 Recursively add any master nodes (and their master nodes etc) of external nodes. More...
 
void oomph::Multi_domain_functions::add_external_haloed_node_helper (int &iproc, Node *nod_pt, Problem *problem_pt, Mesh *const &external_mesh_pt, int &n_cont_inter_values)
 Helper to add external haloed node that is not a master. More...
 
void oomph::Multi_domain_functions::add_external_haloed_master_node_helper (int &iproc, Node *master_nod_pt, Problem *problem_pt, Mesh *const &external_mesh_pt, int &n_cont_inter_values)
 Helper function to add external haloed node that is a master. More...
 
void oomph::Multi_domain_functions::get_required_nodal_information_helper (int &iproc, Node *nod_pt, Problem *problem_pt, Mesh *const &external_mesh_pt, int &n_cont_inter_values)
 Helper function to get the required nodal information from an external haloed node so that a fully-functional external halo node (and therefore element) can be created on the receiving process. More...
 
void oomph::Multi_domain_functions::get_required_master_nodal_information_helper (int &iproc, Node *master_nod_pt, Problem *problem_pt, Mesh *const &external_mesh_pt, int &n_cont_inter_values)
 Helper function to get the required master nodal information from an external haloed master node so that a fully-functional external halo master node (and possible element) can be created on the receiving process. More...
 
void oomph::Multi_domain_functions::add_external_halo_node_helper (Node *&new_nod_pt, Mesh *const &external_mesh_pt, unsigned &loc_p, unsigned &node_index, FiniteElement *const &new_el_pt, int &n_cont_inter_values, Problem *problem_pt)
 Helper functiono to add external halo node that is not a master. More...
 
void oomph::Multi_domain_functions::construct_new_external_halo_node_helper (Node *&new_nod_pt, unsigned &loc_p, unsigned &node_index, FiniteElement *const &new_el_pt, Mesh *const &external_mesh_pt, Problem *problem_pt)
 Helper function which constructs a new external halo node (on new element) with the required information sent from the haloed process. More...
 
void oomph::Multi_domain_functions::locate_zeta_for_missing_coordinates (int &iproc, Mesh *const &external_mesh_pt, Problem *problem_pt, Vector< MeshAsGeomObject * > &mesh_geom_obj_pt)
 Locate zeta for current set of missing coordinates; vector-based version. More...
 
void oomph::Multi_domain_functions::locate_zeta_for_local_coordinates (const Vector< Mesh * > &mesh_pt, Mesh *const &external_mesh_pt, Vector< MeshAsGeomObject * > &mesh_geom_obj_pt, const unsigned &interaction_index)
 locate zeta for current set of "local" coordinates vector-based version More...
 
void oomph::Multi_domain_functions::get_dim_helper (Problem *problem_pt, Mesh *const &mesh_pt, Mesh *const &external_mesh_pt)
 Helper function that computes the dimension of the elements within each of the specified meshes (and checks they are the same). Stores result in Dim. More...
 
void oomph::Multi_domain_functions::clean_up ()
 Helper function that clears all the information used during the external storage creation. More...
 
bool oomph::Multi_domain_functions::first_closer_than_second (const std::pair< FiniteElement *, Vector< double >> &p1, const std::pair< FiniteElement *, Vector< double >> &p2)
 Comparison function for sorting entries in bin: Returns true if point identified by p1 (comprising pointer to finite element and vector of local coordinates within that element) is closer to Zeta_coords_for_further_away_comparison than p2. More...
 

Variables

std::ofstream oomph::Multi_domain_functions::Doc_boundary_coordinate_file
 Output file to document the boundary coordinate along the mesh boundary of the bulk mesh during call to setup_bulk_elements_adjacent_to_face_mesh(...) More...
 
bool oomph::Multi_domain_functions::Accept_failed_locate_zeta_in_setup_multi_domain_interaction = false
 Boolean to indicate that failure in setup multi domain functions is acceptable; defaults to false. If set to true external element pointers are set to null for those elements for which external elements couldn't be located. More...
 
unsigned oomph::Multi_domain_functions::Dim
 Dimension of zeta tuples (set by get_dim_helper) – needed because we store the scalar coordinates in flat-packed form. More...
 
Vector< Vector< unsigned > > oomph::Multi_domain_functions::External_element_located
 Lookup scheme for whether a local element's integration point has had an external element assigned to it – essentially boolean. External_element_located[e][ipt] = {0,1} if external element for ipt-th integration in local element e {has not, has} been found. Used locally to ensure that we're not searching for the same elements over and over again when we go around the spirals. More...
 
Vector< double > oomph::Multi_domain_functions::Flat_packed_zetas_not_found_locally
 Vector of flat-packed zeta coordinates for which the external element could not be found during current local search. These will be sent to the next processor in the ring-like parallel search. The zeta coordinates come in groups of Dim (scalar) coordinates. More...
 
Vector< double > oomph::Multi_domain_functions::Received_flat_packed_zetas_to_be_found
 Vector of flat-packed zeta coordinates for which the external element could not be found on another processor and for which we're currently searching here. Whatever can't be found here, gets written into Flat_packed_zetas_not_found_locally and then passed on to the next processor during the ring-like parallel search. The zeta coordinates come in groups of Dim (scalar) coordinates. More...
 
Vector< int > oomph::Multi_domain_functions::Proc_id_plus_one_of_external_element
 Proc_id_plus_one_of_external_element[i] contains the processor id (plus one) of the processor on which the i-th zeta coordinate tuple received from elsewhere (in the order in which these are stored in Received_flat_packed_zetas_to_be_found) was located; it's zero if it wasn't found during the current stage of the ring-like parallel search. More...
 
Vector< unsigned > oomph::Multi_domain_functions::Located_element_status
 Vector to indicate (to another processor) whether a located element (that will have to represented as an external halo element on that processor) should be newly created on that processor (2), already exists on that processor (1), or is not on the current processor either (0). More...
 
Vector< double > oomph::Multi_domain_functions::Flat_packed_located_coordinates
 Vector of flat-packed local coordinates for zeta tuples that have been located. More...
 
Vector< double > oomph::Multi_domain_functions::Flat_packed_doubles
 Vector of flat-packed doubles to be communicated with other processors. More...
 
unsigned oomph::Multi_domain_functions::Counter_for_flat_packed_doubles
 Counter used when processing vector of flat-packed doubles – this is really "private" data, declared here to avoid having to pass it (and the associated array) between the various helper functions. More...
 
Vector< unsigned > oomph::Multi_domain_functions::Flat_packed_unsigneds
 Vector of flat-packed unsigneds to be communicated with other processors – this is really "private" data, declared here to avoid having to pass the array between the various helper functions. More...
 
Vector< std::string > oomph::Multi_domain_functions::Flat_packed_unsigneds_string
 
unsigned oomph::Multi_domain_functions::Counter_for_flat_packed_unsigneds
 Counter used when processing vector of flat-packed unsigneds – this is really "private" data, declared here to avoid having to pass it (and the associated array) between the various helper functions. More...
 
bool oomph::Multi_domain_functions::Use_bulk_element_as_external = false
 Boolean to indicate when to use the bulk element as the external element. Defaults to false, you must have set up FaceElements properly first in order for it to work. More...
 
bool oomph::Multi_domain_functions::Allow_use_of_halo_elements_as_external_elements = true
 Boolean to indicate if we're allowed to use halo elements as external elements. Can drastically reduce the number of external halo elements – currently not aware of any problems therefore set to true by default but retention of this flag allows easy return to previous implementation. More...
 
bool oomph::Multi_domain_functions::Allow_use_of_halo_elements_as_external_elements_for_projection = true
 Indicate whether we are allowed to use halo elements as external elements for projection, possibly only required in parallel unstructured mesh generation during the projection stage. Default set to true. More...
 
bool oomph::Multi_domain_functions::Doc_timings = false
 Boolean to indicate whether to doc timings or not. More...
 
bool oomph::Multi_domain_functions::Doc_stats = false
 Boolean to indicate whether to output basic info during setup_multi_domain_interaction() routines. More...
 
bool oomph::Multi_domain_functions::Doc_full_stats = false
 Boolean to indicate whether to output further info during setup_multi_domain_interaction() routines. More...
 
Vector< double > oomph::Multi_domain_functions::Zeta_coords_for_further_away_comparison
 Vector of zeta coordinates that we're currently trying to locate; used in sorting of bin entries in further_away() comparison function. More...