1. Thermoelectric nonlinear

1.1. Problem

This application generates reduced basis and does convergence tests on a thermoelectric nonlinear problem, where the electric and thermal conductivy depend on the temperature.

\[\begin{aligned} -\nabla\cdot\left(\sigma(T)\nabla V\right) &= 0 & \text{ in } \Omega_V\\ V &= g_D &\text{ on } \Gamma_D^V\\ -\sigma(T)\nabla V\cdot\mathbf{n} &= 0 & \text{ on } \Gamma_N^V \end{aligned}\]
\[\begin{aligned} -\nabla\cdot\left(k(T)\nabla T\right) &= -\sigma(T)\nabla V\cdot \nabla V & \text{ in } \Omega_T\\ -k(T)\nabla T\cdot\mathbf{n} &= 0 & \text{ on } \Gamma_N^T\\ -k(T)\nabla T\cdot\mathbf{n} &= g_R^1T - g_R^2 & \text{ on } \Gamma_R^T \end{aligned}\]

This problem is parametrized:

  • \(\sigma\) can depend on parameters such as \(\sigma_0,\alpha\) in addition of the temperature,

  • \(k\) can depend on parameters such as \(\sigma_0,k_0,L,\alpha\) in addition of the temperature,

  • \(g_D, g_R^1, g_R^2\) can depend on parameters such as \(h,T_w,V_D\)

where:

  • \(\alpha\) is the temperature coefficient of resistivity

  • \(h\) is the heat exchange coefficient

  • \(T_w\) is the water temperature

  • \(V_D\) is a difference of electric potential

Note that \(\Omega_V\) and \(\Omega_T\) can be different.

The Empirical Interpolation method will be used to deal with non linear terms, \(\sigma(T),k(T),\sigma(T)\nabla V\cdot\nabla V\). Alternatively, we can use the Discrete version of EIM to deal with the affine decomposition (WIP).

1.2. Options

The applicaiton can be piloted via a set of options, the more important are:

thermoelectric.filename

path of the model file in json format, see the following section

thermoekectric.trainset-eim-size

the size of the trainset for EIM/DEIM

thermoelectric.basename

the name of the database

gmsh.filename

path of the geometry

crb.rebuild-database

boolean to rebuild the database

crb.output-index

index of the output to use

crb.dimension-max

maximum dimension of the reduced basis

crb.error-type

error type (0: residual, 1: residual with scm, 2: random, 3: empirical)

eim.rebuild-database

boolean to rebuild the EIM database

eim.dimension-max

maximum dimension of the EIM basis

ser.rb-frequency

number of RB basis built per step of SER process, 0 : no SER

ser.eim-frequency

number of EIM basis built per step of SER process, 0 : no SER

1.3. Model file

The model to use, materials, boundary conditions, outputs, is set via a model file with the following sections.

Parameters
"Parameters": (1)
{
    "sigma": (2)
    {
        "value":55e+3, (3)
        "min":50e+3, (4)
        "max":60e+3 (5)
    },
  • <1>: name of the section

  • <2>: name of the parameter

  • <3>: value of the parameter, might be used as default parameter

  • <4>: minimum of the parameter

  • <5>: maximum of the parameter

If a parameter does not have a min/max, it can be used in the application but will not be used to build the reduced basis, ie it won’t be possible to change it afterwards.

Materials
"Materials": (1)
{
    "omega": (2)
    {
        "physics": ["thermic","electric"], (3)
        "misc": (4)
        {
            "sigmaKey": "sigma", (5)
            "alphaKey": "alpha" (6)
        }
    }
  • <1>: name of the section

  • <2>: name of the material

  • <3>: physics of the material, can be thermic or electric or both

  • <4>: miscalleneous properties of the material

  • <5>: the name of the parameter to use for sigma

  • <6>: the name of the parameter to use for alpha

Boundary conditions
"BoundaryConditions": (1)
{
    "field": (2)
    {
        "type": (3)
        {
            "marker": (4)
            {
                "expr":"expression" (5)
                "expr1":"expression" (6)
                "expr2":"expression" (7)
                "material":"omega" (8)
            }
        }
    }
}
  • <1>: name of the section

  • <2>: name of the field: can be either potential or temperature

  • <3>: type of the condition: can be Dirichlet for potential or Robin for `temperature

  • <4>: marker on which to apply the condition

  • <5>: expression for the Dirichlet condition \(g_D\), can depend on the parameters

  • <6>: first expression for the Robin condition \(g_R^1\), can depend on the parameters

  • <7>: second expression for the Robin condition \(g_R^2\), can depend on the parameters

  • <8>: name of the material to use for weak Dirichlet conditions

Outputs
"Outputs": (1)
{
    "average_temp": (2)
    {
        "type":"averageTemp", (3)
        "markers":"omega", (4)
        "topodim":3 (5)
    },
    "intensity":
    {
        "type":"intensity",
        "markers":"V0",
        "topodim":2
    },
    "point1":
    {
        "type":"point",
        "coord":"{0,1.5,1}", (6)
        "field":"electric-potential" (7)
    },
  • <1>: name of the section

  • <2>: name of the output

  • <3>: type of the output: can be averageTemp for the average temperature, intensity for the intensity of the electric field or point for the value of field at a point

  • <4>: marker on which applying the ouptut, only for averageTemp and intensity

  • <5>: topological dimension of the marker

  • <6>: coordinates of the point

  • <7>: field to compute the value, can be eletric-potential or temperature

Be careful that the order in the json does not corresponds to the index given in the option crb.output-index.