Namespaces | Enumerations | Functions
multi_domain.h File Reference

Go to the source code of this file.

Namespaces

 oomph
 
 oomph::Multi_domain_functions
 

Enumerations

enum  { oomph::Multi_domain_functions::New, oomph::Multi_domain_functions::Exists, oomph::Multi_domain_functions::Not_found }
 Enumerators for element status in location procedure. More...
 

Functions

template<class BULK_ELEMENT , unsigned DIM>
void oomph::Multi_domain_functions::setup_bulk_elements_adjacent_to_face_mesh (Problem *problem_pt, Vector< unsigned > &boundary_in_bulk_mesh, Mesh *const &bulk_mesh_pt, Vector< Mesh * > &face_mesh_pt, const unsigned &interaction=0)
 Identify the FaceElements (stored in the mesh pointed to by face_mesh_pt) that are adjacent to the bulk elements next to the boundary_in_bulk_mesh -th boundary of the mesh pointed to by bulk_mesh_pt. The FaceElements must be derived from the ElementWithExternalElement base class and the adjacent bulk elements are stored as their external elements. More...
 
template<class BULK_ELEMENT , unsigned DIM>
void oomph::Multi_domain_functions::setup_bulk_elements_adjacent_to_face_mesh (Problem *problem_pt, const unsigned &boundary_in_bulk_mesh, Mesh *const &bulk_mesh_pt, Mesh *const &face_mesh_pt, const unsigned &interaction=0)
 Identify the FaceElements (stored in the mesh pointed to by face_mesh_pt) that are adjacent to the bulk elements next to the boundary_in_bulk_mesh -th boundary of the mesh pointed to by bulk_mesh_pt. The FaceElements must be derived from the ElementWithExternalElement base class and the adjacent bulk elements are stored as their external elements. More...
 
template<class ELEMENT_0 , class ELEMENT_1 >
void oomph::Multi_domain_functions::setup_multi_domain_interactions (Problem *problem_pt, Mesh *const &first_mesh_pt, Mesh *const &second_mesh_pt, const unsigned &first_interaction=0, const unsigned &second_interaction=0)
 Set up the two-way multi-domain interactions for the problem pointed to by problem_pt. Use this for cases where first_mesh_pt and second_mesh_pt occupy the same physical space and are populated by ELEMENT_0 and ELEMENT_1 respectively, and are combined to solve a single problem. The elements in two meshes interact both ways the elements in each mesh act as "external elements" for the elements in the "other" mesh. The interaction indices allow the specification of which interaction we're setting up in the two meshes. They default to zero, which is appropriate if there's only a single interaction. More...
 
template<class EXT_ELEMENT >
void oomph::Multi_domain_functions::setup_multi_domain_interaction (Problem *problem_pt, Mesh *const &mesh_pt, Mesh *const &external_mesh_pt, const unsigned &interaction_index=0)
 Function to set up the one-way multi-domain interaction for problems where the meshes pointed to by mesh_pt and external_mesh_pt occupy the same physical space, and the elements in external_mesh_pt act as "external elements" for the ElementWithExternalElements in mesh_pt (but not vice versa): More...
 
template<class EXT_ELEMENT , class FACE_ELEMENT_GEOM_OBJECT >
void oomph::Multi_domain_functions::setup_multi_domain_interaction (Problem *problem_pt, Mesh *const &mesh_pt, Mesh *const &external_mesh_pt, Mesh *const &external_face_mesh_pt, const unsigned &interaction_index=0)
 Function to set up the one-way multi-domain interaction for FSI-like problems. More...
 
template<class EXT_ELEMENT , class FACE_ELEMENT_GEOM_OBJECT >
void oomph::Multi_domain_functions::setup_multi_domain_interaction (Problem *problem_pt, const Vector< Mesh * > &mesh_pt, Mesh *const &external_mesh_pt, const Vector< Mesh * > &external_face_mesh_pt, const unsigned &interaction_index=0)
 Function to set up the one-way multi-domain interaction for FSI-like problems. More...
 
template<class EXT_ELEMENT , class GEOM_OBJECT >
void oomph::Multi_domain_functions::aux_setup_multi_domain_interaction (Problem *problem_pt, Mesh *const &mesh_pt, Mesh *const &external_mesh_pt, const unsigned &interaction_index, Mesh *const &external_face_mesh_pt=0)
 Auxiliary helper function. More...
 
template<class EXT_ELEMENT , class GEOM_OBJECT >
void oomph::Multi_domain_functions::aux_setup_multi_domain_interaction (Problem *problem_pt, const Vector< Mesh * > &mesh_pt, Mesh *const &external_mesh_pt, const unsigned &interaction_index, const Vector< Mesh * > &external_face_mesh_pt)
 Auxiliary helper function. More...
 
void oomph::Multi_domain_functions::locate_zeta_for_local_coordinates (Mesh *const &mesh_pt, Mesh *const &external_mesh_pt, MeshAsGeomObject *&mesh_geom_obj_pt, const unsigned &interaction_index)
 locate zeta for current set of "local" coordinates 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)
 Helper function to locate "local" zeta coordinates This is the vector-based version which operates simultaenously on the meshes contained in the Vectors. More...
 
void oomph::Multi_domain_functions::send_and_receive_missing_zetas (Problem *problem_pt)
 Helper function to send any "missing" zeta coordinates to the next process and receive any coordinates from previous process. More...
 
void oomph::Multi_domain_functions::locate_zeta_for_missing_coordinates (int &iproc, Mesh *const &external_mesh_pt, Problem *problem_pt, MeshAsGeomObject *&mesh_geom_obj_pt)
 Locate zeta for current set of missing coordinates. 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::send_and_receive_located_info (int &iproc, Mesh *const &external_mesh_pt, Problem *problem_pt)
 Helper function to send back any located information. More...
 
template<class EXT_ELEMENT >
void oomph::Multi_domain_functions::create_external_halo_elements (int &iproc, Mesh *const &mesh_pt, Mesh *const &external_mesh_pt, Problem *problem_pt, const unsigned &interaction_index)
 Helper function to create external (halo) elements on the loop process based on the info received in send_and_received_located_info. More...
 
template<class EXT_ELEMENT >
void oomph::Multi_domain_functions::create_external_halo_elements (int &iproc, const Vector< Mesh * > &mesh_pt, Mesh *const &external_mesh_pt, Problem *problem_pt, const unsigned &interaction_index)
 Create external (halo) elements on the loop process based on the information received from each locate_zeta call on other processes This is the vector-based function which operates simultaneously on the meshes contained in the vectors. 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 haloed 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 proc. More...
 
template<class EXT_ELEMENT >
void oomph::Multi_domain_functions::add_external_halo_node_to_storage (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 function to add external halo nodes, including any masters, based on information received from the haloed process. More...
 
template<class EXT_ELEMENT >
void oomph::Multi_domain_functions::recursively_add_masters_of_external_halo_node_to_storage (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)
 Recursively add masters of external halo nodes (and their masters, etc) based on information received from the haloed 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...
 
template<class EXT_ELEMENT >
void oomph::Multi_domain_functions::add_external_halo_master_node_helper (Node *&new_master_nod_pt, Node *&new_nod_pt, Mesh *const &external_mesh_pt, unsigned &loc_p, int &n_cont_inter_values, Problem *problem_pt)
 Helper function to add external halo node that is 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 an element) with the information sent from the haloed process. More...
 
template<class EXT_ELEMENT >
void oomph::Multi_domain_functions::construct_new_external_halo_master_node_helper (Node *&new_master_nod_pt, Node *&nod_pt, unsigned &loc_p, Mesh *const &external_mesh_pt, Problem *problem_pt)
 Helper function which constructs a new external halo master node with the information sent from the haloed process. 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 intermediate information used during the external storage creation at the end of the procedure. 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...