Visualizing Geometry#

[1]:
%matplotlib notebook
[2]:
from os import listdir

import pyvista as pv
from pyvista import themes

from qlbm.infra import AmplitudeResult
from qlbm.lattice import MSLattice
from qlbm.tools.utils import create_directory_and_parents

pv.set_plot_theme(themes.ParaViewTheme())
[3]:
from qlbm.lattice.lattices.ab_lattice import ABLattice


lattice_2d = MSLattice(
    {
        "lattice": {
            "dim": {"x": 32, "y": 32},
            "velocities": {"x": 4, "y": 4},
        },
        "geometry": [
            {"shape": "cuboid", "x": [18, 19], "y": [7, 14], "boundary": "specular"},
            {"shape": "cuboid", "x": [18, 19], "y": [19, 26], "boundary": "specular"},
            {"shape": "cuboid", "x": [26, 27], "y": [19, 26], "boundary": "specular"},
            {"shape": "cuboid", "x": [26, 27], "y": [7, 14], "boundary": "specular"},
            {"shape": "cuboid", "x": [20, 25], "y": [4, 5], "boundary": "specular"},
            {"shape": "cuboid", "x": [20, 25], "y": [16, 17], "boundary": "specular"},
            {"shape": "cuboid", "x": [20, 25], "y": [28, 29], "boundary": "specular"},
        ],
    }
)
lattice_3d = MSLattice(
    {
        "lattice": {
            "dim": {"x": 16, "y": 128, "z": 16},
            "velocities": {"x": 4, "y": 4, "z": 4},
        },
        "geometry": [
            {
                "shape": "cuboid",
                "x": [10, 13],
                "y": [6, 88],
                "z": [10, 13],
                "boundary": "specular",
            }
        ],
    }
)

ab_lattice_2d = ABLattice(
    {
        "lattice": {
            "dim": {"x": 64, "y": 256},
            "velocities": "d2q9",
        },
        "geometry": [
            {
                "shape": "ymonomial",
                "comparator": "<=",
                "exponent": 2,
                "boundary": "bounceback",
            },
        ],
    }
)
[4]:
root_directory_2d = "qlbm-output/visualization-components-2d"
root_directory_2d_monomial = "qlbm-output/visualization-components-2d-monomial"
root_directory_3d = "qlbm-output/visualization-components-3d"
create_directory_and_parents(root_directory_2d)
create_directory_and_parents(root_directory_2d_monomial)
create_directory_and_parents(root_directory_3d)
[5]:
# Will output seven 2D stl files under `qlbm-output/visualization-components-2d/paraview`
AmplitudeResult(lattice_2d, root_directory_2d).visualize_geometry()
[6]:
# Will output seven 2D stl files under `qlbm-output/visualization-components-2d-monomial/paraview`
AmplitudeResult(ab_lattice_2d, root_directory_2d_monomial).visualize_geometry()
[7]:
# Will output one 3D stl files under `qlbm-output/visualization-components-3d/paraview`
AmplitudeResult(lattice_3d, root_directory_3d).visualize_geometry()
[8]:
pv.read(
    [
        f"{root_directory_2d}/paraview/{fname}"
        for fname in listdir(f"{root_directory_2d}/paraview")
    ]
).plot(cpos="xy", show_scalar_bar=True, jupyter_backend="static")
2026-05-12 23:00:32.523 (   2.693s) [    7F4390F64B80]vtkXOpenGLRenderWindow.:1460  WARN| bad X server connection. DISPLAY=
../../_images/examples_notebooks_geometry_vis_8_1.png
[9]:
pl = pv.Plotter()
mesh = pv.read(
    [
        f"{root_directory_2d_monomial}/paraview/{fname}"
        for fname in listdir(f"{root_directory_2d_monomial}/paraview")
    ]
).plot(show_scalar_bar=True, jupyter_backend="interactive")

# pl.add_mesh(mesh)
# pl.camera_position = "xy"
# pl.save_graphic("ymonomial.pdf")
../../_images/examples_notebooks_geometry_vis_9_0.png
[10]:
pv.read(
    [
        f"{root_directory_3d}/paraview/{fname}"
        for fname in listdir(f"{root_directory_3d}/paraview")
    ]
).plot(show_scalar_bar=True, jupyter_backend="static")
../../_images/examples_notebooks_geometry_vis_10_0.png
[ ]: