10 #ifndef COMMON_LIBMESH_CODE_MESH_TABLES_H_
11 #define COMMON_LIBMESH_CODE_MESH_TABLES_H_
21 int& nb_of_domain_Idx_micro,
22 std::vector<int>& domain_Idx_micro,
23 std::vector<int>& domain_Idx_coupling
92 const libMesh::Parallel::Communicator& WorldComm,
93 const std::string& intersection_full_table_Filename,
94 const std::string& equivalence_table_A_Filename,
95 const std::string& equivalence_table_B_Filename,
96 std::vector<carl::IntersectionData>& intersection_full_table,
97 std::unordered_map<int,int>& equivalence_table_A_to_R_A,
98 std::unordered_map<int,int>& equivalence_table_B_to_R_B,
99 std::unordered_map<int,int>& equivalence_table_R_A_to_A,
100 std::unordered_map<int,int>& equivalence_table_R_B_to_B
104 std::string& intersection_table_I_Filename,
105 std::unordered_map<int,int>& mesh_restrict_ElemMap,
106 std::unordered_map<int,int>& mesh_micro_ElemMap,
107 std::unordered_map<int,int>& mesh_inter_ElemMap,
108 std::vector<std::pair<int,int> >& intersection_table_restrict_B,
109 std::unordered_multimap<int,int>& intersection_table_I
113 std::string& intersection_table_restrict_B_Filename,
114 std::string& intersection_table_I_Filename,
115 std::unordered_map<int,int>& mesh_restrict_ElemMap,
116 std::unordered_map<int,int>& mesh_micro_ElemMap,
117 std::unordered_map<int,int>& mesh_BIG_ElemMap,
118 std::unordered_map<int,int>& mesh_inter_ElemMap,
119 std::unordered_map<int,int>& equivalence_table_restrict_A,
120 std::vector<std::pair<int,int> >& intersection_table_restrict_B,
121 std::unordered_multimap<int,int>& intersection_table_I
125 const libMesh::Parallel::Communicator& WorldComm,
126 const std::string& equivalence_table_A_Filename,
127 const std::string& equivalence_table_B_Filename,
129 std::unordered_map<int,int>& equivalence_table_A_to_R_A,
130 std::unordered_map<int,int>& equivalence_table_B_to_R_B,
131 std::unordered_map<int,int>& equivalence_table_R_A_to_A,
132 std::unordered_map<int,int>& equivalence_table_R_B_to_B );
135 const std::unordered_map<
int,std::pair<int,int> >& full_intersection_pairs_map,
136 const std::unordered_map<int,int>& equivalence_table_A_to_R_A,
137 const std::unordered_map<int,int>& equivalence_table_B_to_R_B,
138 std::unordered_map<
int,std::pair<int,int> >& full_intersection_restricted_pairs_map);
141 const libMesh::Parallel::Communicator& WorldComm,
142 const std::string& intersection_full_table_Filename,
144 std::unordered_map<
int,std::pair<int,int> >& full_intersection_pairs_map,
145 std::unordered_map<int,int>& full_intersection_meshI_to_inter_map);
148 const libMesh::Parallel::Communicator& WorldComm,
149 const libMesh::Mesh& mesh_intersection,
150 const std::string& intersection_full_table_Filename,
151 const std::string& equivalence_table_A_Filename,
152 const std::string& equivalence_table_B_Filename,
154 const std::unordered_map<int,int>& equivalence_table_A_to_R_A,
155 const std::unordered_map<int,int>& equivalence_table_B_to_R_B,
157 std::unordered_map<
int,std::pair<int,int> >& full_intersection_pairs_map,
158 std::unordered_map<
int,std::pair<int,int> >& full_intersection_restricted_pairs_map,
159 std::unordered_map<int,int>& local_intersection_meshI_to_inter_map
163 const libMesh::Parallel::Communicator& WorldComm,
164 const std::string& intersection_local_table_Filename,
166 std::unordered_map<
int,std::pair<int,int> >& local_intersection_pairs_map,
167 std::unordered_map<int,int>& local_intersection_meshI_to_inter_map);
170 const libMesh::Parallel::Communicator& WorldComm,
171 const libMesh::Mesh& mesh_intersection,
172 const std::string& intersection_local_table_Filename,
173 const std::string& equivalence_table_A_Filename,
174 const std::string& equivalence_table_B_Filename,
176 const std::unordered_map<int,int>& equivalence_table_A_to_R_A,
177 const std::unordered_map<int,int>& equivalence_table_B_to_R_B,
179 std::unordered_map<
int,std::pair<int,int> >& local_intersection_pairs_map,
180 std::unordered_map<
int,std::pair<int,int> >& local_intersection_restricted_pairs_map,
181 std::unordered_map<int,int>& local_intersection_meshI_to_inter_map
185 const libMesh::Parallel::Communicator& WorldComm,
186 const std::string& intersection_global_table_Filename,
187 const std::unordered_map<int,int>& equivalence_table_system_to_mediator,
188 const std::unordered_map<int,int>& equivalence_table_mediator_to_system,
190 std::unordered_multimap<int,int>& inter_mediator_A,
191 std::unordered_multimap<int,int>& inter_mediator_B);
194 const libMesh::Parallel::Communicator& WorldComm,
195 libMesh::Mesh& mesh_input,
196 libMesh::Mesh& mesh_intersect,
197 std::unordered_map<
int,std::pair<int,int> >& local_intersection_pairs_map,
198 bool bUseSecond =
true);
void set_restricted_intersection_pairs_table(const std::unordered_map< int, std::pair< int, int > > &full_intersection_pairs_map, const std::unordered_map< int, int > &equivalence_table_A_to_R_A, const std::unordered_map< int, int > &equivalence_table_B_to_R_B, std::unordered_map< int, std::pair< int, int > > &full_intersection_restricted_pairs_map)
void generate_intersection_tables_full(std::string &equivalence_table_restrict_A_Filename, std::string &intersection_table_restrict_B_Filename, std::string &intersection_table_I_Filename, std::unordered_map< int, int > &mesh_restrict_ElemMap, std::unordered_map< int, int > &mesh_micro_ElemMap, std::unordered_map< int, int > &mesh_BIG_ElemMap, std::unordered_map< int, int > &mesh_inter_ElemMap, std::unordered_map< int, int > &equivalence_table_restrict_A, std::vector< std::pair< int, int > > &intersection_table_restrict_B, std::unordered_multimap< int, int > &intersection_table_I)
void set_local_intersection_tables(const libMesh::Parallel::Communicator &WorldComm, const libMesh::Mesh &mesh_intersection, const std::string &intersection_local_table_Filename, const std::string &equivalence_table_A_Filename, const std::string &equivalence_table_B_Filename, const std::unordered_map< int, int > &equivalence_table_A_to_R_A, const std::unordered_map< int, int > &equivalence_table_B_to_R_B, std::unordered_map< int, std::pair< int, int > > &local_intersection_pairs_map, std::unordered_map< int, std::pair< int, int > > &local_intersection_restricted_pairs_map, std::unordered_map< int, int > &local_intersection_meshI_to_inter_map)
void set_intersection_tables(const libMesh::Parallel::Communicator &WorldComm, const libMesh::Mesh &mesh_intersection, const std::string &intersection_full_table_Filename, const std::string &equivalence_table_A_Filename, const std::string &equivalence_table_B_Filename, const std::unordered_map< int, int > &equivalence_table_A_to_R_A, const std::unordered_map< int, int > &equivalence_table_B_to_R_B, std::unordered_map< int, std::pair< int, int > > &full_intersection_pairs_map, std::unordered_map< int, std::pair< int, int > > &full_intersection_restricted_pairs_map, std::unordered_map< int, int > &local_intersection_meshI_to_inter_map)
void set_weight_function_domain_idx(std::string &filename, int &domain_Idx_BIG, int &nb_of_domain_Idx_micro, std::vector< int > &domain_Idx_micro, std::vector< int > &domain_Idx_coupling)
void set_full_intersection_tables(const libMesh::Parallel::Communicator &WorldComm, const std::string &intersection_full_table_Filename, std::unordered_map< int, std::pair< int, int > > &full_intersection_pairs_map, std::unordered_map< int, int > &full_intersection_meshI_to_inter_map)
void build_intersection_and_restriction_tables(const libMesh::Parallel::Communicator &WorldComm, const std::string &intersection_full_table_Filename, const std::string &equivalence_table_A_Filename, const std::string &equivalence_table_B_Filename, std::vector< carl::IntersectionData > &intersection_full_table, std::unordered_map< int, int > &equivalence_table_A_to_R_A, std::unordered_map< int, int > &equivalence_table_B_to_R_B, std::unordered_map< int, int > &equivalence_table_R_A_to_A, std::unordered_map< int, int > &equivalence_table_R_B_to_B)
void set_equivalence_tables(const libMesh::Parallel::Communicator &WorldComm, const std::string &equivalence_table_A_Filename, const std::string &equivalence_table_B_Filename, std::unordered_map< int, int > &equivalence_table_A_to_R_A, std::unordered_map< int, int > &equivalence_table_B_to_R_B, std::unordered_map< int, int > &equivalence_table_R_A_to_A, std::unordered_map< int, int > &equivalence_table_R_B_to_B)
void repartition_system_meshes(const libMesh::Parallel::Communicator &WorldComm, libMesh::Mesh &mesh_input, libMesh::Mesh &mesh_intersect, std::unordered_map< int, std::pair< int, int > > &local_intersection_pairs_map, bool bUseSecond=true)
void read_local_intersection_tables(const libMesh::Parallel::Communicator &WorldComm, const std::string &intersection_local_table_Filename, std::unordered_map< int, std::pair< int, int > > &local_intersection_pairs_map, std::unordered_map< int, int > &local_intersection_meshI_to_inter_map)
void generate_intersection_tables_partial(std::string &intersection_table_restrict_B_Filename, std::string &intersection_table_I_Filename, std::unordered_map< int, int > &mesh_restrict_ElemMap, std::unordered_map< int, int > &mesh_micro_ElemMap, std::unordered_map< int, int > &mesh_inter_ElemMap, std::vector< std::pair< int, int > > &intersection_table_restrict_B, std::unordered_multimap< int, int > &intersection_table_I)
void set_global_mediator_system_intersection_lists(const libMesh::Parallel::Communicator &WorldComm, const std::string &intersection_global_table_Filename, const std::unordered_map< int, int > &equivalence_table_system_to_mediator, const std::unordered_map< int, int > &equivalence_table_mediator_to_system, std::unordered_multimap< int, int > &inter_mediator_A, std::unordered_multimap< int, int > &inter_mediator_B)