31 #ifndef OOMPH_TPML_TIME_HARMONIC_LINEAR_ELASTICITY_ELEMENTS_HEADER 32 #define OOMPH_TPML_TIME_HARMONIC_LINEAR_ELASTICITY_ELEMENTS_HEADER 37 #include <oomph-lib-config.h> 42 #include "../generic/nodes.h" 43 #include "../generic/oomph_utilities.h" 44 #include "../generic/Telements.h" 45 #include "../generic/error_estimator.h" 68 template <
unsigned DIM,
unsigned NNODE_1D,
class PML_ELEMENT>
101 void output(std::ostream &outfile,
const unsigned &nplot)
114 void output(FILE* file_pt,
const unsigned &n_plot)
138 return 2*(DIM + DIM*(DIM-1)/2);
146 unsigned num_entries=2*(DIM+((DIM*DIM)-DIM)/2);
147 if (flux.size()!=num_entries)
149 std::ostringstream error_message;
150 error_message <<
"The flux vector has the wrong number of entries, " 151 << flux.size() <<
", whereas it should be " 152 << num_entries << std::endl;
155 OOMPH_CURRENT_FUNCTION,
156 OOMPH_EXCEPTION_LOCATION);
168 for(
unsigned i=0;
i<DIM;
i++)
170 flux[icount]=strain(
i,
i).real();
172 flux[icount]=strain(
i,
i).imag();
177 for(
unsigned i=0;
i<DIM;
i++)
179 for(
unsigned j=
i+1;j<DIM;j++)
181 flux[icount]=strain(
i,j).real();
183 flux[icount]=strain(
i,j).imag();
200 template<
unsigned DIM,
unsigned NNODE_1D,
class PML_ELEMENT>
202 public virtual TElement<DIM-1,NNODE_1D>
217 template<
unsigned NNODE_1D,
class PML_ELEMENT>
242 template<
unsigned NNODE_1D,
class PML_ELEMENT>
265 template<
unsigned DIM,
unsigned NNODE_1D,
class PML_ELEMENT>
268 public virtual QElement<DIM-1,NNODE_1D>
290 template<
unsigned NNODE_1D,
class PML_ELEMENT>
FaceGeometry()
Constructor: Call the constructor for the appropriate lower-dimensional TElement. ...
void broken_copy(const std::string &class_name)
Issue error message and terminate execution.
void operator=(const TPMLTimeHarmonicLinearElasticityElement< DIM, NNODE_1D, PML_ELEMENT > &)
Broken assignment operator.
EquivalentQElement()
Constructor: Call the constructor for the appropriate QElement.
Base class for finite elements that can compute the quantities that are required for the Z2 error est...
unsigned num_Z2_flux_terms()
Number of 'flux' terms for Z2 error estimation.
Node * vertex_node_pt(const unsigned &j) const
Pointer to the j-th vertex node in the element.
void output(std::ostream &outfile, const unsigned &nplot)
Output function:
TPMLTimeHarmonicLinearElasticityElement()
Constructor: Call constructors for TElement and PMLTimeHarmonicLinearElasticity equations.
Nodes are derived from Data, but, in addition, have a definite (Eulerian) position in a space of a gi...
void get_Z2_flux(const Vector< double > &s, Vector< double > &flux)
Get 'flux' for Z2 error recovery: Upper triangular entries in strain tensor.
unsigned nrecovery_order()
Order of recovery shape functions for Z2 error estimation: Same order as shape functions.
FaceGeometry()
Constructor: Call the constructor for the appropriate lower-dimensional QElement. ...
void output(std::ostream &outfile)
Output: x,y,[z],u_r,v_r,[w_r],u_i,v_i,[w_i].
unsigned nvertex_node() const
Number of vertex nodes in the element.
TPMLTimeHarmonicLinearElasticityElement(const TPMLTimeHarmonicLinearElasticityElement< DIM, NNODE_1D, PML_ELEMENT > &dummy)
Broken copy constructor.
Time-harmonic linear elasticity upgraded to become projectable.
FaceGeometry()
Constructor: Call the constructor for the appropriate lower-dimensional QElement. ...
void output(FILE *file_pt)
C-style output function:
void get_strain(const Vector< double > &s, DenseMatrix< std::complex< double > > &strain) const
Return the strain tensor.
void broken_assign(const std::string &class_name)
Issue error message and terminate execution.
EquivalentQElement()
Constructor: Call the constructor for the appropriate QElement.
Class for dense matrices, storing all the values of the matrix as a pointer to a pointer with assorte...
void output(std::ostream &outfile)
Output function:
void output(FILE *file_pt, const unsigned &n_plot)
C-style output function: