Skip to content
Snippets Groups Projects
Commit 5c70dd3a authored by Michael Kuron's avatar Michael Kuron :mortar_board:
Browse files

Merge branch 'cumulant_test' into 'master'

Cumulant test

See merge request !61
parents 2b635f90 16049ba9
Branches
No related merge requests found
This diff is collapsed.
......@@ -12,17 +12,11 @@ from lbmpy.stencils import get_stencil
from pystencils import create_kernel, create_data_handling, Assignment
from pystencils.slicing import slice_from_direction, get_slice_before_ghost_layer
@pytest.mark.parametrize('stencil', ['D2Q9', 'D3Q19', 'D3Q27'])
@pytest.mark.parametrize('galilean_correction', [False, True])
@pytest.mark.longrun
def test_flow_around_sphere(stencil, galilean_correction):
def flow_around_sphere(stencil, galilean_correction, L_LU, total_steps):
if galilean_correction and stencil != 'D3Q27':
return True
pytest.importorskip('pycuda')
stencil = get_stencil(stencil)
dim = len(stencil[0])
Q = len(stencil)
......@@ -31,16 +25,15 @@ def test_flow_around_sphere(stencil, galilean_correction):
streaming_pattern = 'aa'
timesteps = get_timesteps(streaming_pattern)
L_LU = 20
u_max = 0.05
Re = 5000
Re = 500000
kinematic_viscosity = (L_LU * u_max) / Re
initial_velocity = (u_max, ) + (0, ) * (dim - 1)
omega_v = relaxation_rate_from_lattice_viscosity(kinematic_viscosity)
channel_size = (30 * L_LU, ) + (100,) * (dim - 1)
channel_size = (10 * L_LU, ) + (5 * L_LU,) * (dim - 1)
sphere_position = (channel_size[0] // 3,) + (channel_size[1] // 2,) * (dim - 1)
sphere_radius = L_LU // 2
......@@ -130,7 +123,6 @@ def test_flow_around_sphere(stencil, galilean_correction):
dh.run_kernel(init_kernel)
total_steps = 5000
stability_check_frequency = 1000
for i in range(total_steps):
......@@ -142,3 +134,17 @@ def test_flow_around_sphere(stencil, galilean_correction):
if i % stability_check_frequency == 0:
dh.to_cpu(u_field.name)
assert np.isfinite(dh.cpu_arrays[u_field.name]).all()
@pytest.mark.parametrize('stencil', ['D2Q9', 'D3Q19', 'D3Q27'])
@pytest.mark.parametrize('galilean_correction', [False, True])
def test_flow_around_sphere_short(stencil, galilean_correction):
pytest.importorskip('pycuda')
flow_around_sphere(stencil, galilean_correction, 5, 200)
@pytest.mark.parametrize('stencil', ['D2Q9', 'D3Q19', 'D3Q27'])
@pytest.mark.parametrize('galilean_correction', [False, True])
@pytest.mark.longrun
def test_flow_around_sphere_long(stencil, galilean_correction):
pytest.importorskip('pycuda')
flow_around_sphere(stencil, galilean_correction, 20, 3000)
\ No newline at end of file
import pytest
import numpy as np
from lbmpy.methods import create_srt
from lbmpy.stencils import get_stencil
from lbmpy.methods.creationfunctions import create_with_default_polynomial_cumulants
from lbmpy.scenarios import create_lid_driven_cavity
@pytest.mark.parametrize('stencil_name', ['D2Q9', 'D3Q19', 'D3Q27'])
def test_weights(stencil_name):
......@@ -10,3 +12,16 @@ def test_weights(stencil_name):
cumulant_method = create_with_default_polynomial_cumulants(stencil, [1])
moment_method = create_srt(stencil, 1, cumulant=False, compressible=True, maxwellian_moments=True)
assert cumulant_method.weights == moment_method.weights
def test_cumulant_ldc():
sc_cumulant = create_lid_driven_cavity((20, 20), method='cumulant', relaxation_rate=1.999999,
compressible=True, force=(-1e-10, 0))
sc_cumulant_3D = create_lid_driven_cavity((20, 20, 3), method='cumulant', relaxation_rate=1.999999,
compressible=True, force=(-1e-10, 0, 0),
galilean_correction=True)
sc_cumulant.run(1000)
sc_cumulant_3D.run(1000)
assert np.isfinite(np.max(sc_cumulant.velocity[:, :]))
assert np.isfinite(np.max(sc_cumulant_3D.velocity[:, :, :]))
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment