24 #ifndef _INITIAL_PROBLEM_H_
25 #define _INITIAL_PROBLEM_H_
29 using namespace dealii;
41 template<
typename PDE,
typename VECTOR,
int dim>
53 return "InitialProblem";
58 return "initial_state";
66 template<
typename EDC>
68 ElementEquation(
const EDC& edc,
69 dealii::Vector<double> &local_vector,
double scale,
76 template<
typename EDC>
78 ElementRhs(
const EDC& edc,
79 dealii::Vector<double> &local_vector,
double scale = 1.);
87 const std::map<std::string,
const dealii::Vector<double>*> ¶m_values,
88 const std::map<std::string, const VECTOR*> &domain_values,
89 VECTOR& rhs_vector,
double scale = 1);
95 template<
typename EDC>
97 ElementMatrix(
const EDC& edc,
98 dealii::FullMatrix<double> &local_matrix,
double scale = 1.,
99 double scale_ico = 1.);
105 template<
typename FDC>
107 FaceEquation(
const FDC& fdc,
108 dealii::Vector<double> &local_vector,
double scale = 1.,
double scale_ico = 1.);
114 template<
typename FDC>
116 InterfaceEquation(
const FDC& fdc,
117 dealii::Vector<double> &local_vector,
double scale = 1.,
double scale_ico = 1.);
123 template<
typename FDC>
125 FaceRhs(
const FDC& fdc,
126 dealii::Vector<double> &local_vector,
double scale = 1.);
132 template<
typename FDC>
134 FaceMatrix(
const FDC& fdc,
135 dealii::FullMatrix<double> &local_matrix,
double scale = 1.,
double scale_ico = 1.);
141 template<
typename FDC>
143 InterfaceMatrix(
const FDC& fdc,
144 dealii::FullMatrix<double> &local_matrix,
double scale = 1.,
double scale_ico = 1.);
150 template<
typename FDC>
152 BoundaryEquation(
const FDC& fdc,
153 dealii::Vector<double> &local_vector,
double scale = 1.,
double scale_ico = 1.);
159 template<
typename FDC>
161 BoundaryRhs(
const FDC& fdc,
162 dealii::Vector<double> &local_vector,
double scale = 1.);
168 template<
typename FDC>
170 BoundaryMatrix(
const FDC& fdc,
171 dealii::FullMatrix<double> &local_matrix,
double scale = 1.,
double scale_ico = 1.);
177 inline const dealii::SmartPointer<const dealii::FESystem<dim> >
184 inline const dealii::SmartPointer<const dealii::hp::FECollection<dim> >
185 GetFECollection()
const;
211 HasInterfaces()
const;
217 inline dealii::UpdateFlags
218 GetUpdateFlags()
const;
224 inline dealii::UpdateFlags
225 GetFaceUpdateFlags()
const;
239 template<
typename SPARSITYPATTERN>
241 ComputeSparsityPattern(SPARSITYPATTERN & sparsity)
const;
247 inline const std::vector<unsigned int>&
248 GetDirichletColors()
const;
253 inline const std::vector<bool>&
254 GetDirichletCompMask(
unsigned int color)
const;
259 inline const Function<dim>&
260 GetDirichletValues(
unsigned int color,
261 const std::map<std::string,
const dealii::Vector<double>*> ¶m_values,
262 const std::map<std::string, const VECTOR*> &domain_values)
const;
267 inline const std::vector<unsigned int>&
268 GetBoundaryEquationColors()
const;
273 inline const dealii::ConstraintMatrix&
274 GetDoFConstraints()
const;
279 const dealii::Function<dim>&
280 GetInitialValues()
const;
285 return _pde.GetOutputHandler();
302 template<
typename PDE,
typename VECTOR,
int dim>
303 template<
typename EDC>
306 dealii::Vector<double> &local_vector,
double scale,
309 _pde.Init_ElementEquation(edc, local_vector, scale, scale_ico);
314 template<
typename PDE,
typename VECTOR,
int dim>
315 template<
typename FDC>
319 dealii::Vector<double> &local_vector,
double scale,
double scale_ico)
321 _pde.Init_FaceEquation(fdc, local_vector, scale, scale_ico);
326 template<
typename PDE,
typename VECTOR,
int dim>
327 template<
typename FDC>
331 dealii::Vector<double> &local_vector,
double scale,
double scale_ico)
333 _pde.Init_InterfaceEquation(fdc, local_vector, scale, scale_ico);
337 template<
typename PDE,
typename VECTOR,
int dim>
338 template<
typename FDC>
342 dealii::Vector<double> &local_vector,
double scale,
double scale_ico)
344 _pde.Init_BoundaryEquation(fdc, local_vector, scale, scale_ico);
349 template<
typename PDE,
typename VECTOR,
int dim>
350 template<
typename EDC>
353 dealii::Vector<double> &local_vector,
double scale)
355 _pde.Init_ElementRhs(edc, local_vector, scale);
359 template<
typename PDE,
typename VECTOR,
int dim>
362 const std::map<std::string,
const dealii::Vector<double>*> ¶m_values,
363 const std::map<std::string, const VECTOR*> &domain_values,
364 VECTOR& rhs_vector,
double scale)
366 _pde.Init_PointRhs(param_values, domain_values, rhs_vector, scale);
371 template<
typename PDE,
typename VECTOR,
int dim>
372 template<
typename FDC>
376 dealii::Vector<double> &,
double )
382 template<
typename PDE,
typename VECTOR,
int dim>
383 template<
typename FDC>
387 dealii::Vector<double> &,
double )
393 template<
typename PDE,
typename VECTOR,
int dim>
394 template<
typename EDC>
397 dealii::FullMatrix<double> &local_matrix,
double scale,
double scale_ico)
399 _pde.Init_ElementMatrix(edc, local_matrix, scale, scale_ico);
404 template<
typename PDE,
typename VECTOR,
int dim>
405 template<
typename FDC>
408 FullMatrix<double> &local_matrix,
double scale,
double scale_ico)
410 _pde.Init_FaceMatrix(fdc, local_matrix, scale, scale_ico);
415 template<
typename PDE,
typename VECTOR,
int dim>
416 template<
typename FDC>
419 const FDC& fdc, FullMatrix<double> &local_matrix,
double scale,
double scale_ico)
421 _pde.Init_InterfaceMatrix(fdc, local_matrix, scale, scale_ico);
426 template<
typename PDE,
typename VECTOR,
int dim>
427 template<
typename FDC>
430 const FDC& fdc, FullMatrix<double> &local_matrix,
double scale,
double scale_ico)
432 _pde.Init_BoundaryMatrix(fdc, local_matrix, scale, scale_ico);
437 template<
typename PDE,
typename VECTOR,
int dim>
446 template<
typename PDE,
typename VECTOR,
int dim>
447 const SmartPointer<const dealii::FESystem<dim> >
454 template<
typename PDE,
typename VECTOR,
int dim>
455 const SmartPointer<const dealii::hp::FECollection<dim> >
463 template<
typename PDE,
typename VECTOR,
int dim>
469 return r | update_JxW_values;
474 template<
typename PDE,
typename VECTOR,
int dim>
480 return r | update_JxW_values;
485 template<
typename PDE,
typename VECTOR,
int dim>
495 template<
typename PDE,
typename VECTOR,
int dim>
496 template<
typename SPARSITYPATTERN>
499 SPARSITYPATTERN & sparsity)
const
501 _pde.ComputeStateSparsityPattern(sparsity);
506 template<
typename PDE,
typename VECTOR,
int dim>
515 template<
typename PDE,
typename VECTOR,
int dim>
524 template<
typename PDE,
typename VECTOR,
int dim>
533 template<
typename PDE,
typename VECTOR,
int dim>
534 const std::vector<unsigned int>&
542 template<
typename PDE,
typename VECTOR,
int dim>
543 const std::vector<bool>&
545 unsigned int color)
const
552 template<
typename PDE,
typename VECTOR,
int dim>
555 const std::map<std::string,
const dealii::Vector<double>*> ¶m_values,
556 const std::map<std::string, const VECTOR*> &domain_values)
const
563 template<
typename PDE,
typename VECTOR,
int dim>
564 const std::vector<unsigned int>&
572 template<
typename PDE,
typename VECTOR,
int dim>
573 const dealii::ConstraintMatrix&
578 template<
typename PDE,
typename VECTOR,
int dim>
579 const dealii::Function<dim>&
InitialProblem(PDE &pde)
Definition: initialproblem.h:45
dealii::UpdateFlags GetUpdateFlags() const
Definition: initialproblem.h:465
Definition: optproblemcontainer.h:70
std::string GetName() const
Definition: initialproblem.h:51
bool HasInterfaces() const
Definition: initialproblem.h:526
std::string GetType() const
Definition: initialproblem.h:56
std::string GetDoFType() const
Definition: initialproblem.h:439
Definition: timeiterator.h:63
bool HasPoints() const
Definition: initialproblem.h:517
const std::vector< unsigned int > & GetBoundaryEquationColors() const
Definition: initialproblem.h:565
Definition: initialproblem.h:42
const std::vector< bool > & GetDirichletCompMask(unsigned int color) const
Definition: initialproblem.h:544
PDE & GetBaseProblem()
Definition: initialproblem.h:288
const dealii::Function< dim > & GetInitialValues() const
Definition: initialproblem.h:580
void SetTime(double time, const TimeIterator &interval)
Definition: initialproblem.h:487
bool HasFaces() const
Definition: initialproblem.h:508
const Function< dim > & GetDirichletValues(unsigned int color, const std::map< std::string, const dealii::Vector< double > * > ¶m_values, const std::map< std::string, const VECTOR * > &domain_values) const
Definition: initialproblem.h:554
const dealii::SmartPointer< const dealii::hp::FECollection< dim > > GetFECollection() const
Definition: initialproblem.h:456
const dealii::ConstraintMatrix & GetDoFConstraints() const
Definition: initialproblem.h:574
const dealii::SmartPointer< const dealii::FESystem< dim > > GetFESystem() const
Definition: initialproblem.h:448
DOpEOutputHandler< VECTOR > * GetOutputHandler()
Definition: initialproblem.h:283
dealii::UpdateFlags GetFaceUpdateFlags() const
Definition: initialproblem.h:476
const std::vector< unsigned int > & GetDirichletColors() const
Definition: initialproblem.h:535