24 #ifndef ForwardEulerProblem_H_
25 #define ForwardEulerProblem_H_
52 template<
typename OPTPROBLEM,
typename SPARSITYPATTERN,
typename VECTOR,
53 int dopedim,
int dealdim,
54 template <
int,
int>
class FE = dealii::FESystem,
55 template <
int,
int>
class DH = dealii::DoFHandler>
57 SPARSITYPATTERN, VECTOR, dopedim, dealdim, FE, DH>
61 PrimalTSBase<OPTPROBLEM, SPARSITYPATTERN, VECTOR, dopedim, dealdim,
64 initial_problem_ = NULL;
68 if (initial_problem_ != NULL)
69 delete initial_problem_;
77 return "forward Euler";
85 if (initial_problem_ == NULL)
90 return *initial_problem_;
102 template<
typename EDC>
105 dealii::Vector<double> &local_vector,
double scale,
double )
109 dealii::Vector<double> tmp(local_vector);
111 this->
GetProblem().ElementEquation(edc, tmp, 0., scale);
115 this->
GetProblem().ElementTimeEquation(edc, tmp,
119 this->
GetProblem().ElementTimeEquationExplicit(edc, local_vector,
123 else if (this->
GetPart() ==
"Old")
125 dealii::Vector<double> tmp(local_vector);
127 this->
GetProblem().ElementEquation(edc, tmp, scale, 0.);
143 template<
typename EDC>
146 dealii::Vector<double> &local_vector,
double scale)
152 else if (this->
GetPart() ==
"Old")
154 this->
GetProblem().ElementRhs(edc, local_vector, scale);
165 const std::map<std::string,
const dealii::Vector<double>*> ¶m_values,
166 const std::map<std::string, const VECTOR*> &domain_values,
167 VECTOR& rhs_vector,
double scale)
172 else if (this->
GetPart() ==
"Old")
174 this->
GetProblem().PointRhs(param_values, domain_values, rhs_vector, scale);
184 template<
typename EDC>
187 dealii::FullMatrix<double> &local_matrix)
189 assert(this->
GetPart() ==
"New");
190 dealii::FullMatrix<double> m(local_matrix);
192 this->
GetProblem().ElementMatrix(edc, local_matrix, 0., 1.);
200 this->
GetProblem().ElementTimeMatrixExplicit(edc, m);
208 template<
typename FDC>
211 dealii::Vector<double> &local_vector,
double scale,
double )
215 this->
GetProblem().FaceEquation(fdc, local_vector, 0., scale);
217 else if (this->
GetPart() ==
"Old")
219 this->
GetProblem().FaceEquation(fdc, local_vector, scale,0.);
229 template<
typename FDC>
232 dealii::Vector<double> &local_vector,
double scale,
double )
236 this->
GetProblem().InterfaceEquation(fdc, local_vector, 0., scale);
238 else if (this->
GetPart() ==
"Old")
240 this->
GetProblem().InterfaceEquation(fdc, local_vector, scale,0.);
251 template<
typename FDC>
254 dealii::Vector<double> &local_vector,
double scale = 1.)
256 this->
GetProblem().FaceRhs(fdc, local_vector, scale);
261 template<
typename FDC>
264 dealii::FullMatrix<double> &local_matrix)
266 assert(this->
GetPart() ==
"New");
267 this->
GetProblem().FaceMatrix(fdc, local_matrix, 0., 1.);
273 template<
typename FDC>
276 dealii::FullMatrix<double> &local_matrix)
278 assert(this->
GetPart() ==
"New");
279 this->
GetProblem().InterfaceMatrix(fdc, local_matrix, 0., 1.);
285 template<
typename FDC>
288 dealii::Vector<double> &local_vector,
double scale,
double )
292 this->
GetProblem().BoundaryEquation(fdc, local_vector, 0., scale);
294 else if (this->
GetPart() ==
"Old")
296 this->
GetProblem().BoundaryEquation(fdc, local_vector, scale,0.);
307 template<
typename FDC>
310 dealii::Vector<double> &local_vector,
double scale)
312 this->
GetProblem().BoundaryRhs(fdc, local_vector, scale);
317 template<
typename FDC>
320 dealii::FullMatrix<double> &local_matrix)
322 assert(this->
GetPart() ==
"New");
323 this->
GetProblem().BoundaryMatrix(fdc, local_matrix, 0., 1.);
void BoundaryRhs(const FDC &fdc, dealii::Vector< double > &local_vector, double scale)
Definition: forward_euler_problem.h:309
void PointRhs(const std::map< std::string, const dealii::Vector< double > * > ¶m_values, const std::map< std::string, const VECTOR * > &domain_values, VECTOR &rhs_vector, double scale)
Definition: forward_euler_problem.h:164
void FaceEquation(const FDC &fdc, dealii::Vector< double > &local_vector, double scale, double)
Definition: forward_euler_problem.h:210
void ElementMatrix(const EDC &edc, dealii::FullMatrix< double > &local_matrix)
Definition: forward_euler_problem.h:186
ForwardEulerProblem< OPTPROBLEM, SPARSITYPATTERN, VECTOR, dopedim, dealdim, FE, DH > & GetBaseProblem()
Definition: forward_euler_problem.h:96
Definition: primal_ts_base.h:49
void BoundaryEquation(const FDC &fdc, dealii::Vector< double > &local_vector, double scale, double)
Definition: forward_euler_problem.h:287
void FaceMatrix(const FDC &fdc, dealii::FullMatrix< double > &local_matrix)
Definition: forward_euler_problem.h:263
void InterfaceEquation(const FDC &fdc, dealii::Vector< double > &local_vector, double scale, double)
Definition: forward_euler_problem.h:231
void FaceRhs(const FDC &fdc, dealii::Vector< double > &local_vector, double scale=1.)
Definition: forward_euler_problem.h:253
~ForwardEulerProblem()
Definition: forward_euler_problem.h:66
ForwardEulerProblem(OPTPROBLEM &OP)
Definition: forward_euler_problem.h:60
Definition: initialproblem.h:42
OPTPROBLEM & GetProblem()
Definition: ts_base.h:480
void ElementEquation(const EDC &edc, dealii::Vector< double > &local_vector, double scale, double)
Definition: forward_euler_problem.h:104
Definition: forward_euler_problem.h:56
std::string GetPart() const
Definition: ts_base.h:493
std::string GetName()
Definition: forward_euler_problem.h:75
InitialProblem< ForwardEulerProblem< OPTPROBLEM, SPARSITYPATTERN, VECTOR, dopedim, dealdim, FE, DH >, VECTOR, dealdim > & GetInitialProblem()
Definition: forward_euler_problem.h:83
void InterfaceMatrix(const FDC &fdc, dealii::FullMatrix< double > &local_matrix)
Definition: forward_euler_problem.h:275
void BoundaryMatrix(const FDC &fdc, dealii::FullMatrix< double > &local_matrix)
Definition: forward_euler_problem.h:319
void ElementRhs(const EDC &edc, dealii::Vector< double > &local_vector, double scale)
Definition: forward_euler_problem.h:145