 Newton solver at the Gauss point level

Hello Everyone,

I want to implement a model in FEniCS which uses a so called “local newton iteration”, where the equation for the internal (tensor-valued) variable \boldsymbol{a} is to be solved at the Gaus point level. From the example of plasticity from Jeremy Bleyer I understand that I should use Quadrature-Elements for the representation at the Gauss-Points.

The equation has the form \boldsymbol{a} = \exp{\boldsymbol{b}} \cdot \boldsymbol{c} where \boldsymbol{b} = \boldsymbol{b}(\boldsymbol{a}) is a non-linear function of \boldsymbol{a} and \boldsymbol{c} = \boldsymbol{c}(\boldsymbol{a} ,\boldsymbol{u}) a nonlinear function of \boldsymbol{a} and the displacement \boldsymbol{u}.

What I do not know is how to solve equations in FEniCS at the Gauss points without defining a weak form. Is this possible?

Hi, currently there is no way of doing this easily with high-level FEniCS syntax. With the latest developments in dolfin-x this should hopefully be easier in the near future.
Currently, I suggest mimicking the demo which uses the MFront code generator at the Gauss point level and replacing it with your own local Newton at the Gauss point level using Numpy for instance.
Alternatively, if your example comes from a nonlinear mechanics constitutive law, it would be even more interesting to implement and solve it with MFront directly using then mgis.fenics.

2 Likes

Hey, thanks for your fast reply, I will try to mimick the MFront demo and will post updates once I get results. I have a question regarding the installation of MFront.
I downloaded the install.sh - file which was referenced at the site you linked, changed the prefix variable to

PREFIX=MFront
and started the script with bash install.sh
It downloads the files from github and create the directories tfel and mgis but when the script reaces the line 86 I get the error

Thanks, this works! 