/* $Id: elements.h,v 1.1.1.1 1996/10/02 10:35:49 roitzsch Exp $ */ #ifndef ELEMENTS_H #define ELEMENTS_H #include "general.h" #include "kvector.h" #include "matrix.h" class PATCH; class Jacobian; //------------------------------------------------------------------------- class Element { public: Matrix *symPattern, *asymPattern, *DLYPattern; Element(); virtual ~Element(); virtual int SpaceDim() const = 0; virtual int NoOfPoints() const = 0; virtual int NoOfNodes() const = 0; virtual int NodesOnPoint() const = 0; virtual int NodesOnEdge() const = 0; virtual int InnerNodes () const = 0; virtual int NoOfEdges() const = 0; virtual int NoOfFaces() const = 0; virtual Real SF (int node, const Vector& unitCoord) const = 0; virtual Real dSF(int node, int component, const Vector& unitCoord) const = 0; void initAb(Matrix& A, Vector& b) const; void initAb(Matrix& A) const; void initAb(Matrix& A, Vector& b) const; void initAb(Matrix& A) const; virtual Num valueAt(const Vector& unitCoord, const Vector& solution) const; virtual void valueAt(const Vector& unitCoord, const Vector& sol, Vector& uInt, int baseNode, int nComp) const; virtual void gradientAt(int ip, const Jacobian& Jac, const Vector& u, Vector& grad) const; virtual Bool assembleEllip (const PATCH& patch, Matrix& A, const Jacobian& Jac, const Matrix* pattern) const; virtual Bool assembleMass (const PATCH& patch, Matrix& A, const Jacobian& Jac, const Matrix* pattern) const; virtual Bool assembleLumpedMass(const PATCH& patch, Matrix& A, const Jacobian& Jac, const Matrix* pattern) const; virtual Bool assembleP (const PATCH& patch, Matrix& A, const Jacobian& Jac, const Matrix* pattern) const; virtual Bool assembleLumpedP(const PATCH& patch, Matrix& A, const Jacobian& Jac, const Matrix* pattern) const; virtual Bool assembleConvec (const PATCH& patch, Matrix& A, const Jacobian& Jac, const Matrix* pattern) const; virtual Bool assembleSource (const PATCH& patch, Vector& b, const Jacobian& Jac, const Matrix* pattern, Real time=0.0) const; virtual Bool assembleNeumannBCs(const PATCH& patch, Vector& b, const Matrix* pattern, Real time=0.0) const; virtual Bool assembleInnerBCs(const PATCH& patch, Vector& b, const Matrix* pattern, Real time=0.0) const; virtual Bool assembleCauchyBCs (const PATCH& patch, Matrix& A, Vector& b, const Matrix* pattern, Real time=0.0) const; virtual void assembleL2Norm(const PATCH& patch, Matrix& A, const Jacobian& Jac, const Matrix* pattern) const; virtual void assembleLNorm (const PATCH& patch, Vector& b, const Jacobian& Jac, const Matrix* pattern) const; protected: virtual Bool assNeumannBCOnBoundary(const PATCH& ed, Vector& nodes, Vector& b, const Matrix* pattern, Real time=0.0) const; virtual Bool assBConInnerBoundary(const PATCH& ed, Vector& nodes, Vector& b, const Matrix* pattern, Real time=0.0) const; virtual void assCauchyBCOnBoundary(const PATCH& ed, Vector& nodes, Matrix& A, Vector& b, const Matrix* pattern, Real time=0.0) const; public: // Complex dummies: virtual Bool assembleEllip (const PATCH& patch, Matrix& A, const Jacobian& Jac, const Matrix* pattern) const; virtual Bool assembleMass (const PATCH& patch, Matrix& A, const Jacobian& Jac, const Matrix* pattern) const; virtual Bool assembleLumpedMass(const PATCH& patch, Matrix& A, const Jacobian& Jac, const Matrix* pattern) const; virtual Bool assembleP (const PATCH& patch, Matrix& A, const Jacobian& Jac, const Matrix* pattern) const; virtual Bool assembleLumpedP(const PATCH& patch, Matrix& A, const Jacobian& Jac, const Matrix* pattern) const; virtual Bool assembleConvec (const PATCH& patch, Matrix& A, const Jacobian& Jac, const Matrix* pattern) const; virtual Bool assembleSource (const PATCH& patch, Vector& b, const Jacobian& Jac, const Matrix* pattern, Real time=0.0) const; virtual Bool assembleNeumannBCs(const PATCH& patch, Vector& b, const Matrix* pattern, Real time=0.0) const; virtual Bool assembleInnerBCs(const PATCH& patch, Vector& b, const Matrix* pattern, Real time=0.0) const; virtual Bool assembleCauchyBCs (const PATCH& patch, Matrix& A, Vector& b, const Matrix* pattern, Real time=0.0) const; virtual void assembleL2Norm(const PATCH& patch, Matrix& A, const Jacobian& Jac, const Matrix* pattern) const; virtual void assembleLNorm (const PATCH& patch, Vector& b, const Jacobian& Jac, const Matrix* pattern) const; protected: void notImplemented(const char* fct) const; virtual void setPatterns(); }; //------------------------------------------------------------------------- #endif