Boundary related classes ======================== BoundaryData ------------ **Contains**: ``BoundaryStatus``, buffers, send/receive buffers and requests, all PER NEIGHBOR BoundaryCommunication --------------------- Pure abstract base class, defines interfaces for managing ``BoundaryStatus`` flags and MPI requests BoundaryBuffer -------------- Pure abstract base class, defines interfaces for managing MPI send/receive and loading/storing data from communication buffers. BoundaryVariable ---------------- **Derived from**: ``BoundaryCommunication`` and ``BoundaryBuffer`` **Contains**: ``BoundaryData`` for variable and flux correction. **Knows about**: ``MeshBlock`` and ``Mesh`` Still abstract base class, but implements some methods for sending and receiving buffers. BoundaryBase ------------ **Contains**: ``NeighborIndexes`` and ``NeighborBlock`` PER NEIGHBOR, number of neighbors, neighbor levels **Knows about**: ``MeshBlock`` Implements ``SearchAndSetNeighbors`` BoundaryValues -------------- **Derived from**: ``BoundaryBase`` and ``BoundaryCommunication`` **Knows about**: ``MeshBlock``, all the ``BoundaryVariable`` connected to variables of this block Central class to interact with individual variable boundary data. Owned by ``MeshBlock``. CellCenteredBoundaryVariable ---------------------------- **Derived from**: ``BoundaryVariable`` **Contains**: Shallow copies of variable data, coarse buffer, and fluxes (owned by ``Variable``) Owned by ``Variable``, implements loading and setting boundary data, sending and receiving flux corrections, and more.