def test_cp_ode(): diff_eq = LotkaVolterraEquation() cp = ConstrainedProblem(diff_eq) assert cp.mesh is None assert cp.static_y_vertex_constraints is None assert cp.static_boundary_vertex_constraints is None assert cp.static_boundary_cell_constraints is None assert cp.static_boundary_constraints(True) is None assert cp.static_boundary_constraints(False) is None assert cp.boundary_conditions is None assert cp.y_shape(True) == cp.y_shape(False) == (diff_eq.y_dimension, ) assert not cp.are_all_boundary_conditions_static assert not cp.are_there_boundary_conditions_on_y
def test_cp_1d_pde(): diff_eq = DiffusionEquation(1) mesh = Mesh([(0., 1.)], [.1]) bcs = [(NeumannBoundaryCondition(lambda x, t: np.zeros((1, 1)), is_static=True), ) * 2] cp = ConstrainedProblem(diff_eq, mesh, bcs) assert cp.are_all_boundary_conditions_static assert not cp.are_there_boundary_conditions_on_y assert cp.y_shape(True) == (11, 1) assert cp.y_shape(False) == (10, 1) assert cp.differential_equation == diff_eq assert cp.mesh == mesh assert np.array_equal(cp.boundary_conditions, bcs) y_vertex_constraints = cp.static_y_vertex_constraints assert y_vertex_constraints.shape == (1, ) assert np.all(y_vertex_constraints[0].mask == [False]) assert np.all(y_vertex_constraints[0].values == []) vertex_boundary_constraints = cp.static_boundary_constraints(True) y_vertex_boundary_constraints = vertex_boundary_constraints[0] assert y_vertex_boundary_constraints.shape == (1, 1) assert y_vertex_boundary_constraints[0, 0][0] is None assert y_vertex_boundary_constraints[0, 0][1] is None d_y_vertex_boundary_constraints = vertex_boundary_constraints[1] assert d_y_vertex_boundary_constraints.shape == (1, 1) assert np.all(d_y_vertex_boundary_constraints[0, 0][0].mask == [True]) assert np.all(d_y_vertex_boundary_constraints[0, 0][0].values == [0.]) assert np.all(d_y_vertex_boundary_constraints[0, 0][1].mask == [True]) assert np.all(d_y_vertex_boundary_constraints[0, 0][1].values == [0.]) cell_boundary_constraints = cp.static_boundary_constraints(False) y_cell_boundary_constraints = cell_boundary_constraints[0] assert y_cell_boundary_constraints.shape == (1, 1) assert y_cell_boundary_constraints[0, 0][0] is None assert y_cell_boundary_constraints[0, 0][1] is None d_y_cell_boundary_constraints = cell_boundary_constraints[1] assert d_y_cell_boundary_constraints.shape == (1, 1) assert np.all(d_y_cell_boundary_constraints[0, 0][0].mask == [True]) assert np.all(d_y_cell_boundary_constraints[0, 0][0].values == [0.]) assert np.all(d_y_cell_boundary_constraints[0, 0][1].mask == [True]) assert np.all(d_y_cell_boundary_constraints[0, 0][1].values == [0.])