/* $Id: dirichlet.h,v 1.2 1996/10/04 15:06:28 roitzsch Exp $ */ #ifndef DIRICHLET_H #define DIRICHLET_H #include "general.h" #include "kvector.h" //------------------------------------------------------------------------- class DirichletBCs { protected: Vector Id; // identifier for each node; // zero if node is not constrained Vector Values; // value for each node public: DirichletBCs (); virtual ~DirichletBCs() { } virtual Bool constant() const = 0; int noOfConstraints() const; void setValuesToZero(); // -- fuctions for setting the BCs on the nodes: void extend(int noOfNodes); virtual Bool isDirichlet(Bool flag, int /*id*/, int /*comp*/, Real /*time*/) const { return flag; } virtual void setBC(int node, int id, Vector& x, int comp, Real time) = 0; virtual void setValue(Real val, int node) { Values[node] = val; } // -- fuctions for retrieving the BCs on the nodes: virtual Bool isSet(int node) const { return int(Id[node]); } virtual Real value(int node) const { return Values[node]; } virtual Real initialValue(Vector& x, Real time, int comp=1) const; protected: void notImplemented() const; }; #endif