LocalVect< T_, N_ > Class Template Reference

Handles small size vectors like element vectors. More...

#include <LocalVect.h>

Public Member Functions

 LocalVect ()
 Default constructor.
 
 LocalVect (const T_ *a)
 Constructor using a C-array.
 
 LocalVect (const Element *el)
 Constructor using Element pointer.
 
 LocalVect (const Side *sd)
 Constructor using Side pointer.
 
 LocalVect (const LocalVect< T_, N_ > &v)
 Copy constructor.
 
 LocalVect (const Element *el, const Vect< T_ > &v, int opt=0)
 Constructor of an element vector from a global Vect instance.
 
 LocalVect (const Element &el, const Vect< T_ > &v, int opt=0)
 Constructor of an element vector from a global Vect instance.
 
 LocalVect (const Side *sd, const Vect< T_ > &v, int opt=0)
 Constructor of a side vector from a global Vect instance.
 
 ~LocalVect ()
 Destructor.
 
void getLocal (const Element &el, const Vect< T_ > &v, int type)
 Localize an element vector from a global Vect instance.
 
void Localize (const Element *el, const Vect< T_ > &v, size_t k=0)
 Localize an element vector from a global Vect instance.
 
void Localize (const Side *sd, const Vect< T_ > &v, size_t k=0)
 Localize a side vector from a global Vect instance.
 
void clear ()
 Clear vector.
 
T_ & operator[] (size_t i)
 Operator [] (Non constant version).
 
T_ operator[] (size_t i) const
 Operator [] (Constant version).
 
T_ & operator() (size_t i)
 Operator () (Non constant version).
 
T_ operator() (size_t i) const
 Operator () (Constant version).
 
Element * El ()
 Return pointer to Element if vector was constructed using an element and nullptr otherwise.
 
Side * Sd ()
 Return pointer to Side if vector was constructed using a side and nullptr otherwise.
 
LocalVect< T_, N_ > & operator= (const LocalVect< T_, N_ > &v)
 Operator =
 
LocalVect< T_, N_ > & operator= (const T_ &x)
 Operator =
 
LocalVect< T_, N_ > & operator+= (const LocalVect< T_, N_ > &v)
 Operator +=
 
LocalVect< T_, N_ > & operator+= (const T_ &a)
 Operator +=
 
LocalVect< T_, N_ > & operator-= (const LocalVect< T_, N_ > &v)
 Operator -=
 
LocalVect< T_, N_ > & operator-= (const T_ &a)
 Operator -=
 
LocalVect< T_, N_ > & operator*= (const T_ &a)
 Operator *=
 
LocalVect< T_, N_ > & operator/= (const T_ &a)
 Operator /=
 
T_ * get ()
 Return pointer to vector as a C-Array.
 
T_ operator, (const LocalVect< T_, N_ > &v) const
 Return Dot (scalar) product of two vectors.
 

Detailed Description

template<class T_, size_t N_>
class OFELI::LocalVect< T_, N_ >

Handles small size vectors like element vectors.

The template class LocalVect treats small size vectors. Typically, this class is recommended to store element and side arrays. Operators =, [] and () are overloaded so that one can write for instance:

     LocalVect<double,10> u, v;
     v = -1.0;
     u = v;
     u(3) = -2.0;

to set vector v entries to -1, copy vector v into vector u and assign third entry of v to -2. Notice that entries of v are here v(1), v(2), ..., v(10), i.e. vector entries start at index 1.
Internally, no dynamic storage is used.

Template Parameters
T_Data type (double, float, complex<double>, ...)
N_Vector size
Author
Rachid Touzani

Constructor & Destructor Documentation

◆ LocalVect() [1/3]

template<class T_ , size_t N_>
LocalVect ( const Element * el,
const Vect< T_ > & v,
int opt = 0 )

Constructor of an element vector from a global Vect instance.

The constructed vector has local numbering of nodes

Parameters
[in]elPointer to Element to localize
[in]vGlobal vector to localize
[in]optOption for DOF treatment
  • = 0, Normal case [Default]
  • Any other value : only one DOF is handled (Local vector has as dimension number of degrees of freedom)

◆ LocalVect() [2/3]

template<class T_ , size_t N_>
LocalVect ( const Element & el,
const Vect< T_ > & v,
int opt = 0 )

Constructor of an element vector from a global Vect instance.

The constructed vector has local numbering of nodes

Parameters
[in]elReference to Element instance to localize
[in]vGlobal vector to localize
[in]optOption for DOF treatment
  • = 0, Normal case [Default]
  • Any other value : only one DOF is handled (Local vector has as dimension number of degrees of freedom)

◆ LocalVect() [3/3]

template<class T_ , size_t N_>
LocalVect ( const Side * sd,
const Vect< T_ > & v,
int opt = 0 )

Constructor of a side vector from a global Vect instance.

The constructed vector has local numbering of nodes

Parameters
[in]sdPointer to Side to localize
[in]vGlobal vector to localize
[in]optOption for DOF treatment
  • = 0, Normal case [Default]
  • Any other value : only one DOF is handled (Local vector has as dimension number of degrees of freedom)

Member Function Documentation

◆ clear()

template<class T_ , size_t N_>
void clear ( )

Clear vector.

Set all vector entries to zero

◆ getLocal()

template<class T_ , size_t N_>
void getLocal ( const Element & el,
const Vect< T_ > & v,
int type )

Localize an element vector from a global Vect instance.

The constructed vector has local numbering of nodes This function is called by the constructor: LocalVect(const Element *el, const Vect<T_> &v)

Parameters
[in]elPointer to Element to localize
[in]vGlobal vector to localize
[in]typeType of element. This is to be chosen among enumerated values: LINE2, TRIANG3, QUAD4, TETRA4, HEXA8, PENTA6

◆ Localize() [1/2]

template<class T_ , size_t N_>
void Localize ( const Element * el,
const Vect< T_ > & v,
size_t k = 0 )

Localize an element vector from a global Vect instance.

The constructed vector has local numbering of nodes This function is called by the constructor: LocalVect(const Element *el, const Vect<T_> &v)

Parameters
[in]elPointer to Side to localize
[in]vGlobal vector to localize
[in]kDegree of freedom to localize [Default: All degrees of freedom are stored]

◆ Localize() [2/2]

template<class T_ , size_t N_>
void Localize ( const Side * sd,
const Vect< T_ > & v,
size_t k = 0 )

Localize a side vector from a global Vect instance.

The constructed vector has local numbering of nodes This function is called by the constructor: LocalVect(const Side *sd, const Vect<T_> &v)

Parameters
[in]sdPointer to Side to localize
[in]vGlobal vector to localize
[in]kDegree of freedom to localize [Default: All degrees of freedom are stored]

◆ operator()() [1/2]

template<class T_ , size_t N_>
T_ & operator() ( size_t i)

Operator () (Non constant version).

v(i) starts at v(1) to v(size()). v(i) is the same element as v[i-1]

◆ operator()() [2/2]

template<class T_ , size_t N_>
T_ operator() ( size_t i) const

Operator () (Constant version).

v(i) starts at v(1) to v(size()) v(i) is the same element as v[i-1]

◆ operator*=()

template<class T_ , size_t N_>
LocalVect< T_, N_ > & operator*= ( const T_ & a)

Operator *=

Multiply vector by constant a

◆ operator+=() [1/2]

template<class T_ , size_t N_>
LocalVect< T_, N_ > & operator+= ( const LocalVect< T_, N_ > & v)

Operator +=

Add vector v to this instance

◆ operator+=() [2/2]

template<class T_ , size_t N_>
LocalVect< T_, N_ > & operator+= ( const T_ & a)

Operator +=

Add constant a to vector entries

◆ operator,()

template<class T_ , size_t N_>
T_ operator, ( const LocalVect< T_, N_ > & v) const

Return Dot (scalar) product of two vectors.

A typical use of this operator is double a = (v,w) where v and w are 2 instances of LocalVect<double,n>

Parameters
[in]vLocalVect instance by which the current instance is multiplied

◆ operator-=() [1/2]

template<class T_ , size_t N_>
LocalVect< T_, N_ > & operator-= ( const LocalVect< T_, N_ > & v)

Operator -=

Subtract vector v from this instance

◆ operator-=() [2/2]

template<class T_ , size_t N_>
LocalVect< T_, N_ > & operator-= ( const T_ & a)

Operator -=

Subtract constant a from vector entries

◆ operator/=()

template<class T_ , size_t N_>
LocalVect< T_, N_ > & operator/= ( const T_ & a)

Operator /=

Divide vector by constant a

◆ operator=() [1/2]

template<class T_ , size_t N_>
LocalVect< T_, N_ > & operator= ( const LocalVect< T_, N_ > & v)

Operator =

Copy a LocalVect instance to the current one

◆ operator=() [2/2]

template<class T_ , size_t N_>
LocalVect< T_, N_ > & operator= ( const T_ & x)

Operator =

Assign value x to all vector entries

◆ operator[]() [1/2]

template<class T_ , size_t N_>
T_ & operator[] ( size_t i)

Operator [] (Non constant version).

v[i] starts at v[0] to v[size()-1]

◆ operator[]() [2/2]

template<class T_ , size_t N_>
T_ operator[] ( size_t i) const

Operator [] (Constant version).

v[i] starts at v[0] to v[size()-1]