def test_ldc_bnd(): nx = 4 ny = nx nz = nx dim = 3 dof = 4 parameters = {'Reynolds Number': 100} n = nx * ny * nz * dof discretization = Discretization(parameters, nx, ny, nz, dim, dof) atom = discretization.linear_part() discretization.boundaries(atom) A = discretization.assemble_jacobian(atom) B = read_matrix('ldc_bnd_%sx%sx%s.txt' % (nx, ny, nz)) for i in range(n): print(i) print('Expected:') print(B.jcoA[B.begA[i]:B.begA[i + 1]]) print(B.coA[B.begA[i]:B.begA[i + 1]]) print('Got:') print(A.jcoA[A.begA[i]:A.begA[i + 1]]) print(A.coA[A.begA[i]:A.begA[i + 1]]) assert B.begA[i + 1] - B.begA[i] == A.begA[i + 1] - A.begA[i] for j in range(B.begA[i], B.begA[i + 1]): assert B.jcoA[j] == A.jcoA[j] assert B.coA[j] == A.coA[j]
def test_bilin_uniform(): parameters, nx, ny, nz, dim, dof, x, y, z = create_test_problem() discretization = Discretization(parameters, nx, ny, nz, dim, dof) state = create_divfree_state(discretization) atomJ, atomF = discretization.nonlinear_part(state) A = discretization.assemble_jacobian(atomF) for i in range(A.n): for j in range(A.begA[i], A.begA[i + 1]): assert i != A.jcoA[j]
def test_bilin_stretched(): parameters, nx, ny, nz, dim, dof, x, y, z = create_test_problem() x = utils.create_stretched_coordinate_vector(0, 1, nx, 1.5) y = utils.create_stretched_coordinate_vector(0, 1, ny, 1.5) z = utils.create_stretched_coordinate_vector(0, 1, nz, 1.5) discretization = Discretization(parameters, nx, ny, nz, dim, dof, x, y, z) state = create_divfree_state(discretization) atomJ, atomF = discretization.nonlinear_part(state) A = discretization.assemble_jacobian(atomF) for i in range(A.n): for j in range(A.begA[i], A.begA[i + 1]): assert i != A.jcoA[j]
def test_bous_bil(): nx = 4 ny = nx nz = nx dim = 3 dof = 5 parameters = { 'Reynolds Number': 1, 'Rayleigh Number': 100, 'Prandtl Number': 100 } n = nx * ny * nz * dof state = numpy.zeros(n) for i in range(n): state[i] = i + 1 discretization = Discretization(parameters, nx, ny, nz, dim, dof) atom, atomF = discretization.nonlinear_part(state) A = discretization.assemble_jacobian(atom) B = read_bous_matrix('bous_bil_%sx%sx%s.txt' % (nx, ny, nz)) pytest.skip('The Prandtl number is currently applied in a different place') for i in range(n): print(i) if i + 1 >= len(B.begA): break print('Expected:') print(B.jcoA[B.begA[i]:B.begA[i + 1]]) print(B.coA[B.begA[i]:B.begA[i + 1]]) print('Got:') print(A.jcoA[A.begA[i]:A.begA[i + 1]]) print(A.coA[A.begA[i]:A.begA[i + 1]]) assert B.begA[i + 1] - B.begA[i] == A.begA[i + 1] - A.begA[i] for j in range(B.begA[i], B.begA[i + 1]): assert B.jcoA[j] == A.jcoA[j] assert B.coA[j] == A.coA[j]
def test_bous_bnd(): nx = 4 ny = nx nz = nx dim = 3 dof = 5 parameters = { 'Reynolds Number': 1, 'Rayleigh Number': 100, 'Prandtl Number': 100, 'Problem Type': 'Rayleigh-Benard' } n = nx * ny * nz * dof discretization = Discretization(parameters, nx, ny, nz, dim, dof) atom = discretization.linear_part() discretization.boundaries(atom) A = discretization.assemble_jacobian(atom) B = read_bous_matrix('bous_bnd_%sx%sx%s.txt' % (nx, ny, nz)) pytest.skip('The Prandtl number is currently applied in a different place') for i in range(n): print(i) print('Expected:') print(B.jcoA[B.begA[i]:B.begA[i + 1]]) print(B.coA[B.begA[i]:B.begA[i + 1]]) print('Got:') print(A.jcoA[A.begA[i]:A.begA[i + 1]]) print(A.coA[A.begA[i]:A.begA[i + 1]]) assert B.begA[i + 1] - B.begA[i] == A.begA[i + 1] - A.begA[i] for j in range(B.begA[i], B.begA[i + 1]): assert B.jcoA[j] == A.jcoA[j] assert B.coA[j] == pytest.approx(A.coA[j])
def test_ldc_bil(): nx = 4 ny = nx nz = nx dim = 3 dof = 4 parameters = {'Reynolds Number': 100} n = nx * ny * nz * dof state = numpy.zeros(n) for i in range(n): state[i] = i + 1 discretization = Discretization(parameters, nx, ny, nz, dim, dof) atom, atomF = discretization.nonlinear_part(state) A = discretization.assemble_jacobian(atom) B = read_matrix('ldc_bil_%sx%sx%s.txt' % (nx, ny, nz)) for i in range(n): print(i) if i + 1 >= len(B.begA): break print('Expected:') print(B.jcoA[B.begA[i]:B.begA[i + 1]]) print(B.coA[B.begA[i]:B.begA[i + 1]]) print('Got:') print(A.jcoA[A.begA[i]:A.begA[i + 1]]) print(A.coA[A.begA[i]:A.begA[i + 1]]) assert B.begA[i + 1] - B.begA[i] == A.begA[i + 1] - A.begA[i] for j in range(B.begA[i], B.begA[i + 1]): assert B.jcoA[j] == A.jcoA[j] assert B.coA[j] == A.coA[j]