Source code for festim.subdomain.surface_subdomain_1d

import dolfinx.mesh
import numpy as np

from festim.subdomain.surface_subdomain import SurfaceSubdomain


[docs] class SurfaceSubdomain1D(SurfaceSubdomain): """ Surface subdomain class for 1D cases Args: id (int): the id of the surface subdomain x (float): the x coordinate of the surface subdomain Attributes: id (int): the id of the surface subdomain x (float): the x coordinate of the surface subdomain Examples: .. testsetup:: SurfaceSubdomain1D from festim import SurfaceSubdomain1D .. testcode:: SurfaceSubdomain1D SurfaceSubdomain1D(id=1, x=1) """ # FIXME: Rename this to _id and use getter/setter id: int x: float def __init__(self, id: int, x: float) -> None: super().__init__(id) self.x = x
[docs] def locate_boundary_facet_indices(self, mesh: dolfinx.mesh.Mesh): """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 """ assert mesh.geometry.dim == 1, "This method is only for 1D meshes" indices = dolfinx.mesh.locate_entities_boundary( mesh, 0, lambda x: np.isclose(x[0], self.x) ) return indices