DOpE
constraintvector.h
Go to the documentation of this file.
1 
24 #ifndef _CONSTRAINT_VECTOR_H_
25 #define _CONSTRAINT_VECTOR_H_
26 
27 #include "spacetimehandler_base.h"
28 
29 #include <lac/vector.h>
30 #include <lac/block_vector_base.h>
31 #include <lac/block_vector.h>
32 
33 #include <vector>
34 #include <iostream>
35 #include <sstream>
36 
37 
38 namespace DOpE
39 {
46  template<typename VECTOR>
48  {
49  public:
50  //TODO: Currently we only consider one fixed control
51  // for all timesteps, if more is desired one needs to augment the
52  // Spacetimehandler to have a time discretization for the control,
53  // Then one can update this vector similar to the statevector
54  // with different meshes for Vectors.
55  // Note that this requires to keep track of the interpolation
56  // between state and control time points...
58  ConstraintVector(const SpaceTimeHandlerBase<VECTOR>* STH, std::string behavior);
60 
72  void SetTime(double t, const TimeIterator& interval) const;
73 
82  void SetTimeDoFNumber(unsigned int time_point) const;
83 
87  bool HasType(std::string name) const;
88 
95  VECTOR& GetSpacialVector(std::string name);
96 
101  const VECTOR& GetSpacialVector(std::string name) const;
102 
106  const dealii::Vector<double>& GetGlobalConstraints() const;
110  dealii::Vector<double>& GetGlobalConstraints();
116  void operator=(double value);
123  void operator=(const ConstraintVector& dq);
131  void operator+=(const ConstraintVector& dq);
137  void operator*=(double a);
145  double operator*(const ConstraintVector& dq) const;
154  void add(double s, const ConstraintVector& dq);
161  void equ(double s, const ConstraintVector& dq);
162 
168  void PrintInfos(std::stringstream& out);
169 
178  std::string GetBehavior() const { return _behavior; }
179 
183  const SpaceTimeHandlerBase<VECTOR>* GetSpaceTimeHandler() const { return _STH; }
184 
189  void ReInit();
190 
199  double Norm(std::string name,std::string restriction = "all") const;
200 
210  virtual bool
211  IsFeasible() const;
223  virtual bool
224  IsEpsilonFeasible(double eps) const;
225 
235  virtual bool
236  IsLargerThan(double eps) const;
237 
238 
248  virtual double
250 
251  private:
256  void ReSizeLocalSpace(unsigned int ndofs, const std::vector<unsigned int>& dofs_per_block);
257 
258  void ReSizeGlobal(unsigned int ndofs);
259 
260  std::vector<VECTOR* > _local_control_constraint;
261  mutable VECTOR _local_constraint__control;
262 
263  dealii::Vector<double> _global_constraint;
264 
265  mutable int _accessor;
266 
267  const SpaceTimeHandlerBase<VECTOR>* _STH;
268  std::string _behavior;
269  unsigned int _sfh_ticket;
270  };
271 
272 
273 }
274 #endif
Definition: constraintvector.h:47
double Norm(std::string name, std::string restriction="all") const
Definition: constraintvector.cc:489
void operator*=(double a)
Definition: constraintvector.cc:358
~ConstraintVector()
Definition: constraintvector.cc:84
virtual bool IsLargerThan(double eps) const
Definition: constraintvector.cc:614
double operator*(const ConstraintVector &dq) const
Definition: constraintvector.cc:378
void ReInit()
Definition: constraintvector.cc:60
Definition: spacetimehandler_base.h:47
const dealii::Vector< double > & GetGlobalConstraints() const
Definition: constraintvector.cc:174
void PrintInfos(std::stringstream &out)
Definition: constraintvector.cc:450
const SpaceTimeHandlerBase< VECTOR > * GetSpaceTimeHandler() const
Definition: constraintvector.h:183
Definition: timeiterator.h:63
void SetTimeDoFNumber(unsigned int time_point) const
Definition: constraintvector.cc:102
virtual bool IsEpsilonFeasible(double eps) const
Definition: constraintvector.cc:594
bool HasType(std::string name) const
Definition: constraintvector.cc:119
void operator=(double value)
Definition: constraintvector.cc:268
void SetTime(double t, const TimeIterator &interval) const
Definition: constraintvector.cc:110
void operator+=(const ConstraintVector &dq)
Definition: constraintvector.cc:336
std::string GetBehavior() const
Definition: constraintvector.h:178
void equ(double s, const ConstraintVector &dq)
Definition: constraintvector.cc:426
virtual double Complementarity(const ConstraintVector< VECTOR > &g) const
Definition: constraintvector.cc:634
void add(double s, const ConstraintVector &dq)
Definition: constraintvector.cc:403
VECTOR & GetSpacialVector(std::string name)
Definition: constraintvector.cc:130
ConstraintVector(const ConstraintVector &ref)
Definition: constraintvector.cc:37
virtual bool IsFeasible() const
Definition: constraintvector.cc:574