30 #ifndef OOMPH_ONE_D_LAGRANGIAN_MESH_TEMPLATE_CC 31 #define OOMPH_ONE_D_LAGRANGIAN_MESH_TEMPLATE_CC 53 template <
class ELEMENT>
57 GeomObject* undef_eulerian_posn_pt,
58 TimeStepper* time_stepper_pt) :
59 OneDMesh<ELEMENT>(n_element,length,time_stepper_pt),
60 Undef_eulerian_posn_pt(undef_eulerian_posn_pt)
63 MeshChecker::assert_geometric_element<QElementGeometricBase,ELEMENT>(1);
66 set_lagrangian_nodal_coordinates();
84 template <
class ELEMENT>
89 GeomObject* undef_eulerian_posn_pt,
90 TimeStepper* time_stepper_pt) :
91 OneDMesh<ELEMENT>(n_element,xmin,xmax,time_stepper_pt),
95 MeshChecker::assert_geometric_element<QElementGeometricBase,ELEMENT>(1);
98 set_lagrangian_nodal_coordinates();
115 template<
class ELEMENT>
119 ELEMENT* cast_element_pt =
dynamic_cast<ELEMENT*
>(finite_element_pt(0));
122 unsigned n_lagrangian_type = cast_element_pt->nnodal_lagrangian_type();
126 if(n_lagrangian_type > 1)
129 unsigned n_p = cast_element_pt->nnode_1d();
134 unsigned long n_node = nnode();
135 for(
unsigned long n=0;n<n_node;n++) {node_pt(n)->xi_gen(1,0) = 0.5*xstep;}
142 template <
class ELEMENT>
146 Vector<double> xi(1);
149 unsigned n_dim = node_pt(0)->ndim();
152 ELEMENT* cast_element_pt =
dynamic_cast<ELEMENT*
>(finite_element_pt(0));
156 unsigned n_lagrangian_type = cast_element_pt->nnodal_lagrangian_type();
160 Vector<double> R(n_dim);
162 DenseMatrix<double> a(1,n_dim);
164 RankThreeTensor<double> dadxi(1,1,n_dim);
167 unsigned long n_node = nnode();
170 for(
unsigned long n=0;n<n_node;n++)
173 xi[0]= node_pt(n)->xi(0);
179 for(
unsigned i=0;i<n_dim;i++)
182 node_pt(n)->x_gen(0,i) = R[i];
184 if(n_lagrangian_type > 1)
190 node_pt(n)->x_gen(1,i) = 0.5*a(0,i)*
void assign_undeformed_positions()
Assign the undeformed Eulerian positions to the nodes.
OneDLagrangianMesh(const unsigned &n_element, const double &length, GeomObject *undef_eulerian_posn_pt, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
Constructor: Pass number of elements, length, pointer to GeomObject that defines the undeformed Euler...
GeomObject * Undef_eulerian_posn_pt
Undeformed Eulerian shape.
void assign_default_element_gradients()
Set the default gradients of the elements.