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"