DOpE
|
#include <controlvector.h>
Public Member Functions | |
ControlVector (const ControlVector &ref) | |
ControlVector (const SpaceTimeHandlerBase< VECTOR > *STH, DOpEtypes::VectorStorageType behavior) | |
~ControlVector () | |
void | SetTime (double t, const TimeIterator &interval) const |
void | SetTimeDoFNumber (unsigned int time_point) const |
VECTOR & | GetSpacialVector () |
const VECTOR & | GetSpacialVector () const |
const dealii::Vector< double > & | GetSpacialVectorCopy () const |
void | operator= (double value) |
void | operator= (const ControlVector &dq) |
void | operator+= (const ControlVector &dq) |
void | operator*= (double a) |
double | operator* (const ControlVector &dq) const |
void | add (double s, const ControlVector &dq) |
void | equ (double s, const ControlVector &dq) |
void | max (const ControlVector &dq) |
void | min (const ControlVector &dq) |
void | comp_mult (const ControlVector &dq) |
void | comp_invert () |
void | init_by_sign (double smaller, double larger, double unclear, double TOL=1.e-10) |
void | PrintInfos (std::stringstream &out) |
void | UnLockCopy () const |
DOpEtypes::VectorStorageType | GetBehavior () const |
const SpaceTimeHandlerBase < VECTOR > * | GetSpaceTimeHandler () const |
void | ReInit () |
double | Norm (std::string name, std::string restriction="all") const |
This class represents the controlvector.
<VECTOR> | Class in which we want to store the spatial vector (i.e. dealii::Vector<double> or dealii::BlockVector<double>) |
ControlVector::ControlVector | ( | const ControlVector< VECTOR > & | ref | ) |
ControlVector::ControlVector | ( | const SpaceTimeHandlerBase< VECTOR > * | STH, |
DOpEtypes::VectorStorageType | behavior | ||
) |
ControlVector::~ControlVector | ( | ) |
void ControlVector::add | ( | double | s, |
const ControlVector< VECTOR > & | dq | ||
) |
Sets this vector adds a multiple of an other vector to this vector. this = this + s * dq It expects both vectors to be of the same structure.
s | A double, by which the other vector is scaled. |
dq | The other vector. |
void ControlVector::comp_invert | ( | ) |
Inverts the elements of the vetor component wise
void ControlVector::comp_mult | ( | const ControlVector< VECTOR > & | dq | ) |
Computes the component wise product of this vector with the argument.
void ControlVector::equ | ( | double | s, |
const ControlVector< VECTOR > & | dq | ||
) |
Sets this vector to the values of an other given vector. The vector is not resized!
dq | The other vector. |
|
inline |
This returns the behavior of the ControlVector
|
inline |
VECTOR & ControlVector::GetSpacialVector | ( | ) |
Returns a reference to the spacial vector associated to the last time given by SetTime* If the vecor behavior is initial this generates an error if we are not in the initial time point.
const VECTOR & ControlVector::GetSpacialVector | ( | ) | const |
Returns a const reference to the spacial vector associated to the last time given by SetTime*
const Vector< double > & ControlVector::GetSpacialVectorCopy | ( | ) | const |
Returns a const reference to the spacial vector associated to the last time given by SetTime* This makes a copy of the real vector in order to change the vector type. To assert data integrity this Only one Copy may be obtained at any time. Hence prior to calling this Function again UnLockCopy must be called.
void ControlVector::init_by_sign | ( | double | smaller, |
double | larger, | ||
double | unclear, | ||
double | TOL = 1.e-10 |
||
) |
Initializes this vector according to the signs in it.
smaller | value to be taken if sign is negative |
larger | value to be taken if sign is positive |
unclear | value to be taken if sign is unclear |
TOL | if abs(value) < TOL we consider the sign to be unclear |
void ControlVector::max | ( | const ControlVector< VECTOR > & | dq | ) |
Sets this vector to the componentwise maximum of its own entries and that of the other vector The vector is not resized!
dq | The other vector. |
void ControlVector::min | ( | const ControlVector< VECTOR > & | dq | ) |
Sets this vector to the componentwise minimum of its own entries and that of the other vector The vector is not resized!
dq | The other vector. |
double ControlVector::Norm | ( | std::string | name, |
std::string | restriction = "all" |
||
) | const |
Computes the norm given by name of the vector. Feasible values are "infty", and "l1" The string restriction defines if only certain values are to be considered. Currently "all" and "positive" are feasible Meaning that either all or only the positive entries are considered.
double ControlVector::operator* | ( | const ControlVector< VECTOR > & | dq | ) | const |
Computes the Euclidean scalar product of this vector with the argument. Both Vectors must have the same struckture.
dq | The argument for the computation of the scalarproduct. |
void ControlVector::operator*= | ( | double | a | ) |
Multiplies the Vector with a constant.
a | A double to be multiplied with the vector. |
void ControlVector::operator+= | ( | const ControlVector< VECTOR > & | dq | ) |
Upon completion each entry of this Vector contains the following Result this = this + dq; It is required that both this and dq have the same structure!
dq | The increment. |
void ControlVector::operator= | ( | double | value | ) |
Sets all the vector to a constant value.
value | The constant value to be assigned to the vector. |
void ControlVector::operator= | ( | const ControlVector< VECTOR > & | dq | ) |
Sets this vector to the values of an other given vector. If required this vector is resized. This invalidates all prior SetTime* calls.
dq | The other vector. |
void ControlVector::PrintInfos | ( | std::stringstream & | out | ) |
Prints Information on this vector into the given stream.
out | The output stream. |
void ControlVector::ReInit | ( | ) |
Call if the SpaceTimeHandler has changed to reinitialize vector sizes.
void ControlVector::SetTime | ( | double | t, |
const TimeIterator & | interval | ||
) | const |
Sets the time in the vector. This Function or SetTimeDoFNumber must be called before calling GetSpacialVector in order to load the required data.
t | A double containing the time we are interested in. If t doesn't match the time given by time_point, then an interpolation between the corresponding time_points is computed. |
interval | An TimeIterator. The interval containing t. |
void ControlVector::SetTimeDoFNumber | ( | unsigned int | time_point | ) | const |
Sets the time in the vector. This Function or SetTime must be called before calling GetSpacialVector in order to load the required data.
time_point | An unsigned integer. This gives the number of the point in the time mesh. |
|
inline |
This unlocks the function GetSpacialVectorCopy