Introduction to DOLFINx#

We start by importing DOLFINx, and check the version and git commit hash

import dolfinx

print(
    f"You have DOLFINx {dolfinx.__version__} installed, "
    "based on commit \nhttps://github.com/FEniCS/dolfinx/commit/"
    f"{dolfinx.common.git_commit_hash}"
)
You have DOLFINx 0.10.0.0 installed, based on commit 
https://github.com/FEniCS/dolfinx/commit/d29c9fc3202f3a874b003780477a23b208fafa40

Using a ‘built-in’ mesh#

In DOLFINx, we do not use wildcard imports as we used to in legacy DOLFIN, ie

from dolfin import *

We instead import dolfinx.mesh as a module:

from mpi4py import MPI

import dolfinx

mesh = dolfinx.mesh.create_unit_square(MPI.COMM_WORLD, 10, 10)

Interface to external libraries#

We use external libraries, such as pyvista for plotting.

import pyvista

import dolfinx.plot

topology, cells, geometry = dolfinx.plot.vtk_mesh(mesh)
grid = pyvista.UnstructuredGrid(topology, cells, geometry)

We add settings for both static and interactive plotting

Hide code cell content

pyvista.start_xvfb(0.5)
/dolfinx-env/lib/python3.12/site-packages/pyvista/plotting/utilities/xvfb.py:48: PyVistaDeprecationWarning: This function is deprecated and will be removed in future version of PyVista. Use vtk-osmesa instead.
  warnings.warn(
plotter = pyvista.Plotter(window_size=(600, 600))
renderer = plotter.add_mesh(grid, show_edges=True)

Hide code cell content

# Settings for presentation mode
plotter.view_xy()
plotter.camera.zoom(1.35)
plotter.export_html("./mesh.html")

Interactive plot#

We can get interactive plots in notebook by calling.

Hide code cell source

%%html
<iframe src='./mesh.html' width="610px" height="610px">></iframe>  <!--  # noqa, -->