28#ifndef OOMPH_NAVIER_STOKES_SURFACE_POWER_ELEMENTS_HEADER
29#define OOMPH_NAVIER_STOKES_SURFACE_POWER_ELEMENTS_HEADER
33#include <oomph-lib-config.h>
49 template<
class ELEMENT>
77 const unsigned&
i)
const
126 for (
unsigned i = 0;
i <
ndim;
i++)
154 for (
unsigned i = 0;
i <
ndim + 1;
i++)
161 error_stream <<
"difference in Eulerian posn from bulk and face: "
183 for (
unsigned i = 0;
i <
ndim + 1;
i++)
185 drag[
i] += traction[
i] * W;
191 for (
unsigned i = 0;
i <
ndim + 1;
i++)
197 for (
unsigned i = 0;
i <
ndim + 1;
i++)
204 for (
unsigned i = 0;
i <
ndim + 1;
i++)
259 for (
unsigned i = 0;
i <
ndim;
i++)
287 for (
unsigned i = 0;
i <
ndim + 1;
i++)
294 error_stream <<
"difference in Eulerian posn from bulk and face: "
319 for (
unsigned i = 0;
i <
ndim + 1;
i++)
330 for (
unsigned i = 0;
i <
ndim + 1;
i++)
336 for (
unsigned i = 0;
i <
ndim + 1;
i++)
342 for (
unsigned i = 0;
i <
ndim + 1;
i++)
348 for (
unsigned i = 0;
i <
ndim + 1;
i++)
354 for (
unsigned i = 0;
i <
ndim + 1;
i++)
423 for (
unsigned i = 0;
i <
ndim;
i++)
451 for (
unsigned i = 0;
i <
ndim + 1;
i++)
458 error_stream <<
"difference in Eulerian posn from bulk and face: "
488 for (
unsigned i = 0;
i <
ndim + 1;
i++)
503 for (
unsigned i = 0;
i <
ndim + 1;
i++)
509 for (
unsigned i = 0;
i <
ndim + 1;
i++)
515 for (
unsigned i = 0;
i <
ndim + 1;
i++)
521 for (
unsigned i = 0;
i <
ndim + 1;
i++)
527 for (
unsigned i = 0;
i <
ndim + 1;
i++)
533 for (
unsigned i = 0;
i <
ndim + 1;
i++)
539 for (
unsigned i = 0;
i <
ndim + 1;
i++)
545 for (
unsigned i = 0;
i <
ndim + 1;
i++)
551 for (
unsigned i = 0;
i <
ndim + 1;
i++)
603 for (
unsigned i = 0;
i <
ndim;
i++)
631 for (
unsigned i = 0;
i <
ndim + 1;
i++)
638 error_stream <<
"difference in Eulerian posn from bulk and face: "
655 double kin_energy = 0.0;
656 for (
unsigned i = 0;
i <
ndim + 1;
i++)
658 kin_energy += veloc[
i] * veloc[
i];
664 for (
unsigned i = 0;
i <
ndim + 1;
i++)
675 for (
unsigned i = 0;
i <
ndim + 1;
i++)
681 for (
unsigned i = 0;
i <
ndim + 1;
i++)
687 for (
unsigned i = 0;
i <
ndim + 1;
i++)
744 for (
unsigned i = 0;
i <
ndim;
i++)
773 for (
unsigned i = 0;
i <
ndim + 1;
i++)
780 error_stream <<
"difference in Eulerian posn from bulk and face: "
799 for (
unsigned i = 0;
i <
ndim + 1;
i++)
810 for (
unsigned i = 0;
i <
ndim + 1;
i++)
816 for (
unsigned i = 0;
i <
ndim + 1;
i++)
822 for (
unsigned i = 0;
i <
ndim + 1;
i++)
FaceElements are elements that coincide with the faces of higher-dimensional "bulk" elements....
int & face_index()
Index of the face (a number that uniquely identifies the face in the element)
void outer_unit_normal(const Vector< double > &s, Vector< double > &unit_normal) const
Compute outer unit normal at the specified local coordinate.
double zeta_nodal(const unsigned &n, const unsigned &k, const unsigned &i) const
In a FaceElement, the "global" intrinsic coordinate of the element along the boundary,...
double interpolated_x(const Vector< double > &s, const unsigned &i) const
Return FE interpolated coordinate x[i] at local coordinate s. Overloaded to get information from bulk...
FiniteElement *& bulk_element_pt()
Pointer to higher-dimensional "bulk" element.
double J_eulerian(const Vector< double > &s) const
Return the Jacobian of mapping from local to global coordinates at local position s....
void get_local_coordinate_in_bulk(const Vector< double > &s, Vector< double > &s_bulk) const
Calculate the vector of local coordinate in the bulk element given the local coordinates in this Face...
FaceGeometry class definition: This policy class is used to allow construction of face elements that ...
A general Finite Element class.
Integral *const & integral_pt() const
Return the pointer to the integration scheme (const version)
virtual double interpolated_x(const Vector< double > &s, const unsigned &i) const
Return FE interpolated coordinate x[i] at local coordinate s.
unsigned dim() const
Return the spatial dimension of the element, i.e. the number of local coordinates required to paramet...
Node *& node_pt(const unsigned &n)
Return a pointer to the local node n.
virtual void build_face_element(const int &face_index, FaceElement *face_element_pt)
Function for building a lower dimensional FaceElement on the specified face of the FiniteElement....
unsigned ndim() const
Access function to # of Eulerian coordinates.
virtual double knot(const unsigned &i, const unsigned &j) const =0
Return local coordinate s[j] of i-th integration point.
virtual unsigned nweight() const =0
Return the number of integration points of the scheme.
virtual double weight(const unsigned &i) const =0
Return weight of i-th integration point.
A class of elements that allow the determination of the power input and various other fluxes over the...
double get_kinetic_energy_flux(std::ofstream &outfile)
Get integral of kinetic energy flux and doc.
unsigned Dim
The highest dimension of the problem.
void get_rate_of_traction_work_components(double &rate_of_work_integral_p, double &rate_of_work_integral_n, double &rate_of_work_integral_t)
Get integral of instantaneous rate of work done by the traction that's exerted onto the fluid,...
NavierStokesSurfacePowerElement(FiniteElement *const &element_pt, const int &face_index)
Constructor, which takes a "bulk" element and the value of the index and its limit.
Vector< double > drag_force(std::ofstream &outfile)
Get drag force (traction acting on fluid) Doc in outfile.
double get_rate_of_traction_work()
Get integral of instantaneous rate of work done by the traction that's exerted onto the fluid.
double get_kinetic_energy_flux()
Get integral of kinetic energy flux.
double get_volume_flux(std::ofstream &outfile)
Get integral of volume flux and doc.
double get_rate_of_traction_work(std::ofstream &outfile)
Get integral of instantaneous rate of work done by the traction that's exerted onto the fluid....
void get_rate_of_traction_work_components(std::ofstream &outfile, double &rate_of_work_integral_p, double &rate_of_work_integral_n, double &rate_of_work_integral_t)
Get integral of instantaneous rate of work done by the traction that's exerted onto the fluid,...
double get_volume_flux()
Get integral of volume flux.
double zeta_nodal(const unsigned &n, const unsigned &k, const unsigned &i) const
The "global" intrinsic coordinate of the element when viewed as part of a geometric object should be ...
Vector< double > drag_force()
Get drag force (traction acting on fluid)
unsigned ndim() const
Return (Eulerian) spatial dimension of the node.
An OomphLibError object which should be thrown when an run-time error is encountered....
TAdvectionDiffusionReactionElement<NREAGENT,DIM,NNODE_1D> elements are isoparametric triangular DIM-d...
DRAIG: Change all instances of (SPATIAL_DIM) to (DIM-1).