DiscretizationsΒΆ
Abstract interfaceΒΆ

class
meshmode.discretization.
ElementGroupBase
(mesh_el_group, order, index)ΒΆ Container for the
Discretization
data corresponding to onemeshmode.mesh.MeshElementGroup
.
mesh_el_group
ΒΆ

order
ΒΆ

index
ΒΆ

nelements
ΒΆ

nunit_dofs
ΒΆ The number of (for now: nodal) degrees of freedom (βDOFsβ) associated with a single element.

ndofs
ΒΆ The total number of (for now: nodal) degrees of freedom (βDOFsβ) associated with the element group.

dim
ΒΆ

unit_nodes
()ΒΆ Returns a
numpy.ndarray
of shape(dim, nunit_dofs)
of reference coordinates of interpolation nodes.

weights
()ΒΆ Returns an array of length
nunit_dofs
containing quadrature weights.

is_affine
ΒΆ A
bool
flag that is True if the localtoglobal parametrization of all the elements in the group is affine. Based onmeshmode.mesh.MeshElementGroup.is_affine
.


class
meshmode.discretization.
InterpolatoryElementGroupBase
(mesh_el_group, order, index)ΒΆ A subclass of
ElementGroupBase
that is equipped with a function space.
mode_ids
()ΒΆ Return an immutable sequence of opaque (hashable) mode identifiers, one per element of the
basis()
. The meaning of the mode identifiers is defined by the concrete element group.

basis
()ΒΆ Returns a
list
of basis functions that take arrays of shape(dim, n)
and return an array of shape (n,)`` (which performs evaluation of the basis function).

grad_basis
()ΒΆ


class
meshmode.discretization.
Discretization
(actx, mesh, group_factory, real_dtype=<class 'numpy.float64'>)ΒΆ An unstructured composite discretization.

real_dtype
ΒΆ

complex_dtype
ΒΆ

mesh
ΒΆ

dim
ΒΆ

ambient_dim
ΒΆ

ndofs
ΒΆ

groups
ΒΆ

empty
(actx, dtype=None)ΒΆ Return an empty
DOFArray
. Parameters
dtype β type special value βcβ will result in a vector of dtype
complex_dtype
. If None (the default), a real vector will be returned.actx (meshmode.array_context.ArrayContext) β

zeros
(actx, dtype=None)ΒΆ Return a zeroinitialized
DOFArray
. Parameters
dtype β type special value βcβ will result in a vector of dtype
complex_dtype
. If None (the default), a real vector will be returned.actx (meshmode.array_context.ArrayContext) β

empty_like
(array)ΒΆ  Parameters
array (meshmode.dof_array.DOFArray) β

zeros_like
(array)ΒΆ  Parameters
array (meshmode.dof_array.DOFArray) β

num_reference_derivative
(ref_axes, vec)ΒΆ

Element Groups for Composite Polynomial DiscretizationΒΆ
Group typesΒΆ

class
meshmode.discretization.poly_element.
InterpolatoryQuadratureSimplexElementGroup
(mesh_el_group, order, index)ΒΆ Elemental discretization supplying a highorder quadrature rule with a number of nodes matching the number of polynomials in \(P^k\), hence usable for differentiation and interpolation.
No interpolation nodes are present on the boundary of the simplex.
The
mode_ids()
are a tuple (one entry per dimension) of directional polynomial degrees on the reference element.

class
meshmode.discretization.poly_element.
QuadratureSimplexElementGroup
(mesh_el_group, order, index)ΒΆ Elemental discretization supplying a highorder quadrature rule with a number of nodes which does not necessarily match the number of polynomials in \(P^k\). This discretization therefore excels at quadarature, but is not necessarily usable for interpolation.
No interpolation nodes are present on the boundary of the simplex.
The
mode_ids()
are a tuple (one entry per dimension) of directional polynomial degrees on the reference element.

class
meshmode.discretization.poly_element.
PolynomialWarpAndBlendElementGroup
(mesh_el_group, order, index)ΒΆ Elemental discretization with a number of nodes matching the number of polynomials in \(P^k\), hence usable for differentiation and interpolation. Interpolation nodes edgeclustered for avoidance of Runge phenomena. Nodes are present on the boundary of the simplex.
Uses
modepy.warp_and_blend_nodes()
.The
mode_ids()
are a tuple (one entry per dimension) of directional polynomial degrees on the reference element.

class
meshmode.discretization.poly_element.
PolynomialRecursiveNodesElementGroup
(mesh_el_group, order, family, index)ΒΆ Elemental discretization with a number of nodes matching the number of polynomials in \(P^k\), hence usable for differentiation and interpolation. Interpolation nodes edgeclustered for avoidance of Runge phenomena. Depending on the family argument, nodes may be present on the boundary of the simplex. See [Isaac20] for details.
Supports a choice of the base family of 1D nodes, see the documentation of the family argument to
recursivenodes.recursive_nodes()
.Requires
recursivenodes
to be installed.The
mode_ids()
are a tuple (one entry per dimension) of directional polynomial degrees on the reference element. Isaac20
Tobin Isaac. Recursive, parameterfree, explicitly defined interpolation nodes for simplices. Arxiv preprint.
New in version 2020.2.

class
meshmode.discretization.poly_element.
PolynomialEquidistantSimplexElementGroup
(mesh_el_group, order, index)ΒΆ Elemental discretization with a number of nodes matching the number of polynomials in \(P^k\), hence usable for differentiation and interpolation. Interpolation nodes are present on the boundary of the simplex.
The
mode_ids()
are a tuple (one entry per dimension) of directional polynomial degrees on the reference element.New in version 2016.1.

class
meshmode.discretization.poly_element.
PolynomialGivenNodesElementGroup
(mesh_el_group, order, unit_nodes, index)ΒΆ Elemental discretization with a number of nodes matching the number of polynomials in \(P^k\), hence usable for differentiation and interpolation. Uses nodes given by the user.

class
meshmode.discretization.poly_element.
GaussLegendreTensorProductElementGroup
(mesh_el_group, order, index)ΒΆ Elemental discretization supplying a highorder quadrature rule with a number of nodes matching the number of polynomials in the tensor product basis, hence usable for differentiation and interpolation.
No interpolation nodes are present on the boundary of the hypercube.

class
meshmode.discretization.poly_element.
LegendreGaussLobattoTensorProductElementGroup
(mesh_el_group, order, index)ΒΆ Elemental discretization supplying a highorder quadrature rule with a number of nodes matching the number of polynomials in the tensor product basis, hence usable for differentiation and interpolation. Nodes sufficient for unisolvency are present on the boundary of the hypercube.

class
meshmode.discretization.poly_element.
EquidistantTensorProductElementGroup
(mesh_el_group, order, index)ΒΆ Elemental discretization supplying a highorder quadrature rule with a number of nodes matching the number of polynomials in the tensor product basis, hence usable for differentiation and interpolation. Nodes sufficient for unisolvency are present on the boundary of the hypercube.
Uses
equidistant_nodes()
.
Group factoriesΒΆ

class
meshmode.discretization.poly_element.
ElementGroupFactory
ΒΆ 
__call__
(mesh_ele_group, node_nr_base)ΒΆ


class
meshmode.discretization.poly_element.
OrderAndTypeBasedGroupFactory
(order, simplex_group_class, tensor_product_group_class)ΒΆ

class
meshmode.discretization.poly_element.
InterpolatoryQuadratureSimplexGroupFactory
(order)ΒΆ

class
meshmode.discretization.poly_element.
QuadratureSimplexGroupFactory
(order)ΒΆ

class
meshmode.discretization.poly_element.
PolynomialWarpAndBlendGroupFactory
(order)ΒΆ

class
meshmode.discretization.poly_element.
PolynomialRecursiveNodesGroupFactory
(order, family)ΒΆ

class
meshmode.discretization.poly_element.
PolynomialEquidistantSimplexGroupFactory
(order)ΒΆ New in version 2016.1.

class
meshmode.discretization.poly_element.
PolynomialGivenNodesGroupFactory
(order, unit_nodes)ΒΆ

class
meshmode.discretization.poly_element.
GaussLegendreTensorProductGroupFactory
(order)ΒΆ

class
meshmode.discretization.poly_element.
LegendreGaussLobattoTensorProductGroupFactory
(order)ΒΆ
VisualizationΒΆ

meshmode.discretization.visualization.
make_visualizer
(actx, discr, vis_order, element_shrink_factor=None, force_equidistant=False)ΒΆ  Parameters
vis_order β order of the visualization DOFs.
element_shrink_factor β number in \((0, 1]\).
force_equidistant β if True, the visualization is done on equidistant nodes. If plotting highorder Lagrange VTK elements, this needs to be set to True.

class
meshmode.discretization.visualization.
Visualizer
(connection, element_shrink_factor=None, is_equidistant=False)ΒΆ 
show_scalar_in_mayavi
(field, **kwargs)ΒΆ

show_scalar_in_matplotlib_3d
(field, **kwargs)ΒΆ

write_vtk_file
(file_name, names_and_fields, compressor=None, real_only=False, overwrite=False, use_high_order=None, par_manifest_filename=None, par_file_names=None)ΒΆ Write a Vtk XML file (typical extension
.vtu
) containing the visualization data in names_and_fields. Can optionally also write manifests for distributed memory simulation (typical extension.pvtu
). See alsowrite_parallel_vtk_file()
for a convenience wrapper. Parameters
names_and_fields β A list of tuples
(name, value)
, where name is a string and value is aDOFArray
or a constant, or an object array of those. value may also be a data class (seedataclasses
), whose attributes will be inserted into the visualization with their names prefixed by name. If value is None, then there is no data to write and the corresponding name will not appear in the data file. If value is None, it should be None collectively across all ranks for parallel writes; otherwise the behavior of this routine is undefined.overwrite β If True, silently overwrite existing files.
use_high_order β Writes arbitrary order Lagrange VTK elements. These elements are described in this blog post and are available in VTK 8.1 and newer.
par_manifest_filename β If not None write a distributedmemory manifest with this file name if file_name matches the first entry in par_file_names.
par_file_names β A list of file names of visualization files to include in the distributedmemory manifest.

Changed in version 2020.2:
Added par_manifest_filename and par_file_names.
Added use_high_order.

write_parallel_vtk_file
(mpi_comm, file_name_pattern, names_and_fields, compressor=None, real_only=False, overwrite=False, use_high_order=None, par_manifest_filename=None)ΒΆ A convenience wrapper around
write_vtk_file()
for distributedmemory visualization. Parameters
mpi_comm β An object that supports
mpi_comm.Get_rank()
andmpi_comm.Get_size()
method calls, typically (but not necessarily) an instance ofmpi4py.Comm
. This is used to determine the current rank as well as the total number of files being written. May also be None in which case a unitsize communicator is assumed.file_name_pattern β A file name pattern (required to end in
.vtu
) that will be used withstr.format()
with an (integer) argument ofrank
to obtain the perrank file name.par_manifest_filename β as in
write_vtk_file()
. If not given, par_manifest_filename is synthesized by substituting rank 0 into file_name_pattern and replacing the file extension with.pvtu
.
See
write_vtk_file()
for the meaning of the remainder of the arguments.New in version 2020.2.

write_xdmf_file
(file_name, names_and_fields, attrs=None, h5_file_options=None, dataset_options=None, real_only=False, overwrite=False)ΒΆ Write an XDMF file (with an
.xmf
extension) containing the arrays in names_and_fields. The heavy data is written to binary HDF5 files, which requires installing h5py. Distributed memory visualization is not yet supported. Parameters
names_and_fields β a list of
(name, array)
, where array is an arraylike object (seeVisualizer.write_vtk_file()
).attrs β a
dict
of scalar attributes that will be saved in the root HDF5 group.h5_file_options β a
dict
passed directly toh5py.File
that allows controlling chunking, compatibility, etc.dataset_options β a
dict
passed directly toh5py.Group.create_dataset()
.


meshmode.discretization.visualization.
write_nodal_adjacency_vtk_file
(file_name, mesh, compressor=None, overwrite=False)ΒΆ