Source code for festim.subdomain.surface_subdomain

import dolfinx.mesh
import numpy as np
import numpy.typing as npt


[docs] class SurfaceSubdomain: """ Surface subdomain class Args: id (int): the id of the surface subdomain """ id: int def __init__(self, id): self.id = id
[docs] def locate_boundary_facet_indices( self, mesh: dolfinx.mesh.Mesh ) -> npt.NDArray[np.int32]: """Locates the dof of the surface subdomain within the function space and return the index of the dof Args: mesh (dolfinx.mesh.Mesh): the mesh of the simulation Returns: index (np.array): the first value in the list of surface facet indices of the subdomain """ fdim = mesh.topology.dim - 1 mesh.topology.create_connectivity(fdim, fdim + 1) return dolfinx.mesh.exterior_facet_indices(mesh.topology)
def find_surface_from_id(id: int, surfaces: list): """Returns the correct surface subdomain object from a list of surface ids based on an int Args: id (int): the id of the surface subdomain surfaces (list of F.SurfaceSubdomain): the list of surfaces Returns: festim.SurfaceSubdomain: the surface subdomain object with the correct id Raises: ValueError: if the surface name is not found in the list of surfaces """ for surf in surfaces: if surf.id == id: return surf raise ValueError(f"id {id} not found in list of surfaces")