/* $Id: problemnl.h,v 1.1.1.1 1996/10/02 10:35:53 roitzsch Exp $ */ #ifndef PROBLEMNL_H #define PROBLEMNL_H #include "problemtr.h" class NonLinearity; //------------------------------------------------------------------------- class NonLinearProblem : virtual public Problem { protected: NonLinearProblem(); virtual ~NonLinearProblem(); NonLinearity* nonLinearity; virtual NonLinearity* getNonLinearity() { return nonLinearity; } virtual DirichletBCs* newDirichletBCs(); virtual void newMaterial(); virtual void newPreconditioner(); virtual void assembleGlobal(Real time); }; //------------------------------------------------------------------------- class StaticNonLinearProblem : public NonLinearProblem { public: StaticNonLinearProblem() { } protected: virtual void assemble(const Element& elem, const PATCH& t, const Jacobian& Jac, Matrix& A, Vector& b, const Matrix* pattern, Bool errorEstimatorCall=False); }; //------------------------------------------------------------------------- class TransientNonLinearProblem : public NonLinearProblem, virtual public TransientProblem { public: TransientNonLinearProblem() { } protected: virtual void assembleGlobal(Real time); virtual void assemble(const Element& elem, const PATCH& t, const Jacobian& Jac, Matrix& A, Vector& b, const Matrix* APattern, Bool errorEstimatorCall=False); virtual Real compUNorm(Vector& u, Vector* MDiag); friend class RK1; friend class RK2; }; #endif