FEniCSx or Multiphenicsx for Nonlinear coupled PDE system

Hello,

i’m currently working on a project regarding the modeling of electrochemical potentail of Solid Oxide Fuel Cell(SOFC) which consist of pure Electronic conducting phase, Nickel and pure ionic conducting phase, YSZ and Gas Pores.

Electrochemical Potential Equations:

  1. Ionic Phase (YSZ):
    \nabla \cdot (\sigma_{io} \nabla V_{io}) = -\rho_{TPB}j \quad \text{in } \Omega_{io}
  2. Electronic Phase (Ni):
    \nabla \cdot (\sigma_{el} \nabla V_{el}) = 2\rho_{TPB}j \quad \text{in } \Omega_{io}
  3. Gas Diffusion Equations (Water)
    \nabla \cdot \left( \frac{D_{H_20}}{RT} \nabla P_{H_20} \right) = \frac{j}{2F} \quad \text{in } \Omega_{pore}
  4. Gas Diffusion Equation (Hydrogen)
    \nabla \cdot \left( \frac{D_{H_2}}{RT} \nabla P_{H_2} \right) = -\frac{j}{2F} \quad \text{in } \Omega_{pore}
  5. Coupled term
    j = j_0 L \left( \exp\left( \frac{F}{RT} (V_{oe} + V_{el} - V_{io}) \right) \sqrt{\frac{P_{H_2}}{P_{H_2O}}} - \exp\left( -\frac{F}{RT} (V_{oe} + V_{el} - V_{io}) \right) \sqrt{\frac{P_{H_2O}}{P_{H_2}}} \right)

Neumann- and Dirichlet Boundary Conditions:
at x=0 :
\dfrac{\partial {V_{io}}}{\partial x} \ = 0,
V_{el}= V_{el}^0,
P_{H_20}=P_{H_20,\infty},
P_{H_2}=P_{H_2,\infty}

at x = L:
\dfrac{\partial {V_{el}}}{\partial x} \ = 0,
V_{io}= 0-1.23,
\dfrac{\partial {P_{H_20}}}{\partial x} \ = 0,
\dfrac{\partial {P_{H_2}}}{\partial x} \ = 0,

Implementation Approach,
I plan to define a total domain as sum of subdomains
\Omega =\Omega_{el} +\Omega_{io} +\Omega_{pore}
Use FenicSx to formulate the weak formulation of each PDE and sum them

F_1+F_2+F_3+F_4 = 0
Applying Boundary Conditions and solve it with nonlinear solver

Questions:
Is this approach of summing each PDE on each subdomain correct?
Is Fenicsx sufficient to handle this multiphysics problem?
If not, i would like to know if theres any tutorial that is similar to this multiphysics problem that i can refer to

Thank you for your time and insight!

Tutorial 03 of multiphenicsx should give you a good starting point on a much simpler problem.

The next release of dolfinx will have codimension 1 support for multiphysics problems. The implementation is completely different from the one in multiphenicsx, and therefore the builtin implementation of dolfinx and the one of multiphenicsx will coexist for the foreseeable future.