DOpE
ts_base.h
Go to the documentation of this file.
1 
24 #ifndef TSBase_H_
25 #define TSBase_H_
26 
27 #include <deal.II/lac/vector.h>
28 
29 namespace DOpE
30 {
46  template<typename OPTPROBLEM, typename SPARSITYPATTERN, typename VECTOR,
47  int dopedim, int dealdim,
48  template <int, int> class FE = dealii::FESystem,
49  template <int, int> class DH = dealii::DoFHandler>
50  class TSBase
51  {
52  public:
53  TSBase(OPTPROBLEM& OP) :
54  OP_(OP)
55  {
56  }
57  ;
59  {
60  }
61  ;
62 
63  /******************************************************/
70  void
71  SetStepPart(std::string s)
72  {
73  part_ = s;
74  }
75 
76  /******************************************************/
77 
88  void
89  SetTime(double time,
90  unsigned int time_dof_number,
91  const TimeIterator& interval, bool initial = false)
92  {
93  OP_.SetTime(time, time_dof_number, interval,initial);
94  }
95 
96  /******************************************************/
97 
102  template<typename DATACONTAINER>
103  double
104  ElementFunctional(const DATACONTAINER& dc)
105  {
106  return OP_.ElementFunctional(dc);
107  }
108 
109  /******************************************************/
110 
116  double
118  const std::map<std::string, const dealii::Vector<double>*> &param_values,
119  const std::map<std::string, const VECTOR*> &domain_values)
120  {
121  return OP_.PointFunctional(param_values, domain_values);
122  }
123 
124  /******************************************************/
125 
130  template<typename FACEDATACONTAINER>
131  double
132  BoundaryFunctional(const FACEDATACONTAINER& fdc)
133  {
134  return OP_.BoundaryFunctional(fdc);
135  }
136 
137  /******************************************************/
138 
143  template<typename FACEDATACONTAINER>
144  double
145  FaceFunctional(const FACEDATACONTAINER& fdc)
146  {
147  return OP_.FaceFunctional(fdc);
148  }
149 
150  /******************************************************/
151 
157  const dealii::SmartPointer<const dealii::FESystem<dealdim> >
158  GetFESystem() const
159  {
160  return OP_.GetFESystem();
161  }
162 
163  /******************************************************/
164 
171  bool
172  HasFaces() const
173  {
174  return OP_.HasFaces();
175  }
176 
177  /******************************************************/
181  bool
182  HasPoints() const
183  {
184  return OP_.HasPoints();
185  }
186 
187  /******************************************************/
194  bool
196  {
197  return OP_.HasInterfaces();
198  }
199 
200  /******************************************************/
204  template<typename ELEMENTITERATOR>
205  bool AtInterface(ELEMENTITERATOR& element, unsigned int face) const
206  {
207  return OP_.AtInterface(element,face);
208  }
209 
210  /******************************************************/
211 
220  dealii::UpdateFlags
222  {
223  return OP_.GetUpdateFlags();
224  }
225 
226  /******************************************************/
227 
237  dealii::UpdateFlags
239  {
240  return OP_.GetFaceUpdateFlags();
241  }
242 
243  /******************************************************/
244 
250  const std::vector<unsigned int>&
252  {
253  return OP_.GetDirichletColors();
254  }
255 
256  /******************************************************/
257 
264  const std::vector<bool>&
265  GetDirichletCompMask(unsigned int color) const
266  {
267  return OP_.GetDirichletCompMask(color);
268  }
269 
270  /******************************************************/
271 
278  const dealii::Function<dealdim>&
279  GetDirichletValues(unsigned int color,
280  const std::map<std::string, const dealii::Vector<double>*> &param_values,
281  const std::map<std::string, const VECTOR*> &domain_values) const
282  {
283  return OP_.GetDirichletValues(color, param_values, domain_values);
284  }
285 
286  /******************************************************/
287 
294  const dealii::Function<dealdim>&
296  {
297  return OP_.GetInitialValues();
298  }
299 
300  /******************************************************/
301 
307  const std::vector<unsigned int>&
309  {
310  return OP_.GetBoundaryEquationColors();
311  }
312 
313  /******************************************************/
314 
320  const std::vector<unsigned int>&
322  {
323  return OP_.GetBoundaryFunctionalColors();
324  }
325 
326  /******************************************************/
327 
333  unsigned int
335  {
336  return OP_.GetNFunctionals();
337  }
338 
339  /******************************************************/
340 
346  unsigned int
347  GetNBlocks() const
348  {
349  return OP_.GetNBlocks();
350  }
351 
352  /******************************************************/
353 
359  unsigned int
360  GetDoFsPerBlock(unsigned int b) const
361  {
362  return OP_.GetDoFsPerBlock(b);
363  }
364 
365  /******************************************************/
366 
372  const std::vector<unsigned int>&
374  {
375  return OP_.GetDoFsPerBlock();
376  }
377 
378  /******************************************************/
379 
385  const dealii::ConstraintMatrix&
387  {
388  return OP_.GetDoFConstraints();
389  }
390 
391  std::string
392  GetType() const
393  {
394  return OP_.GetType();
395  }
396  std::string
397  GetDoFType() const
398  {
399  return OP_.GetDoFType();
400  }
401 
402  /******************************************************/
403 
415  std::string
417  {
418  return OP_.GetFunctionalType();
419  }
420 
421  /******************************************************/
422 
428  std::string
430  {
431  return OP_.GetFunctionalName();
432  }
433 
434  /******************************************************/
435 
443  {
444  return OP_.GetOutputHandler();
445  }
446 
447  /******************************************************/
448 
454  const SpaceTimeHandler<FE, DH, SPARSITYPATTERN, VECTOR, dopedim,
455  dealdim>*
457  {
458  return OP_.GetBaseProblem().GetSpaceTimeHandler();
459  }
460  SpaceTimeHandler<FE, DH, SPARSITYPATTERN, VECTOR, dopedim,
461  dealdim>*
463  {
464  return OP_.GetBaseProblem().GetSpaceTimeHandler();
465  }
466 
467  /******************************************************/
468 
469  void
470  ComputeSparsityPattern(SPARSITYPATTERN & sparsity) const
471  {
472  OP_.ComputeSparsityPattern(sparsity);
473  }
474  protected:
475  /******************************************************/
479  OPTPROBLEM&
481  {
482  return OP_;
483  }
484  /******************************************************/
485 
492  std::string
493  GetPart() const
494  {
495  return part_;
496  }
497 
498  private:
499  OPTPROBLEM& OP_;
500  std::string part_;
501  };
502 }
503 #endif
dealii::UpdateFlags GetUpdateFlags() const
Definition: ts_base.h:221
void SetStepPart(std::string s)
Definition: ts_base.h:71
DOpEOutputHandler< VECTOR > * GetOutputHandler()
Definition: ts_base.h:442
unsigned int GetNBlocks() const
Definition: ts_base.h:347
const dealii::ConstraintMatrix & GetDoFConstraints() const
Definition: ts_base.h:386
const dealii::Function< dealdim > & GetDirichletValues(unsigned int color, const std::map< std::string, const dealii::Vector< double > * > &param_values, const std::map< std::string, const VECTOR * > &domain_values) const
Definition: ts_base.h:279
const std::vector< unsigned int > & GetBoundaryFunctionalColors() const
Definition: ts_base.h:321
dealii::UpdateFlags GetFaceUpdateFlags() const
Definition: ts_base.h:238
Definition: dopetypes.h:106
bool AtInterface(ELEMENTITERATOR &element, unsigned int face) const
Definition: ts_base.h:205
~TSBase()
Definition: ts_base.h:58
TSBase(OPTPROBLEM &OP)
Definition: ts_base.h:53
Definition: ts_base.h:50
Definition: optproblemcontainer.h:70
double BoundaryFunctional(const FACEDATACONTAINER &fdc)
Definition: ts_base.h:132
bool HasPoints() const
Definition: ts_base.h:182
std::string GetDoFType() const
Definition: ts_base.h:397
const dealii::Function< dealdim > & GetInitialValues() const
Definition: ts_base.h:295
Definition: timeiterator.h:62
bool HasFaces() const
Definition: ts_base.h:172
std::string GetFunctionalType() const
Definition: ts_base.h:416
unsigned int GetDoFsPerBlock(unsigned int b) const
Definition: ts_base.h:360
const dealii::SmartPointer< const dealii::FESystem< dealdim > > GetFESystem() const
Definition: ts_base.h:158
double ElementFunctional(const DATACONTAINER &dc)
Definition: ts_base.h:104
bool HasInterfaces() const
Definition: ts_base.h:195
double PointFunctional(const std::map< std::string, const dealii::Vector< double > * > &param_values, const std::map< std::string, const VECTOR * > &domain_values)
Definition: ts_base.h:117
const std::vector< bool > & GetDirichletCompMask(unsigned int color) const
Definition: ts_base.h:265
const std::vector< unsigned int > & GetBoundaryEquationColors() const
Definition: ts_base.h:308
unsigned int GetNFunctionals() const
Definition: ts_base.h:334
const SpaceTimeHandler< FE, DH, SPARSITYPATTERN, VECTOR, dopedim, dealdim > * GetSpaceTimeHandler() const
Definition: ts_base.h:456
Definition: spacetimehandler.h:71
OPTPROBLEM & GetProblem()
Definition: ts_base.h:480
std::string GetPart() const
Definition: ts_base.h:493
SpaceTimeHandler< FE, DH, SPARSITYPATTERN, VECTOR, dopedim, dealdim > * GetSpaceTimeHandler()
Definition: ts_base.h:462
const std::vector< unsigned int > & GetDoFsPerBlock() const
Definition: ts_base.h:373
const std::vector< unsigned int > & GetDirichletColors() const
Definition: ts_base.h:251
std::string GetType() const
Definition: ts_base.h:392
void ComputeSparsityPattern(SPARSITYPATTERN &sparsity) const
Definition: ts_base.h:470
void SetTime(double time, unsigned int time_dof_number, const TimeIterator &interval, bool initial=false)
Definition: ts_base.h:89
double FaceFunctional(const FACEDATACONTAINER &fdc)
Definition: ts_base.h:145
std::string GetFunctionalName() const
Definition: ts_base.h:429