pygeon.discretizations.vem.vec_hdiv module

Module for the discretizations of the H(div) space.

class pygeon.discretizations.vem.vec_hdiv.VecVRT0(keyword='unitary_data')[source]

Bases: VecDiscretization

VecVRT0 is a tensor-valued discretization class for the virtual Raviart-Thomas RT0 element.

poly_order = 1

Polynomial degree of the basis functions

tensor_order = 2

Matrix-valued discretization

__init__(keyword='unitary_data')[source]

Initialize the vector virtual RT0 discretization class. The base discretization class is pg.VRT0.

We are considering the following structure of the stress tensor in 2D:

\[\begin{split}\sigma = \begin{bmatrix} \sigma_{xx} & \sigma_{xy} \\ \sigma_{yx} & \sigma_{yy} \end{bmatrix}\end{split}\]

which is represented in the code unrolled row-wise as a vector of length 4:

\[\sigma = [\sigma_{xx}, \sigma_{xy}, \sigma_{yx}, \sigma_{yy}]\]

While in 3D the stress tensor can be written as:

\[\begin{split}\sigma = \begin{bmatrix} \sigma_{xx} & \sigma_{xy} & \sigma_{xz} \\ \sigma_{yx} & \sigma_{yy} & \sigma_{yz} \\ \sigma_{zx} & \sigma_{zy} & \sigma_{zz} \end{bmatrix}\end{split}\]

where its vectorized structure of length 9 is given by:

\[\sigma = [\sigma_{xx}, \sigma_{xy}, \sigma_{xz}, \sigma_{yx}, \sigma_{yy}, \sigma_{yz}, \sigma_{zx}, \sigma_{zy}, \sigma_{zz}]\]
Parameters:

keyword (str) – The keyword for the vector discretization class. Default is pg.UNITARY_DATA.

Returns:

None

get_range_discr_class(_dim)[source]

Returns the range discretization class for the given dimension.

Parameters:

dim (int) – The dimension of the range space.

Returns:

The range discretization class.

Return type:

pg.Discretization