30 #ifndef OOMPH_ONE_D_MESH_TEMPLATE_CC 31 #define OOMPH_ONE_D_MESH_TEMPLATE_CC 46 template <
class ELEMENT>
59 Element_pt[0] =
new ELEMENT;
64 =
dynamic_cast<ELEMENT*
>(finite_element_pt(0))->nnode_1d();
67 Node_pt.resize(1+(n_node-1)*N);
70 unsigned node_count = 0;
73 const double xinit = Xmin;
76 const double el_length = Length/double(N);
79 Vector<double> s_fraction;
91 = finite_element_pt(0)->construct_boundary_node(0,time_stepper_pt);
94 node_pt(node_count)->x(0) = xinit;
97 add_boundary_node(0,Node_pt[node_count]);
106 for(
unsigned jnod=1;jnod<(n_node-1);jnod++)
110 = finite_element_pt(0)->construct_node(jnod,time_stepper_pt);
113 finite_element_pt(0)->local_fraction_of_node(jnod,s_fraction);
116 node_pt(node_count)->x(0) = xinit + el_length*s_fraction[0];
126 Node_pt[node_count] = finite_element_pt(0)
127 ->construct_boundary_node(n_node-1,time_stepper_pt);
130 node_pt(node_count)->x(0) = xinit + Length;
133 add_boundary_node(1,Node_pt[node_count]);
152 = finite_element_pt(0)->construct_boundary_node(0,time_stepper_pt);
155 node_pt(node_count)->x(0) = xinit;
158 add_boundary_node(0,Node_pt[node_count]);
167 for(
unsigned jnod=1;jnod<n_node;jnod++)
171 = finite_element_pt(0)->construct_node(jnod,time_stepper_pt);
174 finite_element_pt(0)->local_fraction_of_node(jnod,s_fraction);
177 node_pt(node_count)->x(0) = xinit + el_length*s_fraction[0];
188 for(
unsigned e=1;e<(N-1);e++)
191 Element_pt[e] =
new ELEMENT;
195 finite_element_pt(e)->node_pt(0)
196 = finite_element_pt(e-1)->node_pt((n_node-1));
199 for(
unsigned jnod=1;jnod<n_node;jnod++)
203 = finite_element_pt(e)->construct_node(jnod,time_stepper_pt);
206 finite_element_pt(e)->local_fraction_of_node(jnod,s_fraction);
209 node_pt(node_count)->x(0) = xinit + el_length*(e + s_fraction[0]);
221 Element_pt[N-1] =
new ELEMENT;
225 finite_element_pt(N-1)->node_pt(0)
226 = finite_element_pt(N-2)->node_pt(n_node-1);
230 for(
unsigned jnod=1;jnod<(n_node-1);jnod++)
234 = finite_element_pt(N-1)->construct_node(jnod,time_stepper_pt);
237 finite_element_pt(N-1)->local_fraction_of_node(jnod,s_fraction);
240 node_pt(node_count)->x(0) = xinit + el_length*(N-1 + s_fraction[0]);
250 Node_pt[node_count] = finite_element_pt(N-1)
251 ->construct_boundary_node(n_node-1,time_stepper_pt);
254 node_pt(node_count)->x(0) = xinit + Length;
257 add_boundary_node(1,Node_pt[node_count]);
void build_mesh(TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
Generic mesh constuction routine, called by all constructors.