Mixed Poisson
Notations and units
Notation |
Quantity |
\$k\$ |
conductivity |
\$\Lambda\$ |
resistivity |
Equations
Mixed Poisson equations are
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.
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.
Models
The models are not considered for now.
"Model": "HDG"
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
.
"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
.
Boundary Conditions
All boundary conditions are described in the same way
"BoundaryConditions":
{
"<field>":
{
"<bc_type>":
{
"<marker>":
{
"<option1>":"<value1>",
"<option2>":"<value2>",
// ...
}
}
}
}
Different types of boundary condition are available.
Dirichlet condition
Field |
Type |
Option |
Value |
|
|
|
\$g_D\$ |
Neumann condition
Field |
Type |
Option |
Value |
|
|
|
\$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
Field |
Type |
Option |
Value |
|
|
|
\$g_R^1\$ |
|
|
|
\$g_R^2\$ |
Integral boundary condition
Field |
Type |
Option |
Value |
|
|
|
\$g_I\$ |
Source Terms
The source terms \$f\$ and \$\boldsymbol{g}\$ are treated as boundary condtions.
Field |
Type |
Option |
Value |
|
|
|
\$f\$ |
|
|
|
\$\boldsymbol{g}\$ |
Post Process
Two fields can be exported, the potential \$p\$ and the flux \$\boldsymbol{u}\$.
"PostProcess":
{
"Fields":["potential","flux"]
}
Create applications
In order to solve linear problem, an application should contain at least
typedef FeelModels::MixedPoisson<FEELPP_DIM,FEELPP_ORDER> mp_type;
auto MP = mp_type::New("mixedpoisson");
MP->init();
MP->assembleAll();
MP->solve();
MP->exportResults();