Boundary

A boundary is a special type of cell that is used to define the boundary conditions of the system.

Note that this does NOT inherit from the Cell class, but instead implements the Boundary interface. This ensures that some of the interior cell methods are not unintentionally called on a boundary cell.

Boundary

A class representing a boundary cell in a domain.

Parameters:
  • x (float) –

    The x-coordinate of the boundary cell.

  • _btype (btype) –

    The type of boundary (left or right).

  • value (ndarray, default: array([]) ) –

    The values at the boundary cell. Default is an empty NumPy array.

  • xmin (float, default: 0.0 ) –

    The minimum x-value of the domain. Default is 0.0.

  • xmax (float, default: 1.0 ) –

    The maximum x-value of the domain. Default is 1.0.

Raises:
  • SFXM

    If an inappropriate boundary type is given or if the x-value is an interior value.

Source code in splitfxm/boundary.py
class Boundary:
    """
    A class representing a boundary cell in a domain.

    Parameters
    ----------
    x : float
        The x-coordinate of the boundary cell.
    _btype : btype
        The type of boundary (left or right).
    value : numpy.ndarray, optional
        The values at the boundary cell. Default is an empty NumPy array.
    xmin : float, optional
        The minimum x-value of the domain. Default is 0.0.
    xmax : float, optional
        The maximum x-value of the domain. Default is 1.0.

    Raises
    ------
    SFXM
        If an inappropriate boundary type is given or if the x-value is an interior value.
    """

    def __init__(
        self, x, _btype, value=np.array([]), xmin: float = 0.0, xmax: float = 1.0
    ):
        """
        Initialize a `Boundary` object.
        """
        # Check if correct type specified
        if x < xmin and _btype == btype.RIGHT or x > xmax and _btype == btype.LEFT:
            raise SFXM("Inappropriate boundary type given")

        self._value = value
        self._type = _btype
        # X co-ordinate
        self._x = x

    def x(self):
        """
        Return the x-coordinate of the boundary cell.

        Returns
        -------
        float
            The x-coordinate of the boundary cell.
        """
        return self._x

    def values(self):
        """
        Return the values at the boundary cell.

        Returns
        -------
        numpy.ndarray
            The values at the boundary cell.
        """
        return self._value

    def value(self, i: int):
        """
        Return the value at the boundary cell for the given component index.

        Parameters
        ----------
        i : int
            The index of the component to retrieve.

        Returns
        -------
        float
            The value at the boundary cell for the given component index.
        """
        return self._value[i]

    # Note cell doesn't have set_x
    def set_x(self, x: float, xmin=0.0, xmax=1.0):
        """
        Set the x-coordinate of the boundary cell.

        Parameters
        ----------
        x : float
            The new x-coordinate for the boundary cell.
        xmin : float, optional
            The minimum x-value of the domain. Default is 0.0.
        xmax : float, optional
            The maximum x-value of the domain. Default is 1.0.

        Raises
        ------
        SFXM
            If the new x-value is an interior value or if an inappropriate boundary type is given.
        """
        if x >= xmin and x <= xmax:
            raise SFXM("Boundary cell cannot have interior X-value")

        # Check if correct type specified
        if (x < xmin and self._type == btype.RIGHT) or (
            x > xmax and self._type == btype.LEFT
        ):
            raise SFXM("Inappropriate boundary type given")
        self._x = x

    def set_value(self, i: int, val):
        """
        Set the value at the boundary cell for the given component index.

        Parameters
        ----------
        i : int
            The index of the component to set.
        val : float
            The new value for the given component.
        """
        self._value[i] = val

__init__(x, _btype, value=np.array([]), xmin=0.0, xmax=1.0)

Initialize a Boundary object.

Source code in splitfxm/boundary.py
def __init__(
    self, x, _btype, value=np.array([]), xmin: float = 0.0, xmax: float = 1.0
):
    """
    Initialize a `Boundary` object.
    """
    # Check if correct type specified
    if x < xmin and _btype == btype.RIGHT or x > xmax and _btype == btype.LEFT:
        raise SFXM("Inappropriate boundary type given")

    self._value = value
    self._type = _btype
    # X co-ordinate
    self._x = x

x()

Return the x-coordinate of the boundary cell.

Returns:
  • float

    The x-coordinate of the boundary cell.

Source code in splitfxm/boundary.py
def x(self):
    """
    Return the x-coordinate of the boundary cell.

    Returns
    -------
    float
        The x-coordinate of the boundary cell.
    """
    return self._x

values()

Return the values at the boundary cell.

Returns:
  • ndarray

    The values at the boundary cell.

Source code in splitfxm/boundary.py
def values(self):
    """
    Return the values at the boundary cell.

    Returns
    -------
    numpy.ndarray
        The values at the boundary cell.
    """
    return self._value

value(i)

Return the value at the boundary cell for the given component index.

Parameters:
  • i (int) –

    The index of the component to retrieve.

Returns:
  • float

    The value at the boundary cell for the given component index.

Source code in splitfxm/boundary.py
def value(self, i: int):
    """
    Return the value at the boundary cell for the given component index.

    Parameters
    ----------
    i : int
        The index of the component to retrieve.

    Returns
    -------
    float
        The value at the boundary cell for the given component index.
    """
    return self._value[i]

set_x(x, xmin=0.0, xmax=1.0)

Set the x-coordinate of the boundary cell.

Parameters:
  • x (float) –

    The new x-coordinate for the boundary cell.

  • xmin (float, default: 0.0 ) –

    The minimum x-value of the domain. Default is 0.0.

  • xmax (float, default: 1.0 ) –

    The maximum x-value of the domain. Default is 1.0.

Raises:
  • SFXM

    If the new x-value is an interior value or if an inappropriate boundary type is given.

Source code in splitfxm/boundary.py
def set_x(self, x: float, xmin=0.0, xmax=1.0):
    """
    Set the x-coordinate of the boundary cell.

    Parameters
    ----------
    x : float
        The new x-coordinate for the boundary cell.
    xmin : float, optional
        The minimum x-value of the domain. Default is 0.0.
    xmax : float, optional
        The maximum x-value of the domain. Default is 1.0.

    Raises
    ------
    SFXM
        If the new x-value is an interior value or if an inappropriate boundary type is given.
    """
    if x >= xmin and x <= xmax:
        raise SFXM("Boundary cell cannot have interior X-value")

    # Check if correct type specified
    if (x < xmin and self._type == btype.RIGHT) or (
        x > xmax and self._type == btype.LEFT
    ):
        raise SFXM("Inappropriate boundary type given")
    self._x = x

set_value(i, val)

Set the value at the boundary cell for the given component index.

Parameters:
  • i (int) –

    The index of the component to set.

  • val (float) –

    The new value for the given component.

Source code in splitfxm/boundary.py
def set_value(self, i: int, val):
    """
    Set the value at the boundary cell for the given component index.

    Parameters
    ----------
    i : int
        The index of the component to set.
    val : float
        The new value for the given component.
    """
    self._value[i] = val