From 8245de8336ff53a7406b3e7149ed78e353e6461c Mon Sep 17 00:00:00 2001 From: "Timothy A. Smith" <tasmith4@illinois.edu> Date: Sun, 21 Jul 2019 23:32:58 -0500 Subject: [PATCH] introduce first version of fixture to replace parametrization --- test.py | 111 ++++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 80 insertions(+), 31 deletions(-) diff --git a/test.py b/test.py index d117069..995067a 100644 --- a/test.py +++ b/test.py @@ -356,21 +356,78 @@ def test_pointwise_eigenvalues_ideal_gas( u.compare_arrays(lam_dev.get(), lam_expected) -@pytest.mark.parametrize("states_str,fluxes_str,direction", [ - ("2 4 4 4 20,1 1 1 1 5.5", "4 11.2 8 8 46.4,1 2.6 1 1 7.1", "x"), - ("2 4 4 4 20,1 1 1 1 5.5", "4 8 11.2 8 46.4,1 1 2.6 1 7.1", "y"), - ("2 4 4 4 20,1 1 1 1 5.5", "4 8 8 11.2 46.4,1 1 1 2.6 7.1", "z"), - ("1 -1 -1 -1 5.5,2 -4 -4 -4 20", "-1 2.6 1 1 -7.1,-4 11.2 8 8 -46.4", "x"), - ("1 -1 -1 -1 5.5,2 -4 -4 -4 20", "-1 1 2.6 1 -7.1,-4 8 11.2 8 -46.4", "y"), - ("1 -1 -1 -1 5.5,2 -4 -4 -4 20", "-1 1 1 2.6 -7.1,-4 8 8 11.2 -46.4", "z"), - ("2 4 8 12 64,1 1 2 3 11", "4 11.2 16 24 134.4,1 2.6 2 3 12.6", "x"), - ("2 4 8 12 64,1 1 2 3 11", "8 16 35.2 48 268.8,2 2 5.6 6 25.2", "y"), - ("2 4 8 12 64,1 1 2 3 11", "12 24 48 75.2 403.2,3 3 6 10.6 37.8", "z"), - ("1 -1 -2 -3 11,2 -4 -8 -12 64", "-1 2.6 2 3 -12.6,-4 11.2 16 24 -134.4", "x"), - ("1 -1 -2 -3 11,2 -4 -8 -12 64", "-2 2 5.6 6 -25.2,-8 16 35.2 48 -268.8", "y"), - ("1 -1 -2 -3 11,2 -4 -8 -12 64", "-3 3 6 10.6 -37.8,-12 24 48 75.2 -403.2", "z") - ]) -def test_roe_uniform_grid_ideal_gas(ctx_factory, states_str, fluxes_str, direction): +class FluxDataSingle: + nvars = 5 + ndim = 3 + dirs = {"x": 1, "y": 2, "z": 3} + + def __init__(self, states_str, fluxes_str, direction): + self.states = u.transposed_array_from_string(states_str) + self.fluxes = u.transposed_array_from_string(fluxes_str) + self.direction = self.dirs[direction] + + +uniformData = {} +uniformData["Case a:x"] = FluxDataSingle( + "2 4 4 4 20,1 1 1 1 5.5", + "4 11.2 8 8 46.4,1 2.6 1 1 7.1", + "x") +uniformData["Case a:y"] = FluxDataSingle( + "2 4 4 4 20,1 1 1 1 5.5", + "4 8 11.2 8 46.4,1 1 2.6 1 7.1", + "y") +uniformData["Case a:z"] = FluxDataSingle( + "2 4 4 4 20,1 1 1 1 5.5", + "4 8 8 11.2 46.4,1 1 1 2.6 7.1", + "z") +uniformData["Case b:x"] = FluxDataSingle( + "1 -1 -1 -1 5.5,2 -4 -4 -4 20", + "-1 2.6 1 1 -7.1,-4 11.2 8 8 -46.4", + "x") +uniformData["Case b:y"] = FluxDataSingle( + "1 -1 -1 -1 5.5,2 -4 -4 -4 20", + "-1 1 2.6 1 -7.1,-4 8 11.2 8 -46.4", + "y") +uniformData["Case b:z"] = FluxDataSingle( + "1 -1 -1 -1 5.5,2 -4 -4 -4 20", + "-1 1 1 2.6 -7.1,-4 8 8 11.2 -46.4", + "z") +uniformData["Case c:x"] = FluxDataSingle( + "2 4 8 12 64,1 1 2 3 11", + "4 11.2 16 24 134.4,1 2.6 2 3 12.6", + "x") +uniformData["Case c:y"] = FluxDataSingle( + "2 4 8 12 64,1 1 2 3 11", + "8 16 35.2 48 268.8,2 2 5.6 6 25.2", + "y") +uniformData["Case c:z"] = FluxDataSingle( + "2 4 8 12 64,1 1 2 3 11", + "12 24 48 75.2 403.2,3 3 6 10.6 37.8", + "z") +uniformData["Case d:x"] = FluxDataSingle( + "1 -1 -2 -3 11,2 -4 -8 -12 64", + "-1 2.6 2 3 -12.6,-4 11.2 16 24 -134.4", + "x") +uniformData["Case d:y"] = FluxDataSingle( + "1 -1 -2 -3 11,2 -4 -8 -12 64", + "-2 2 5.6 6 -25.2,-8 16 35.2 48 -268.8", + "y") +uniformData["Case d:z"] = FluxDataSingle( + "1 -1 -2 -3 11,2 -4 -8 -12 64", + "-3 3 6 10.6 -37.8,-12 24 48 75.2 -403.2", + "z") + + +@pytest.fixture(params=[ + "Case a:x", "Case a:y", "Case a:z", + "Case b:x", "Case b:y", "Case b:z", + "Case c:x", "Case c:y", "Case c:z", + "Case d:x", "Case d:y", "Case d:z"]) +def data(request): + return uniformData[request.param] + + +def test_roe_uniform_grid_ideal_gas(ctx_factory, data): def identity_matrix(n): return np.identity(n).astype(np.float32).copy(order="F") @@ -389,30 +446,22 @@ def test_roe_uniform_grid_ideal_gas(ctx_factory, states_str, fluxes_str, directi prg = u.get_weno_program_with_root_kernel("roe_eigensystem") queue = u.get_queue(ctx_factory) - nvars = 5 - ndim = 3 - dirs = {"x": 1, "y": 2, "z": 3} + metrics_frozen = identity_matrix(data.ndim) - states = u.transposed_array_from_string(states_str) - fluxes = u.transposed_array_from_string(fluxes_str) - metrics_frozen = identity_matrix(ndim) + R_dev = u.empty_array_on_device(queue, data.nvars, data.nvars) + R_inv_dev = u.empty_array_on_device(queue, data.nvars, data.nvars) + lam_dev = u.empty_array_on_device(queue, data.nvars) - R_dev = u.empty_array_on_device(queue, nvars, nvars) - R_inv_dev = u.empty_array_on_device(queue, nvars, nvars) - lam_dev = u.empty_array_on_device(queue, nvars) - - prg(queue, nvars=nvars, ndim=ndim, d=dirs[direction], - states=states, metrics_frozen=metrics_frozen, + prg(queue, nvars=data.nvars, ndim=data.ndim, d=data.direction, + states=data.states, metrics_frozen=metrics_frozen, R=R_dev, R_inv=R_inv_dev, lambda_roe=lam_dev) R = R_dev.get() R_inv = R_inv_dev.get() lam = lam_dev.get() - print(lam) - - check_roe_identity(states, R, R_inv) - check_roe_property(states, fluxes, R, R_inv, lam) + check_roe_identity(data.states, R, R_inv) + check_roe_property(data.states, data.fluxes, R, R_inv, lam) @pytest.mark.slow -- GitLab