i'm trying to solve the p-Laplace Equation:

\begin{align} \begin{cases} \text{div} (\sigma |\nabla u|^{p-2} \nabla u) = f &\quad \text{in } \Omega\\ u = g &\quad \text{in } \partial\Omega \end{cases} \end{align}

by using the finite element method and minimizing

\begin{align} \label{J} J(v) = \frac{1}{p}\int_{\Omega} \sigma |\nabla v|^p~\mathop{}\!\mathrm{d} x - \int_{\Omega} fv~\mathop{}\!\mathrm{d} x \end{align}

with Newton-Ralphson. Therefore i need to calculate

\begin{align} J'(v) = \int_{\Omega} \sigma |\nabla v|^{p-2} \nabla v \nabla \varphi~\mathop{}\!\mathrm{d} x - \int_{\Omega}f\varphi ~\mathop{}\!\mathrm{d} x \end{align}


\begin{align} J(v)'' = \int_{\Omega} [(p-2) |\nabla v|^{p-4} ( \nabla v \cdot \nabla \varphi) \nabla v + |\nabla v|^{p-2} \nabla \varphi] \nabla \phi \end{align}

where $\varphi, \phi \in W^{1,p}_0$.

I know that i have to integrate over a triangulation, BUT...

How do i mathematically calculate/implement the needed expression $\nabla v$, $\nabla \varphi$ (the basis functions will be the hat/pyramid functions) and then integrate over the triangles?

Can someone help me, recommend me a book, a website or maybe even know an example code for such a problem?

  • $\begingroup$ If the basis is piecewise linear, then $\nabla v$, $\nabla\varphi$ etc. are constant over each element. So to integrate you just have to compute the values per element and multiply by the volume of the element. $\endgroup$ – Rahul Nov 10 '18 at 14:37
  • $\begingroup$ ah okay! yes, the basis are piecewise linear, so of course the gradient has to be constant... do you mean area of a triangle by "volume of the elemente"? $\endgroup$ – superdave99 Nov 13 '18 at 22:13
  • $\begingroup$ Yes, if you are in 2D then it's the area of the triangle. $\endgroup$ – Rahul Nov 14 '18 at 3:39
  • $\begingroup$ Thanks! But how do i handle the right part $\int f \varphi$? $\endgroup$ – superdave99 Nov 15 '18 at 20:49
  • $\begingroup$ It depends on the form of $f$, but in general you will need some kind of quadrature scheme. For piecewise linear elements, I think it's sufficient to just sample at the mesh vertices, but for a more authoritative answer try asking on scicomp.stackexchange.com. $\endgroup$ – Rahul Nov 16 '18 at 5:09

If you are interested mostly in the Matlab implementation it might be worth to check out this paper. It describes an implementation only of a standard Laplacian but the building blocks should be the same. You could also consider using some finite element software like Fenics or Ngsolve in which would the discretization be easy but it might not allow you to easily implement all the numerical methods you want.

  • $\begingroup$ Funniliy i already found that paper. But the interesting part in this paper for me was not the finite element for the standard laplacian, but the part where the paper discusses how to do finite element for a non-linear case (like mine). i already had run the code from this paper and it works... but i need to understand how to numericaly compute the integrals to adapt the code from this paper to my problem :/ $\endgroup$ – superdave99 Nov 15 '18 at 20:51
  • $\begingroup$ I see. Then it depends on what exactly you need and on the precision you need. In general, there is not much to add to Rahul's suggestions. $\endgroup$ – Korf Nov 16 '18 at 10:11

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.