p_laplacian
The p-Laplacian Problem on the Unit Square


p_laplacian, a FENICS code which uses the finite element method to solve a version of the p-Laplacian equation over the unit square.

Solve the nonlinear PDE:

      - div gamma(u) grad u = f in Omega = [0,1]x[0,1]
                          u = 0 on dOmega
where: gamma(u) = ( epsilon^2 + |grad u|^2) ) ^ ( (p-2)/2 ) = ( epsilon^2 + wx^2 + wy^2 ) ^ ( (p-2)/2 ) epsilon = 1.0E-05 f(x,y) = 2*pi*pi*sin(pi*x) * sin(pi*y) The parameter epsilon artificially keeps gamma(u) bounded above 0, guaranteeing that the power (p-2)/2 is meaningful, and the equation is solvable.

Note that I have installed FENICS using Docker, and so to run this script I issue the commands:

  1. cd $HOME/fenicsproject/p_laplacian
  2. fenicsproject run
  3. python3 p_laplacian.py
  4. exit

Licensing:

The GNU LGPL license.

Reference:

  1. John Barrett, W B Liu,
    Finite Element Approximation of the p-Laplacian,
    Mathematics of Computation,
    Volume 61, Number 204, pages 423-537, October 1993.
  2. Patrick Farrell, Hans Petter Langtangen, Marie Rognes, Garth Wells,
    Implementing finite element models in Python/FEniCS: steady nonlinear PDEs,
    MMSC: Python in Scientific Computing,
    May 6, 2015
  3. Hans Petter Langtangen, Anders Logg,
    Solving PDEs in Python - The FEniCS Tutorial Volume 1.

Source Code:


Last revised on 29 October 2018.