22 #ifndef __H2D_SOLVER_H_
23 #define __H2D_SOLVER_H_
25 #include "discrete_problem/discrete_problem.h"
36 template <
typename Scalar>
38 public virtual Hermes::Mixins::TimeMeasurable,
39 public Hermes::Mixins::SettableComputationTime,
41 public virtual Hermes::Mixins::OutputAttachable,
42 public Hermes::Algebra::Mixins::MatrixRhsOutput<Scalar>,
43 public Hermes::Mixins::IntegrableWithGlobalOrder,
44 public virtual Hermes::Mixins::StateQueryable,
48 Solver(
bool initialize_discrete_problem =
true);
49 Solver(DiscreteProblem<Scalar>*
dp);
50 Solver(WeakFormSharedPtr<Scalar>
wf, SpaceSharedPtr<Scalar> space);
51 Solver(WeakFormSharedPtr<Scalar>
wf, std::vector<SpaceSharedPtr<Scalar> > spaces);
59 virtual void solve(Scalar* coeff_vec) = 0;
66 virtual void solve(MeshFunctionSharedPtr<Scalar> initial_guess);
70 virtual void solve(std::vector<MeshFunctionSharedPtr<Scalar> > initial_guess);
74 virtual void set_time_step(
double time_step);
77 virtual void set_spaces(std::vector<SpaceSharedPtr<Scalar> > spaces);
78 virtual std::vector<SpaceSharedPtr<Scalar> >
get_spaces();
84 virtual bool isOkay()
const;
92 template<
typename Scalar2,
typename SolverType>
friend class AdaptSolver;
virtual Scalar * get_sln_vector()=0
Get sln vector.
virtual void set_weak_formulation(WeakFormSharedPtr< Scalar > wf)
DiscreteProblemWeakForm helper.
virtual void set_time(double time)
set time information for time-dependent problems.
Common definitions for Hermes2D.
::xsd::cxx::tree::time< char, simple_type > time
C++ type corresponding to the time XML Schema built-in type.
virtual void set_spaces(std::vector< SpaceSharedPtr< Scalar > > spaces)
SettableSpaces helper.
DiscreteProblem< Scalar > * dp
FE problem being solved.
virtual std::vector< SpaceSharedPtr< Scalar > > get_spaces()
Get all spaces as a std::vector.
bool own_dp
This instance owns its DP.
virtual void solve()
Basic solve method.