Source code for phaseflow.plotting

""" **plotting.py** defines utility functions for plotting meshes and finite element functions. """
import fenics
import matplotlib


[docs]def plot(f): """ This patches `fenics.plot` which is incorrect for functions on refind 1D meshes. See https://bitbucket.org/fenics-project/dolfin/issues/1029/plotting-1d-function-incorrectly-ignores """ if (type(f) == fenics.Function) and (f.function_space().mesh().topology().dim() == 1): mesh = f.function_space().mesh() C = f.compute_vertex_values(mesh) X = list(mesh.coordinates()[:, 0]) sorted_C = [c for _,c in sorted(zip(X, C))] return matplotlib.pyplot.plot(sorted(X), sorted_C) else: return fenics.plot(f)