27#ifndef OOMPH_DISCONTINUOUS_GALERKIN_SPACE_TIME_UNSTEADY_HEAT_MIXED_ORDER_ELEMENTS_HEADER
28#define OOMPH_DISCONTINUOUS_GALERKIN_SPACE_TIME_UNSTEADY_HEAT_MIXED_ORDER_ELEMENTS_HEADER
32#include <oomph-lib-config.h>
50 class SpaceTimeUnsteadyHeatEquationsBase :
public virtual FiniteElement
73 template<
unsigned SPATIAL_DIM>
156 const unsigned&
nplot,
164 const unsigned&
nplot,
202 const unsigned&
nplot)
const
208 error_stream <<
"Space-time unsteady heat elements only store a single "
209 <<
"field so i must be 0 rather than " <<
i << std::endl;
238 const unsigned&
nplot,
245 error_stream <<
"Space-time unsteady heat elements only store a single "
246 <<
"field so i must be 0 rather than " <<
i << std::endl;
291 const unsigned&
nplot,
299 error_stream <<
"Space-time unsteady heat elements only store a single "
300 <<
"field so i must be 0 rather than " <<
i << std::endl;
360 error_stream <<
"These unsteady heat elements only store 1 field, \n"
361 <<
"but i is currently " <<
i << std::endl;
392 double& source)
const
404 (*Source_fct_pt)(
t, x, source);
529 double interpolated_u = 0.0;
539 return interpolated_u;
577 double interpolated_u = 0.0;
587 return interpolated_u;
700 const unsigned&
flag);
737 template<
unsigned SPATIAL_DIM,
unsigned NNODE_1D>
739 :
public virtual QElement<SPATIAL_DIM + 1, NNODE_1D>,
874 template<
unsigned SPATIAL_DIM,
unsigned NNODE_1D>
885 OneDimLagrange::shape<NNODE_1D>(
s[0],
psi_values[0]);
886 OneDimLagrange::shape<NNODE_1D>(
s[1],
psi_values[1]);
889 OneDimDiscontinuousGalerkinMixedOrderBasis::shape<NNODE_1D>(
s[2],
918 template<
unsigned SPATIAL_DIM,
unsigned NNODE_1D>
932 OneDimLagrange::shape<NNODE_1D>(
s[0],
psi_values[0]);
933 OneDimLagrange::shape<NNODE_1D>(
s[1],
psi_values[1]);
938 OneDimDiscontinuousGalerkinMixedOrderBasis::shape<NNODE_1D>(
s[2],
940 OneDimDiscontinuousGalerkinMixedOrderBasis::dshape<NNODE_1D>(
978 template<
unsigned SPATIAL_DIM,
unsigned NNODE_1D>
998 OneDimDiscontinuousGalerkinMixedOrderTest::shape<NNODE_1D>(
s[2],
1000 OneDimDiscontinuousGalerkinMixedOrderTest::dshape<NNODE_1D>(
1042 template<
unsigned SPATIAL_DIM,
unsigned NNODE_1D>
1107 template<
unsigned SPATIAL_DIM,
unsigned NNODE_1D>
1143 template<
unsigned SPATIAL_DIM,
unsigned NNODE_1D>
1146 :
public virtual QElement<SPATIAL_DIM, NNODE_1D>
1162 template<
unsigned NNODE_1D>
1181 template<
class UNSTEADY_HEAT_ELEMENT>
1205 <<
"SpaceTimeUnsteadyHeatMixedOrder elements only store a single "
1206 <<
"field so fld must be 0 rather than " <<
fld << std::endl;
1221 for (
unsigned j = 0;
j <
nnod;
j++)
1253 <<
"SpaceTimeUnsteadyHeatMixedOrder elements only store a single "
1254 <<
"field so fld must be 0 rather than " <<
fld << std::endl;
1291 <<
"SpaceTimeUnsteadyHeatMixedOrder elements only store a single "
1292 <<
"field so fld must be 0 rather than " <<
fld << std::endl;
1329 const unsigned&
fld,
1341 <<
"SpaceTimeUnsteadyHeatMixedOrder elements only store a single "
1342 <<
"field so fld must be 0 rather than " <<
fld << std::endl;
1363 double interpolated_u = 0.0;
1373 return interpolated_u;
1389 <<
"SpaceTimeUnsteadyHeatMixedOrder elements only store a single "
1390 <<
"field so fld must be 0 rather than " <<
fld << std::endl;
1399 return this->
nnode();
1414 error_stream <<
"SpaceTimeUnsteadyHeatMixedOrder elements only store a "
1415 <<
"single field so fld must be 0 rather than " <<
fld
1462 outfile << this->interpolated_u_ust_heat(
s) <<
" ";
1465 outfile << this->interpolated_du_dt_ust_heat(
s) <<
" ";
1472 for (
unsigned t = 1;
t < n_prev;
t++)
1486 for (
unsigned t = 1;
t < n_prev;
t++)
1489 outfile << this->interpolated_u_ust_heat(
t,
s) <<
" ";
1506 template<
class ELEMENT>
1519 template<
class ELEMENT>
A Class for the derivatives of shape functions The class design is essentially the same as Shape,...
TimeStepper *& time_stepper_pt()
Return the pointer to the timestepper.
unsigned ntstorage() const
Return total number of doubles stored per value to record time history of each value (one for steady ...
FaceGeometry()
Constructor: Call the constructor for the appropriate lower-dimensional QElement.
FaceGeometry()
Constructor: Call the constructor for the appropriate lower-dimensional QElement.
FaceGeometry class definition: This policy class is used to allow construction of face elements that ...
virtual unsigned nplot_points_paraview(const unsigned &nplot) const
Return the number of actual plot points for paraview plot with parameter nplot. Broken virtual; can b...
Integral *const & integral_pt() const
Return the pointer to the integration scheme (const version)
virtual void local_coordinate_of_node(const unsigned &j, Vector< double > &s) const
Get local coordinates of node j in the element; vector sets its own size (broken virtual)
double nodal_value(const unsigned &n, const unsigned &i) const
Return the i-th value stored at local node n. Produces suitably interpolated values for hanging nodes...
virtual void transform_derivatives(const DenseMatrix< double > &inverse_jacobian, DShape &dbasis) const
Convert derivative w.r.t.local coordinates to derivatives w.r.t the coordinates used to assemble the ...
virtual std::string tecplot_zone_string(const unsigned &nplot) const
Return string for tecplot zone header (when plotting nplot points in each "coordinate direction")
virtual void shape(const Vector< double > &s, Shape &psi) const =0
Calculate the geometric shape functions at local coordinate s. This function must be overloaded for e...
virtual double interpolated_x(const Vector< double > &s, const unsigned &i) const
Return FE interpolated coordinate x[i] at local coordinate s.
int nodal_local_eqn(const unsigned &n, const unsigned &i) const
Return the local equation number corresponding to the i-th value at the n-th local node.
unsigned dim() const
Return the spatial dimension of the element, i.e. the number of local coordinates required to paramet...
unsigned nnode() const
Return the number of nodes.
void(* SteadyExactSolutionFctPt)(const Vector< double > &, Vector< double > &)
Function pointer for function that computes vector-valued steady "exact solution" as .
virtual void get_s_plot(const unsigned &i, const unsigned &nplot, Vector< double > &s, const bool &shifted_to_interior=false) const
Get cector of local coordinates of plot point i (when plotting nplot points in each "coordinate direc...
virtual double local_to_eulerian_mapping(const DShape &dpsids, DenseMatrix< double > &jacobian, DenseMatrix< double > &inverse_jacobian) const
Calculate the mapping from local to Eulerian coordinates, given the derivatives of the shape function...
virtual unsigned nplot_points(const unsigned &nplot) const
Return total number of plot points (when plotting nplot points in each "coordinate direction")
Node *& node_pt(const unsigned &n)
Return a pointer to the local node n.
virtual void write_tecplot_zone_footer(std::ostream &outfile, const unsigned &nplot) const
Add tecplot zone "footer" to output stream (when plotting nplot points in each "coordinate direction"...
void(* UnsteadyExactSolutionFctPt)(const double &, const Vector< double > &, Vector< double > &)
Function pointer for function that computes Vector-valued time-dependent function as .
static DenseMatrix< double > Dummy_matrix
Empty dense matrix used as a dummy argument to combined residual and jacobian functions in the case w...
virtual double knot(const unsigned &i, const unsigned &j) const =0
Return local coordinate s[j] of i-th integration point.
TimeStepper *& position_time_stepper_pt()
Return a pointer to the position timestepper.
An OomphLibError object which should be thrown when an run-time error is encountered....
Point element has just a single node and a single shape function which is identically equal to one.
Wrapper class for projectable elements. Adds "projectability" to the underlying ELEMENT.
SpaceTimeUnsteadyHeatMixedOrder upgraded to become projectable.
int local_equation(const unsigned &fld, const unsigned &j)
Return local equation number of value j in field fld.
unsigned nfields_for_projection()
Number of fields to be projected: Just one.
double jacobian_and_shape_of_field(const unsigned &fld, const Vector< double > &s, Shape &psi)
Return Jacobian of mapping and shape functions of field fld at local coordinate s.
unsigned nhistory_values_for_coordinate_projection()
Number of positional history values (Note: count includes current value!)
ProjectableUnsteadyHeatMixedOrderSpaceTimeElement()
Constructor [this was only required explicitly from gcc 4.5.2 onwards...].
void output(std::ostream &outfile, const unsigned &nplot)
Output FE representation of soln: x,t,u or x,y,t,u at n_plot^(SPATIAL_DIM+1) plot points.
unsigned nhistory_values_for_projection(const unsigned &fld)
Number of history values to be stored for fld-th field. (Note: count includes current value!...
double get_field(const unsigned &t, const unsigned &fld, const Vector< double > &s)
Return interpolated field fld at local coordinate s, at time level t (t=0: present; t>0: history valu...
unsigned nvalue_of_field(const unsigned &fld)
Return number of values in field fld: One per node.
Vector< std::pair< Data *, unsigned > > data_values_of_field(const unsigned &fld)
Specify the values associated with field fld. The information is returned in a vector of pairs which ...
QUnsteadyHeatMixedOrderSpaceTimeElement elements are quadrilateral/brick- shaped UnsteadyHeatMixedOrd...
QUnsteadyHeatMixedOrderSpaceTimeElement()
Constructor: Call constructors for QElement and SpaceTimeUnsteadyHeatMixedOrder equations.
void dtest_local_ust_heat(const Vector< double > &s, Shape &test, DShape &dtestdx) const
Test functions & derivs. w.r.t. to local coords.
unsigned required_nvalue(const unsigned &n) const
Required number of 'values' (pinned or dofs) at node n.
void dshape_local_ust_heat(const Vector< double > &s, Shape &psi, DShape &dpsidx) const
Shape functions & derivs. w.r.t. to local coords.
double dshape_and_dtest_eulerian_at_knot_ust_heat(const unsigned &ipt, Shape &psi, DShape &dpsidx, Shape &test, DShape &dtestdx) const
Shape/test functions and derivs w.r.t. to global coords at integration point ipt; return Jacobian of ...
static const unsigned Initial_Nvalue
Static array of ints to hold number of variables at nodes: Initial_Nvalue[n].
void output(std::ostream &outfile, const unsigned &n_plot)
Output function: x,t,u or x,y,t,u at n_plot^(SPATIAL_DIM+1) plot points.
void output(FILE *file_pt)
C-style output function: x,t,u or x,y,t,u.
void output(FILE *file_pt, const unsigned &n_plot)
C-style output function: x,t,u or x,y,t,u at n_plot^(SPATIAL_DIM+1) plot points.
void output(std::ostream &outfile)
Output function: x,t,u or x,y,t,u.
void output_fct(std::ostream &outfile, const unsigned &n_plot, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt)
Output function for an exact solution: x,t,u_exact or x,y,t,u_exact at n_plot^(SPATIAL_DIM+1) plot po...
void output_fct(std::ostream &outfile, const unsigned &n_plot, const double &time, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt)
Output function for a time-dependent exact solution. x,t,u_exact or x,y,t,u_exact at n_plot^(SPATIAL_...
QUnsteadyHeatMixedOrderSpaceTimeElement(const QUnsteadyHeatMixedOrderSpaceTimeElement< SPATIAL_DIM, NNODE_1D > &dummy)=delete
Broken copy constructor.
double dshape_and_dtest_eulerian_ust_heat(const Vector< double > &s, Shape &psi, DShape &dpsidx, Shape &test, DShape &dtestdx) const
Shape/test functions & derivs. w.r.t. to global coords. Return Jacobian.
void shape_ust_heat(const Vector< double > &s, Shape &psi) const
Shape functions w.r.t. to local coords.
A Class for shape functions. In simple cases, the shape functions have only one index that can be tho...
Base class so that we don't need to know the dimension just to set the source function!
void(* SpaceTimeUnsteadyHeatSourceFctPt)(const double &time, const Vector< double > &x, double &u)
Function pointer to source function fct(t,x,f(x,t)) – x is a Vector!
virtual SpaceTimeUnsteadyHeatSourceFctPt & source_fct_pt()=0
Access function: Pointer to source function.
A class for all isoparametric elements that solve the SpaceTimeUnsteadyHeatMixedOrder equations.
const double & alpha() const
Alpha parameter (thermal inertia)
unsigned self_test()
Self-test: Return 0 for OK.
void disable_ALE()
Disable ALE, i.e. assert the mesh is not moving – you do this at your own risk!
void get_flux(const Vector< double > &s, Vector< double > &flux) const
Get flux: flux[i]=du/dx_i.
void fill_in_contribution_to_jacobian(Vector< double > &residuals, DenseMatrix< double > &jacobian)
Compute element residual Vector and element Jacobian matrix (wrapper)
SpaceTimeUnsteadyHeatSourceFctPt Source_fct_pt
Pointer to source function:
double interpolated_u_ust_heat(const unsigned &t, const Vector< double > &s) const
Return FE representation of function value u(s) at local coordinate s at previous time t (t=0: presen...
const double & beta() const
Beta parameter (thermal conductivity)
SpaceTimeUnsteadyHeatSourceFctPt & source_fct_pt()
Access function: Pointer to source function.
void compute_norm(double &norm)
Compute norm of FE solution.
double interpolated_u_ust_heat(const Vector< double > &s) const
Return FE representation of function value u(s) at local coordinate s.
unsigned nscalar_paraview() const
Number of scalars/fields output by this element. Reimplements broken virtual function in base class.
void scalar_value_fct_paraview(std::ofstream &file_out, const unsigned &i, const unsigned &nplot, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt) const
Write values of the i-th scalar field at the plot points. Needs to be implemented for each new specif...
SpaceTimeUnsteadyHeatMixedOrderEquations(const SpaceTimeUnsteadyHeatMixedOrderEquations &dummy)=delete
Broken copy constructor.
void output_element_paraview(std::ofstream &outfile, const unsigned &nplot)
C-style output FE representation of soln: x,y,u or x,y,z,u at nplot^SPATIAL_DIM plot points.
static double Default_alpha_parameter
Static default value for the Alpha parameter (thermal inertia): One for natural scaling.
double interpolated_du_dt_ust_heat(const Vector< double > &s) const
Return FE representation of function value du/dt(s) at local coordinate s.
bool ALE_is_disabled
Boolean flag to indicate if ALE formulation is disabled when time-derivatives are computed....
void scalar_value_paraview(std::ofstream &file_out, const unsigned &i, const unsigned &nplot) const
Write values of the i-th scalar field at the plot points. Needs to be implemented for each new specif...
virtual double dshape_and_dtest_eulerian_at_knot_ust_heat(const unsigned &ipt, Shape &psi, DShape &dpsidx, Shape &test, DShape &dtestdx) const =0
Shape/test functions and derivs w.r.t. to global coords at integration point ipt; return Jacobian of ...
static double Default_beta_parameter
Static default value for the Beta parameter (thermal conductivity): One for natural scaling.
void fill_in_contribution_to_residuals(Vector< double > &residuals)
Compute element residual Vector (wrapper)
double * Beta_pt
Pointer to Beta parameter (thermal conductivity)
double *& alpha_pt()
Pointer to Alpha parameter (thermal inertia)
SpaceTimeUnsteadyHeatMixedOrderEquations()
Constructor: Initialises the Source_fct_pt to null and sets flag to use ALE formulation of the equati...
virtual void dshape_local_ust_heat(const Vector< double > &s, Shape &psi, DShape &dpsidx) const =0
Shape functions & derivs. w.r.t. to local coords.
void output(std::ostream &outfile)
Output with default number of plot points.
std::string scalar_name_paraview(const unsigned &i) const
Name of the i-th scalar field. Default implementation returns V1 for the first one,...
virtual void shape_ust_heat(const Vector< double > &s, Shape &psi) const =0
Shape functions w.r.t. to local coords.
void scalar_value_fct_paraview(std::ofstream &file_out, const unsigned &i, const unsigned &nplot, const double &time, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt) const
Write values of the i-th scalar field at the plot points. Needs to be implemented for each new specif...
virtual void dtest_local_ust_heat(const Vector< double > &s, Shape &test, DShape &dtestdx) const =0
Test functions & derivs. w.r.t. to local coords.
double du_dt_ust_heat(const unsigned &n) const
Calculate du/dt at the n-th local node. Uses suitably interpolated value for hanging nodes.
virtual double dshape_and_dtest_eulerian_ust_heat(const Vector< double > &s, Shape &psi, DShape &dpsidx, Shape &test, DShape &dtestdx) const =0
Shape/test functions and derivs w.r.t. to global coords at local coordinate s; return Jacobian of map...
void enable_ALE()
(Re-)enable ALE, i.e. take possible mesh motion into account when evaluating the time-derivative....
void output(FILE *file_pt)
C_style output with default number of plot points.
virtual void fill_in_generic_residual_contribution_ust_heat(Vector< double > &residuals, DenseMatrix< double > &jacobian, const unsigned &flag)
Compute element residual Vector only (if flag=and/or element Jacobian matrix.
double *& beta_pt()
Pointer to Beta parameter (thermal conductivity)
virtual unsigned u_index_ust_heat() const
Return the index at which the unknown value is stored. The default value, 0, is appropriate for singl...
virtual void get_source_ust_heat(const double &t, const unsigned &ipt, const Vector< double > &x, double &source) const
Get source term at continous time t and (Eulerian) position x. Virtual so it can be overloaded in der...
SpaceTimeUnsteadyHeatSourceFctPt source_fct_pt() const
Access function: Pointer to source function. Const version.
void compute_error(std::ostream &outfile, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, double &error, double &norm)
Get error and norm against exact solution.
double * Alpha_pt
Pointer to Alpha parameter (thermal inertia)
void output_fct(std::ostream &outfile, const unsigned &nplot, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt)
Output exact soln: x,y,u_exact or x,y,z,u_exact at nplot^SPATIAL_DIM plot points.
TAdvectionDiffusionReactionElement<NREAGENT,DIM,NNODE_1D> elements are isoparametric triangular DIM-d...
TAdvectionDiffusionReactionElement()
Constructor: Call constructors for TElement and AdvectionDiffusionReaction equations.
unsigned ntstorage() const
Return the number of doubles required to represent history (one for steady)
DRAIG: Change all instances of (SPATIAL_DIM) to (DIM-1).