23 #include "projections/ogprojection.h"
32 template<
typename Scalar>
33 Solver<Scalar>::Solver(
bool initialize_discrete_problem)
35 if (initialize_discrete_problem)
37 this->dp =
new DiscreteProblem<Scalar>();
44 template<
typename Scalar>
45 Solver<Scalar>::Solver(DiscreteProblem<Scalar>* dp) : dp(dp), own_dp(false)
49 template<
typename Scalar>
50 Solver<Scalar>::Solver(WeakFormSharedPtr<Scalar> wf, SpaceSharedPtr<Scalar> space) : dp(new DiscreteProblem<Scalar>(wf, space)), own_dp(true)
54 template<
typename Scalar>
55 Solver<Scalar>::Solver(WeakFormSharedPtr<Scalar> wf, std::vector<SpaceSharedPtr<Scalar> > spaces) : dp(new DiscreteProblem<Scalar>(wf, spaces)), own_dp(true)
59 template<
typename Scalar>
60 Solver<Scalar>::~Solver()
66 this->dp->set_matrix(
nullptr);
67 this->dp->set_rhs(
nullptr);
71 template<
typename Scalar>
77 template<
typename Scalar>
80 if (this->dp->get_spaces().size() != 1)
81 throw Hermes::Exceptions::ValueException(
"dp->get_spaces().size()", this->dp->get_spaces().size(), 1);
84 this->solve(coeff_vec);
88 template<
typename Scalar>
93 this->solve(coeff_vec);
97 template<
typename Scalar>
100 return this->dp->isOkay();
103 template<
typename Scalar>
107 this->dp->wf->set_current_time(time);
110 template<
typename Scalar>
116 template<
typename Scalar>
119 this->dp->
wf->set_current_time_step(time_step);
122 template<
typename Scalar>
128 template<
typename Scalar>
virtual void set_weak_formulation(WeakFormSharedPtr< Scalar > wf)
DiscreteProblemWeakForm helper.
Class for (global) orthogonal projecting. If the projection is not necessary (if a solution belongs t...
Used to pass the instances of Space around.
::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.
General solver functionality.
Represents a finite element space over a domain.
virtual std::vector< SpaceSharedPtr< Scalar > > get_spaces()
Get all spaces as a std::vector.