# A simple eigenvalue solver in DOLFIN-X

**URL:** <https://fenicsproject.discourse.group/t/a-simple-eigenvalue-solver-in-dolfin-x/3790>\
**Category:** Uncategorized\
**Created:** [July 15, 2020, 8:53pm UTC](https://fenicsproject.discourse.group/t/a-simple-eigenvalue-solver-in-dolfin-x/3790 "2020-07-15T20:53:15Z")\
**Posts on this page:** 1\
**Showing post:** 3

<div class="post-metadata">

**Author:** ![bhaveshshrimali](https://yyz2.discourse-cdn.com/free1/user_avatar/fenicsproject.discourse.group/bhaveshshrimali/32/124_2.png) [@bhaveshshrimali](https://fenicsproject.discourse.group/u/bhaveshshrimali)\
**Post date:** [July 16, 2020, 2:14am UTC](https://fenicsproject.discourse.group/t/a-simple-eigenvalue-solver-in-dolfin-x/3790/3 "2020-07-16T02:14:49Z")

</div>

Disclaimer: This is something I tested quite sometime back with dolfinx-`2019.2.9.99` so no guarantees that will work as is, but should be a good starting point in case if it doesn’t too

```python
import numpy as np
import matplotlib.pyplot as plt
from mpi4py import MPI
from dolfinx import Function, FunctionSpace, UnitSquareMesh
from dolfinx.fem import assemble_matrix, Form
from dolfinx.plotting import plot
from ufl import TrialFunction, TestFunction, grad, dx, dot
from slepc4py import SLEPc

mesh = UnitSquareMesh(MPI.COMM_WORLD, 10, 10)
V = FunctionSpace(mesh, ("CG", 1))

u = TrialFunction(V)
v = TestFunction(V)
a = dot(grad(u), grad(v))*dx
# form = Form(a)

# Assemble stiffness tensor
A = assemble_matrix(a, [])
A.assemble()

eigensolver = SLEPc.EPS().create(MPI.COMM_WORLD)
eigensolver.setOperators(A)

eigensolver.solve()
vr, vi = A.getVecs()

lmbda = eigensolver.getEigenpair(0, vr, vi)
u = Function(V)
u.vector.setArray(vr.array)

# Plot eigenfunction (0-th)
plt.figure(figsize=(8,8))
eig1 = plot(u, cmap=plt.cm.jet)
plot(mesh)
plt.colorbar(eig1)

```

 ![dolfinxNew](https://global.discourse-cdn.com/free1/uploads/fenicsproject1/original/2X/6/65b850da2568596eb10c53cc03ae05f4c5e54579.png)

translated from

```python
import numpy as np
import matplotlib.pyplot as plt
from dolfin import *

mesh = UnitSquareMesh(10, 10)
V = FunctionSpace(mesh, "CG", 1)

# Define basis and bilinear form
u = TrialFunction(V)
v = TestFunction(V)
a = dot(grad(u), grad(v))*dx

# Assemble stiffness form
A = PETScMatrix()
assemble(a, tensor=A)
eigensolver = SLEPcEigenSolver(A)
eigensolver.solve()
r, c, rx, cx = eigensolver.get_eigenpair(0)
u = Function(V)
u.vector()[:] = rx

# Plot eigenfunction
plt.figure(figsize=(8,8))
eig1 = plot(u, cmap=plt.cm.jet)
plot(mesh)
plt.colorbar(eig1)

```

 ![dolfinOld](https://global.discourse-cdn.com/free1/uploads/fenicsproject1/original/2X/e/e9af5870fbcc6860b62f7afd842caf66a5f7a44b.png)

---

_[View the full topic](https://fenicsproject.discourse.group/t/a-simple-eigenvalue-solver-in-dolfin-x/3790)._
