Hybrid Discontinuous Galerkin

1. Mixed Poisson

1.1. Notations and units

 Notation Quantity $k$ conductivity $\Lambda$ resistivity

1.2. Equations

Mixed Poisson equations are

\begin{align} \boldsymbol{u} + k\nabla p &= \boldsymbol{f}\\ \nabla\cdot \boldsymbol{u} &= g \end{align}

completed by boundary conditions.

The conductivity $k$ can be non-linear. If it depends only on the primal variable $p$, it is already handle by the model, in other cases, one needs to provide the corresponding expression.

1.3. MixedPoisson Toolbox

The model is described in a json file which path is given by the option mixedpoisson.model_json. The construction of this file is detailed in the following sections.

1.3.1. Models

The models are not considered for now.

Model section
"Model": "HDG"

1.3.2. Materials

The definition of the conductivity $k$ depends on the material, it can be linear or non-linear. In the linear case, it is given in the material we work on by the keyword cond and in the non-linear case, by condNL.

Material section
"Materials":
{
"<marker>":
{
"name": "copper",
"cond": "1",
"condNL": "2*p:p"
}
}

The keywords cond and condNL can be changed respectively by the options mixedpoisson.conductivity_json and mixedpoisson.conductivityNL_json.

1.3.3. Boundary Conditions

All boundary conditions are described in the same way

Listing : boundary conditions in json
"BoundaryConditions":
{
"<field>":
{
"<bc_type>":
{
"<marker>":
{
"<option1>":"<value1>",
"<option2>":"<value2>",
// ...
}
}
}
}

Different types of boundary condition are available.

Dirichlet condition
$p = g_D$
 Field Type Option Value potential Dirichlet expr $g_D$
Neumann condition
$-k\nabla p \cdot\boldsymbol{n} = g_N$
 Field Type Option Value potential Neumann expr $g_DN$ or $-k\nabla p$

The choice between $g_DN$ or $-k\nabla p$ is base on the dimension of the expression.

Robin condition
$-k\nabla p \cdot\boldsymbol{n} + g_R^1 p = g_R^2$
 Field Type Option Value potential Robin expr1 $g_R^1$ potential Robin expr2 $g_R^2$
Integral boundary condition
$\int_{\Gamma_I} \boldsymbol{u}\cdot\boldsymbol{n} = g_I$
 Field Type Option Value flux Integral expr $g_I$

1.3.4. Source Terms

The source terms $f$ and $\boldsymbol{g}$ are treated as boundary condtions.

 Field Type Option Value potential SourceTerm expr $f$ flux SourceTerm expr $\boldsymbol{g}$

1.3.5. Post Process

Two fields can be exported, the potential $p$ and the flux $\boldsymbol{u}$.

Post Process section
"PostProcess":
{
"Fields":["potential","flux"]
}

1.4. Create applications

In order to solve linear problem, an application should contain at least

Minimal Linear case
typedef FeelModels::MixedPoisson<FEELPP_DIM,FEELPP_ORDER> mp_type;
auto MP = mp_type::New("mixedpoisson");
MP->init();
MP->assembleAll();
MP->solve();
MP->exportResults();

2. Mixed Elasticity

2.1. Notations and units

 Notation Quantity $\mathcal A$ compliance operator $\lambda$ first Lamé parameter $\mu$ second Lamé parameter $\rho$ mass density

2.2. Equations

Mixed Elasticity equations are


The compliance operator is defined as follow:

$$\mathcal A\uv = c_1 \uv + c_2 \text{trace}(\uv) \underline{\underline{\mathbf{I}}}$$

where

\begin{align} & c_1 = \dfrac{1}{2\mu} & c_2 = \dfrac{-\lambda}{2\mu \left( 3\lambda + 2\mu \right)} \end{align}

2.3. MixedElasticity Toolbox

The model is described in a json file which path is given by the option mixedelasticity.model_json. The construction of this file is detailed in the following sections.

2.3.1. Models

The models are not considered for now.

Model section
"Model": "HDG"

2.3.2. Materials

In this part we define the two Lamé parameters $\lambda$ and $\mu$ and the mass density $\rho$. It is always necessary to define also the material we work on.

Material section
"Materials":
{
"<marker>":
{
"name": "copper",
"rho":"1",
"lambda":"1",
"mu":"1"
}
}

2.3.3. Boundary Conditions

All boundary conditions are described in the same way

Listing : boundary conditions in json
"BoundaryConditions":
{
"<field>":
{
"<bc_type>":
{
"<marker>":
{
"<option1>":"<value1>",
"<option2>":"<value2>",
// ...
}
}
}
}

Different types of boundary condition are available.

Dirichlet condition
$\uu = \ug_D$
 Field Type Option Value displacement Dirichlet expr $\ug_D$
Neumann condition
$\usigma\;\un = \ug_N$
 Field Type Option Value stress Neumann expr $\ug_DN$
Integral boundary condition
$\int_{\Gamma_I} \usigma \; \un = \underline{\mathbf{F}}_{target}$
 Field Type Option Value stress Integral expr $\underline{\mathbf{F}}_{target}$

2.3.4. Source Term

The source term $\underline{\mathbf{F}}_{ext}$ is treated as a boundary condition.

 Field Type Option Value stress SourceTerm expr $\underline{\mathbf{F}}_{ext}$

2.3.5. Post Process

Two fields can be exported, the displacement $\uu$ and the stress $\usigma$.

Post Process section
"PostProcess":
{
"Fields":["displacement","stress"]
}

Moreover it is possible to apply a scaling after the computation and then export the scaled field, in particular we define in the material section the scale factor for the elements with a specific marker.

Material section
"Materials":
{
"<marker>":
{
"scale_displacement":"1",
"scale_stress":"1:
}
}
Post Process section
"PostProcess":
{
"Fields":["displacement","stress","scaled_displacement","scaled_stress"]
}

2.4. Create applications

In order to solve linear elasticity problem, an application should contain at least

Minimal Elasticity case
typedef FeelModels::MixedElasticity<FEELPP_DIM,FEELPP_ORDER> me_type;
auto ME = me_type::New("mixedelasticity");
ME->init();
ME->solve();
ME->exportResults();

The assembling for the constant part is inside the initialization, while the assembling of the non-constant part (e.g. the right hand side) is in the solve method.

2.5. Run simulations

Programme available to run simulations:

feelpp_toolbox_mixed-elasticity-model_3DP{<polynomial_order>}_G{<geometric_order>}

with =0,1,2,3,4 and =1,2 .