41 std::ifstream mesh_file(mesh_file_name.c_str(), std::ios_base::in);
51 for (
unsigned i = 0;
i < n_node;
i++)
53 mesh_file >> x_node[
i];
54 mesh_file >> y_node[
i];
55 mesh_file >> vertinfo[
i];
71 for (
unsigned i = 0;
i < n_vx;
i++)
73 mesh_file >> dummy_node_code;
74 mesh_file >> icurv[
i];
75 mesh_file >> dummy_ucurv;
79 unsigned n_local_node;
80 mesh_file >> n_local_node;
84 mesh_file >> n_element;
98 for (
unsigned i = 0;
i < n_element;
i++)
100 for (
unsigned j = 0; j < n_local_node; j++)
102 mesh_file >> global_node[k];
111 for (
unsigned i = 0;
i < n_element;
i++)
113 for (
unsigned j = 0; j < n_local_node; j++)
115 mesh_file >> edgeinfo[l];
123 std::vector<bool> done(n_node);
124 for (
unsigned i = 0;
i < n_node;
i++)
140 std::ifstream curve_file(curve_file_name.c_str(), std::ios_base::in);
144 curve_file >> n_curv;
156 for (
unsigned i = 0;
i < n_curv;
i++)
163 for (
unsigned j = 1; j < 4; j++)
165 curve_file >> curv[
i][j];
172 for (
unsigned j = 1; j < 5; j++)
174 curve_file >> curv[
i][j];
179 std::ostringstream error_stream;
180 error_stream <<
"Current we can only process curves of\n"
181 <<
"type 1 (straight lines) and 2 (circular arcs\n"
182 <<
"You've specified: type " << type << std::endl;
185 error_stream.str(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION);
193 for (
unsigned i = 0;
i < n_curv;
i++)
200 oomph_info <<
"The number of boundaries is " << d << std::endl;
219 boundary_of_node.resize(n_node);
221 for (
unsigned i = 0;
i < n_node;
i++)
224 boundary_of_node[
i].resize(2);
225 boundary_of_node[
i][0] = -1;
226 boundary_of_node[
i][1] = -1;
227 if (vertinfo[
i] == 2)
229 for (
unsigned j = 0; j < n_curv; j++)
231 for (
unsigned m = 2; m < curv[j].size(); m++)
234 static_cast<int>(
i + 1))
236 boundary_of_node[
i][n] = curv[j][1];
242 if (vertinfo[
i] > 20)
245 a = (vertinfo[
i]) / 20;
248 boundary_of_node[
i][0] =
259 for (
unsigned e = 0;
e < n_element;
e++)
265 for (
unsigned j = 0; j < 2; j++)
267 c = global_node[count];
268 if (done[c - 1] ==
false)
272 if ((d > 0) && ((boundary_of_node[c - 1][0] > 0) ||
273 (boundary_of_node[c - 1][1] > 0)))
278 if (boundary_of_node[c - 1][0] > 0)
282 if (boundary_of_node[c - 1][1] > 0)
293 Node_pt[c - 1]->x(0) = x_node[c - 1];
294 Node_pt[c - 1]->x(1) = y_node[c - 1];
304 c = global_node[count + 1];
309 if ((d > 0) && ((boundary_of_node[c - 1][0] > 0) ||
310 (boundary_of_node[c - 1][1] > 0)))
315 if (boundary_of_node[c - 1][0] > 0)
319 if (boundary_of_node[c - 1][1] > 0)
330 Node_pt[c - 1]->x(0) = x_node[c - 1];
331 Node_pt[c - 1]->x(1) = y_node[c - 1];
341 c = global_node[count - 1];
346 if ((d > 0) && ((boundary_of_node[c - 1][0] > 0) ||
347 (boundary_of_node[c - 1][1] > 0)))
352 if (boundary_of_node[c - 1][0] > 0)
356 if (boundary_of_node[c - 1][1] > 0)
367 Node_pt[c - 1]->x(0) = x_node[c - 1];
368 Node_pt[c - 1]->x(1) = y_node[c - 1];
virtual Node * construct_node(const unsigned &n)
Construct the local node n and return a pointer to the newly created node object.
Node *& node_pt(const unsigned &n)
Return a pointer to the local node n.
virtual Node * construct_boundary_node(const unsigned &n)
Construct the local node n as a boundary node; that is a node that MAY be placed on a mesh boundary a...
GeompackQuadScaffoldMesh()
Empty constructor.
void add_boundary_node(const unsigned &b, Node *const &node_pt)
Add a (pointer to) a node to the b-th boundary.
Vector< Node * > Node_pt
Vector of pointers to nodes.
FiniteElement * finite_element_pt(const unsigned &e) const
Upcast (downcast?) to FiniteElement (needed to access FiniteElement member functions).
void set_nboundary(const unsigned &nbound)
Set the number of boundaries in the mesh.
Vector< GeneralisedElement * > Element_pt
Vector of pointers to generalised elements.
An OomphLibError object which should be thrown when an run-time error is encountered....
std::string string(const unsigned &i)
Return the i-th string or "" if the relevant string hasn't been defined.
//////////////////////////////////////////////////////////////////// ////////////////////////////////...
OomphInfo oomph_info
Single (global) instantiation of the OomphInfo object – this is used throughout the library as a "rep...