Skip to content
Snippets Groups Projects
Commit a2a08c23 authored by Frederik Hennig's avatar Frederik Hennig
Browse files

fix data types on boundary force vector

parent 5586d82d
No related branches found
No related tags found
1 merge request!172Changes for compatibility with pystencils 2.0
Pipeline #77909 canceled
......@@ -12,6 +12,9 @@ from lbmpy.advanced_streaming.utility import is_inplace, Timestep, AccessPdfValu
from .._compat import IS_PYSTENCILS_2
if IS_PYSTENCILS_2:
from pystencils.types import PsNumericType
class LatticeBoltzmannBoundaryHandling(BoundaryHandling):
"""
......@@ -188,10 +191,10 @@ def create_lattice_boltzmann_boundary_kernel(pdf_field, index_field, lb_method,
**kernel_creation_args
)
default_data_type = config.get_option("default_dtype")
default_data_type: PsNumericType = config.get_option("default_dtype")
if force_vector is None:
force_vector_type = np.dtype([(f"F_{i}", default_data_type.c_name) for i in range(dim)], align=True)
force_vector_type = np.dtype([(f"F_{i}", default_data_type.numpy_dtype) for i in range(dim)], align=True)
force_vector = Field.create_generic('force_vector', spatial_dimensions=1,
dtype=force_vector_type, field_type=FieldType.INDEXED)
......
......@@ -15,6 +15,8 @@ from pystencils import create_data_handling, make_slice, Target, CreateKernelCon
from pystencils.slicing import slice_from_direction
from pystencils.stencil import inverse_direction
from lbmpy._compat import IS_PYSTENCILS_2
def mirror_stencil(direction, mirror_axis):
for i, n in enumerate(mirror_axis):
......@@ -448,8 +450,17 @@ def test_force_on_boundary(given_force_vector, dtype):
method = create_lb_method(lbm_config=LBMConfig(stencil=stencil, method=Method.SRT, relaxation_rate=1.8))
noslip = NoSlip(name="noslip", calculate_force_on_boundary=True)
bouzidi = NoSlipLinearBouzidi(name="bouzidi", calculate_force_on_boundary=True)
qq_bounce_Back = QuadraticBounceBack(name="qqBB", relaxation_rate=1.8, calculate_force_on_boundary=True)
bouzidi = NoSlipLinearBouzidi(
name="bouzidi",
data_type=dtype,
calculate_force_on_boundary=True
)
qq_bounce_Back = QuadraticBounceBack(
name="qqBB",
relaxation_rate=1.8,
data_type=dtype,
calculate_force_on_boundary=True
)
boundary_objects = [noslip, bouzidi, qq_bounce_Back]
for boundary in boundary_objects:
......@@ -465,7 +476,14 @@ def test_force_on_boundary(given_force_vector, dtype):
index_field = ps.Field('indexVector', ps.FieldType.INDEXED, index_struct_dtype, layout=[0],
shape=(ps.TypedSymbol("indexVectorSize", "int32"), 1), strides=(1, 1))
create_lattice_boltzmann_boundary_kernel(pdfs, index_field, method, boundary, force_vector=force_vector)
create_lattice_boltzmann_boundary_kernel(
pdfs,
index_field,
method,
boundary,
force_vector=force_vector,
**({"default_dtype": dtype} if IS_PYSTENCILS_2 else dict())
)
def _numpy_data_type_for_boundary_object(boundary_object, dim):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment