62 ifstream* input_file_pt=
new
63 ifstream(
"short_coarse_mesh_files/boundary_enumeration.dat");
68 oomph_info <<
"ERROR while trying to open boundary enumeration file "
73 getline(*input_file_pt,input_string,
' ');
74 unsigned fluid_fsi_lo=atoi(input_string.c_str());
75 getline(*input_file_pt,input_string,
'#');
76 unsigned fluid_fsi_hi=atoi(input_string.c_str());
77 input_file_pt->ignore(80,
'\n');
79 getline(*input_file_pt,input_string,
' ');
81 getline(*input_file_pt,input_string,
'#');
83 input_file_pt->ignore(80,
'\n');
85 getline(*input_file_pt,input_string,
' ');
87 input_file_pt->ignore(80,
'\n');
88 getline(*input_file_pt,input_string,
' ');
89 getline(*input_file_pt,input_string,
'#');
91 input_file_pt->ignore(80,
'\n');
93 getline(*input_file_pt,input_string,
' ');
94 unsigned solid_fsi_lo=atoi(input_string.c_str());
95 getline(*input_file_pt,input_string,
'#');
96 unsigned solid_fsi_hi=atoi(input_string.c_str());
97 input_file_pt->ignore(80,
'\n');
99 getline(*input_file_pt,input_string,
' ');
101 input_file_pt->ignore(80,
'\n');
102 input_file_pt->ignore(80,
'\n');
103 getline(*input_file_pt,input_string,
' ');
104 getline(*input_file_pt,input_string,
'#');
106 input_file_pt->ignore(80,
'\n');
108 getline(*input_file_pt,input_string,
' ');
109 unsigned solid_outer_lo=atoi(input_string.c_str());
110 getline(*input_file_pt,input_string,
'#');
111 unsigned solid_outer_hi=atoi(input_string.c_str());
112 input_file_pt->ignore(80,
'\n');
114 delete input_file_pt;
123 unsigned nfluid_fsi=fluid_fsi_hi-fluid_fsi_lo+1;
124 fluid_fsi_boundary_id.resize(nfluid_fsi);
125 for(
unsigned i=0;
i<nfluid_fsi;
i++)
127 fluid_fsi_boundary_id[
i]=fluid_fsi_lo+
i;
131 unsigned nsolid_fsi=solid_fsi_hi-solid_fsi_lo+1;
132 solid_fsi_boundary_id.resize(nsolid_fsi);
133 for(
unsigned i=0;
i<nsolid_fsi;
i++)
135 solid_fsi_boundary_id[
i]=solid_fsi_lo+
i;
139 unsigned nsolid_outer=solid_outer_hi-solid_outer_lo+1;
140 solid_outer_boundary_id.resize(nsolid_outer);
141 for(
unsigned i=0;
i<nsolid_outer;
i++)
143 solid_outer_boundary_id[
i]=solid_outer_lo+
i;
148 string node_file_name;
149 string element_file_name;
150 string face_file_name;
151 bool split_corner_elements;
158 for (
unsigned do_solid=0;do_solid<2;do_solid++)
168 doc_info.
set_directory(
"RESLT_solid_with_linear_elasticity");
171 node_file_name=
"short_coarse_mesh_files/solid.1.node";
172 element_file_name=
"short_coarse_mesh_files/solid.1.ele";
173 face_file_name=
"short_coarse_mesh_files/solid.1.face";
174 split_corner_elements=
true;
178 split_corner_elements);
186 doc_info.
set_directory(
"RESLT_fluid_with_linear_elasticity");
189 node_file_name=
"short_coarse_mesh_files/fluid.1.node";
190 element_file_name=
"short_coarse_mesh_files/fluid.1.ele";
191 face_file_name=
"short_coarse_mesh_files/fluid.1.face";
192 split_corner_elements=
true;
197 split_corner_elements,
207 bool mesh_has_inverted_elements;
209 cout <<
"Before quadratic snapping mesh does ";
210 if (!mesh_has_inverted_elements) cout <<
"not ";
211 cout <<
"have inverted elements. \n";
218 Orig_mesh_pt->template snap_to_quadratic_surface<TPVDElement<3,3> >(
219 solid_fsi_boundary_id,
220 "short_coarse_mesh_files/quadratic_fsi_boundary.dat",
225 Orig_mesh_pt->template snap_to_quadratic_surface<TPVDElement<3,3> >(
226 solid_outer_boundary_id,
227 "short_coarse_mesh_files/quadratic_outer_solid_boundary.dat",
234 Orig_mesh_pt->template snap_to_quadratic_surface<TPVDElement<3,3> >(
235 fluid_fsi_boundary_id,
236 "short_coarse_mesh_files/quadratic_fsi_boundary.dat",
245 std::ofstream inverted_mesh_elements;
247 filename+=
"/inverted_elements_after_snap.dat";
248 inverted_mesh_elements.open(
filename.c_str());
250 inverted_mesh_elements);
251 inverted_mesh_elements.close();
252 cout <<
"After quadratic snapping mesh does ";
253 if (!mesh_has_inverted_elements) cout <<
"not ";
254 cout <<
"have inverted elements. \n";
264 std::set<Node*> pinned_nodes;
270 unsigned nbound_pinned=solid_fsi_boundary_id.size();
271 for(
unsigned i=0;
i<nbound_pinned;
i++)
274 unsigned b = solid_fsi_boundary_id[
i];
276 for (
unsigned inod=0;inod<num_nod;inod++)
284 nbound_pinned=solid_outer_boundary_id.size();
285 for(
unsigned i=0;
i<nbound_pinned;
i++)
288 unsigned b = solid_outer_boundary_id[
i];
290 for (
unsigned inod=0;inod<num_nod;inod++)
301 unsigned nbound_pinned=fluid_fsi_boundary_id.size();
302 for(
unsigned i=0;
i<nbound_pinned;
i++)
305 unsigned b = fluid_fsi_boundary_id[
i];
307 for (
unsigned inod=0;inod<num_nod;inod++)
324 filename+=
"/inverted_elements_after_smooth.dat";
325 inverted_mesh_elements.open(
filename.c_str());
327 inverted_mesh_elements);
328 inverted_mesh_elements.close();
329 cout <<
"After smoothing mesh does ";
330 if (!mesh_has_inverted_elements) cout <<
"not ";
331 cout <<
"have inverted elements. \n";
int i
Definition: BiCGSTAB_step_by_step.cpp:9
Scalar * b
Definition: benchVecAdd.cpp:17
Definition: oomph_utilities.h:499
std::string directory() const
Output directory.
Definition: oomph_utilities.h:524
void set_directory(const std::string &directory)
Definition: oomph_utilities.cc:298
Definition: mesh_smooth.h:524
unsigned long nboundary_node(const unsigned &ibound) const
Return number of nodes on a particular boundary.
Definition: mesh.h:833
void check_inverted_elements(bool &mesh_has_inverted_elements, std::ofstream &inverted_element_file)
Definition: mesh.cc:870
void output(std::ostream &outfile)
Output for all elements.
Definition: mesh.cc:2027
SolidNode * boundary_node_pt(const unsigned &b, const unsigned &n)
Return n-th SolidNodes on b-th boundary.
Definition: mesh.h:2612
Definition: tetgen_mesh.template.h:741
string filename
Definition: MergeRestartFiles.py:39
std::string string(const unsigned &i)
Definition: oomph_definitions.cc:286
OomphInfo oomph_info
Definition: oomph_definitions.cc:319