I think I implemented both `CellVariable.BC2GhostCells()` and `CellVariable.bc_to_ghost()` to have one that change the ghost cell values in place and one that creates a new cell by assigning the ghost cell values when creating a new cell variable with known boundary conditions. It is indeed an excellent idea to have boundary conditions as a property of cell values. It has several benefits specially when working with non/linear systems of equations.
_Originally posted by @simulkade in https://github.com/FiniteVolumeTransportPhenomena/PyFVTool/pull/34#discussion_r1554640601_