Many engineering applications require solution of a global finite element problem coupled with nonlinear equations of local nature. Local in the sense, that for a known global state the local solution could be found on cell-by-cell basis. Examples include plastic deformation problems, static condensation (hybridization) of displacement-stress formulation or just a simple nonlinear constitutive laws to be satisfied at each quadrature point.
These types of problems either required special libraries and extensions in order to be solved with FEniCS (and FEniCS-X) tools, or lead to very slow implementations due to hacks and tricks needed to achieve the solution (e.g. monolithic schemes which increase the matrix problem size).
In this talk a unified approach tailored for the current state of FEniCS-X interfaces is presented. The approach computes consistent global tangent operator for nonlinear problems. In addition, local equations are formulated symbolically in UFL, and their derivatives are therefore computed automatically.
Several low-level examples (incl. plasticity with symbolic yield surface, nonlinear static condensation and materials with implicit constitutive laws) that demonstrate the main concepts are presented.
Finally, high-level wrappers for this functionality are presented. These come as a part of package `dolfiny` (https://github.com/michalhabera/dolfiny)