## 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
"Models": { "equations":"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 $g$ flux SourceTerm expr $\boldsymbol{f}$

#### 1.3.5. Post Process

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

Post Process section
"PostProcess":
{
"Exports":
{
"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();