def test_bounce_back_boundary_not_applied_if_mask_empty(f_lattice): f, lattice = f_lattice f_old = copy(f) mask = (f[0] < 0).cpu().numpy() # will not contain any points bounce_back = BounceBackBoundary(mask, lattice) f = bounce_back(f) assert f.cpu().numpy() == pytest.approx(f_old.cpu().numpy())
def test_bounce_back_boundary(f_lattice): f, lattice = f_lattice f_old = copy(f) mask = (f[0] > 0).cpu().numpy() # will contain all points bounce_back = BounceBackBoundary(mask, lattice) f = bounce_back(f) assert f[lattice.stencil.opposite].cpu().numpy() == pytest.approx( f_old.cpu().numpy())
def boundaries(self, *args): x, y = self.grid return [ EquilibriumBoundaryPU( np.abs(x) < 1e-6, self.units.lattice, self.units, np.array([self.units.characteristic_velocity_pu, 0])), EquilibriumOutletP(self.units.lattice, [0, -1]), EquilibriumOutletP(self.units.lattice, [0, 1]), EquilibriumOutletP(self.units.lattice, [1, 0]), BounceBackBoundary(self.mask, self.units.lattice) ]