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();
292 template<
typename ELEMENTITERATOR>
293 bool AtInterface(ELEMENTITERATOR& element,
unsigned int face)
const;
305 template<
typename PDE,
typename VECTOR,
int dim>
306 template<
typename EDC>
309 dealii::Vector<double> &local_vector,
double scale,
312 pde_.Init_ElementEquation(edc, local_vector, scale, scale_ico);
317 template<
typename PDE,
typename VECTOR,
int dim>
318 template<
typename FDC>
322 dealii::Vector<double> &local_vector,
double scale,
double scale_ico)
324 pde_.Init_FaceEquation(fdc, local_vector, scale, scale_ico);
329 template<
typename PDE,
typename VECTOR,
int dim>
330 template<
typename FDC>
334 dealii::Vector<double> &local_vector,
double scale,
double scale_ico)
336 pde_.Init_InterfaceEquation(fdc, local_vector, scale, scale_ico);
340 template<
typename PDE,
typename VECTOR,
int dim>
341 template<
typename FDC>
345 dealii::Vector<double> &local_vector,
double scale,
double scale_ico)
347 pde_.Init_BoundaryEquation(fdc, local_vector, scale, scale_ico);
352 template<
typename PDE,
typename VECTOR,
int dim>
353 template<
typename EDC>
356 dealii::Vector<double> &local_vector,
double scale)
358 pde_.Init_ElementRhs(edc, local_vector, scale);
362 template<
typename PDE,
typename VECTOR,
int dim>
365 const std::map<std::string,
const dealii::Vector<double>*> ¶m_values,
366 const std::map<std::string, const VECTOR*> &domain_values,
367 VECTOR& rhs_vector,
double scale)
369 pde_.Init_PointRhs(param_values, domain_values, rhs_vector, scale);
374 template<
typename PDE,
typename VECTOR,
int dim>
375 template<
typename FDC>
379 dealii::Vector<double> &,
double )
385 template<
typename PDE,
typename VECTOR,
int dim>
386 template<
typename FDC>
390 dealii::Vector<double> &,
double )
396 template<
typename PDE,
typename VECTOR,
int dim>
397 template<
typename EDC>
400 dealii::FullMatrix<double> &local_matrix,
double scale,
double scale_ico)
402 pde_.Init_ElementMatrix(edc, local_matrix, scale, scale_ico);
407 template<
typename PDE,
typename VECTOR,
int dim>
408 template<
typename FDC>
411 FullMatrix<double> &local_matrix,
double scale,
double scale_ico)
413 pde_.Init_FaceMatrix(fdc, local_matrix, scale, scale_ico);
418 template<
typename PDE,
typename VECTOR,
int dim>
419 template<
typename FDC>
422 const FDC& fdc, FullMatrix<double> &local_matrix,
double scale,
double scale_ico)
424 pde_.Init_InterfaceMatrix(fdc, local_matrix, scale, scale_ico);
429 template<
typename PDE,
typename VECTOR,
int dim>
430 template<
typename FDC>
433 const FDC& fdc, FullMatrix<double> &local_matrix,
double scale,
double scale_ico)
435 pde_.Init_BoundaryMatrix(fdc, local_matrix, scale, scale_ico);
440 template<
typename PDE,
typename VECTOR,
int dim>
449 template<
typename PDE,
typename VECTOR,
int dim>
450 const SmartPointer<const dealii::FESystem<dim> >
457 template<
typename PDE,
typename VECTOR,
int dim>
458 const SmartPointer<const dealii::hp::FECollection<dim> >
466 template<
typename PDE,
typename VECTOR,
int dim>
472 return r | update_JxW_values;
477 template<
typename PDE,
typename VECTOR,
int dim>
483 return r | update_JxW_values;
488 template<
typename PDE,
typename VECTOR,
int dim>
498 template<
typename PDE,
typename VECTOR,
int dim>
499 template<
typename SPARSITYPATTERN>
502 SPARSITYPATTERN & sparsity)
const
504 pde_.ComputeStateSparsityPattern(sparsity);
509 template<
typename PDE,
typename VECTOR,
int dim>
518 template<
typename PDE,
typename VECTOR,
int dim>
527 template<
typename PDE,
typename VECTOR,
int dim>
536 template<
typename PDE,
typename VECTOR,
int dim>
537 const std::vector<unsigned int>&
545 template<
typename PDE,
typename VECTOR,
int dim>
546 const std::vector<bool>&
548 unsigned int color)
const
555 template<
typename PDE,
typename VECTOR,
int dim>
558 const std::map<std::string,
const dealii::Vector<double>*> ¶m_values,
559 const std::map<std::string, const VECTOR*> &domain_values)
const
566 template<
typename PDE,
typename VECTOR,
int dim>
567 const std::vector<unsigned int>&
575 template<
typename PDE,
typename VECTOR,
int dim>
576 const dealii::ConstraintMatrix&
584 template<
typename PDE,
typename VECTOR,
int dim>
585 const dealii::Function<dim>&
593 template<
typename PDE,
typename VECTOR,
int dim>
594 template<
typename ELEMENTITERATOR>
InitialProblem(PDE &pde)
Definition: initialproblem.h:45
dealii::UpdateFlags GetUpdateFlags() const
Definition: initialproblem.h:468
Definition: optproblemcontainer.h:70
std::string GetName() const
Definition: initialproblem.h:51
bool HasInterfaces() const
Definition: initialproblem.h:529
std::string GetType() const
Definition: initialproblem.h:56
std::string GetDoFType() const
Definition: initialproblem.h:442
Definition: timeiterator.h:62
bool HasPoints() const
Definition: initialproblem.h:520
const std::vector< unsigned int > & GetBoundaryEquationColors() const
Definition: initialproblem.h:568
Definition: initialproblem.h:42
bool AtInterface(ELEMENTITERATOR &element, unsigned int face) const
Definition: initialproblem.h:596
const std::vector< bool > & GetDirichletCompMask(unsigned int color) const
Definition: initialproblem.h:547
PDE & GetBaseProblem()
Definition: initialproblem.h:288
const dealii::Function< dim > & GetInitialValues() const
Definition: initialproblem.h:586
void SetTime(double time, const TimeIterator &interval)
Definition: initialproblem.h:490
bool HasFaces() const
Definition: initialproblem.h:511
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:557
const dealii::SmartPointer< const dealii::hp::FECollection< dim > > GetFECollection() const
Definition: initialproblem.h:459
const dealii::ConstraintMatrix & GetDoFConstraints() const
Definition: initialproblem.h:577
const dealii::SmartPointer< const dealii::FESystem< dim > > GetFESystem() const
Definition: initialproblem.h:451
DOpEOutputHandler< VECTOR > * GetOutputHandler()
Definition: initialproblem.h:283
dealii::UpdateFlags GetFaceUpdateFlags() const
Definition: initialproblem.h:479
const std::vector< unsigned int > & GetDirichletColors() const
Definition: initialproblem.h:538