import dolfinx.mesh
import mpi4py.MPI
import viskex
import viskex.utils
import common_dolfinx as common # isort: skip
Generate a mesh of the unit interval, divided into six cells.
interval = dolfinx.mesh.create_unit_interval(mpi4py.MPI.COMM_WORLD, 6)
Mark subdomains according to the $x$ position of the vertices of the mesh:
interval_subdomains = common.mark_subdomains(interval)
We plot the resulting subdomains.
viskex.dolfinx.plot_mesh_tags(interval, interval_subdomains, "subdomains")
error: XDG_RUNTIME_DIR is invalid or not set in the environment. MESA: error: ZINK: failed to choose pdev glx: failed to create drisw screen
We can also plot all subdomains with tag equal to $2$, which will be displayed with colors. The rest of the mesh cells are still included in the plot, but are colored in gray.
viskex.dolfinx.plot_mesh_tags(
interval, interval_subdomains, "subdomains_2", viskex.utils.values_in([2]))
error: XDG_RUNTIME_DIR is invalid or not set in the environment. MESA: error: ZINK: failed to choose pdev glx: failed to create drisw screen
Alternatively, we can clip the plot so that it only shows the subset of the mesh with subdomain tag equal to $2$.
viskex.dolfinx.plot_mesh_tags(
interval, interval_subdomains, "subdomains_2",
lambda grid: grid.threshold(2)) # type: ignore[no-untyped-call]
error: XDG_RUNTIME_DIR is invalid or not set in the environment.
MESA: error: ZINK: failed to choose pdev glx: failed to create drisw screen