Source code for ufl.integral_domain

"""Integral domains."""

from abc import ABC, abstractmethod

from ufl.cell import AbstractCell
from ufl.finiteelement import AbstractFiniteElement


[docs] class AbstractIntegralDomain(ABC): """Abstract base class for integral domain.""" def __hash__(self) -> int: """Hash.""" return hash(self.__repr__()) @abstractmethod def __repr__(self) -> str: """Representation.""" @property @abstractmethod def integral_type(self) -> str: """Integral type."""
[docs] class DxIntegralDomain(AbstractIntegralDomain): """Integral domain for dx.""" def __init__(self, coordinate_element: AbstractFiniteElement): """Initialise.""" self.coordinate_element = coordinate_element def __repr__(self) -> str: """Representation.""" return f"DxIntegralDomain({self.coordinate_element!r})" @property def integral_type(self) -> str: """Integral type.""" return "cell"
[docs] class DsIntegralDomain(AbstractIntegralDomain): """Integral domain for ds.""" def __init__(self, coordinate_element: AbstractFiniteElement, facet_type: AbstractCell): """Initialise.""" self.coordinate_element = coordinate_element self.facet_type = facet_type def __repr__(self) -> str: """Representation.""" return f"DsIntegralDomain({self.coordinate_element!r}, {self.facet_type!r})" @property def integral_type(self) -> str: """Integral type.""" return "exterior_facet"
[docs] class DSIntegralDomain(AbstractIntegralDomain): """Integral domain for dS.""" def __init__( self, coordinate_element_positive_side: AbstractFiniteElement, coordinate_element_negative_side: AbstractFiniteElement, facet_type: AbstractCell, ): """Initialise.""" self.coordinate_element_positive_side = coordinate_element_positive_side self.coordinate_element_negative_side = coordinate_element_negative_side self.facet_type = facet_type def __repr__(self) -> str: """Representation.""" return ( f"DSIntegralDomain({self.coordinate_element_positive_side!r}, " f"{self.coordinate_element_negative_side!r}, {self.facet_type!r})" ) @property def integral_type(self) -> str: """Integral type.""" return "interior_facet"