Z-convolution
In [1]:
Copied!
# set backend for vtk/pyvista in jupyter
import pyvista as pv
pv.set_jupyter_backend('static')
from pyvirtualdisplay import Display
import numpy as np
#pv.start_xvfb()
# set backend for vtk/pyvista in jupyter
import pyvista as pv
pv.set_jupyter_backend('static')
from pyvirtualdisplay import Display
import numpy as np
#pv.start_xvfb()
In [2]:
Copied!
# cfdtools packages
import cfdtools.meshbase.simple as sm
from cfdtools.vtk import vtkMesh
# cfdtools packages
import cfdtools.meshbase.simple as sm
from cfdtools.vtk import vtkMesh
In [3]:
Copied!
cube = sm.Cube(10, 10, 10)
mesh = cube.export_mesh()
vtkmesh = vtkMesh(mesh)
def var_u(xyz):
dp = 2*np.pi
return 10+2*np.sin(dp*xyz[:,2])+np.sin(2*dp*xyz[:,0])
def var_p(xyz):
dp = 2*np.pi
return 100+np.sin(4*dp*xyz[:,2])*np.sin(2*dp*xyz[:,2])
xyz = vtkmesh.pyvista_grid.cell_centers().points
vtkmesh.pyvista_grid.cell_data['U'] = var_u(xyz)
vtkmesh.pyvista_grid.cell_data['P'] = var_p(xyz)
cube = sm.Cube(10, 10, 10)
mesh = cube.export_mesh()
vtkmesh = vtkMesh(mesh)
def var_u(xyz):
dp = 2*np.pi
return 10+2*np.sin(dp*xyz[:,2])+np.sin(2*dp*xyz[:,0])
def var_p(xyz):
dp = 2*np.pi
return 100+np.sin(4*dp*xyz[:,2])*np.sin(2*dp*xyz[:,2])
xyz = vtkmesh.pyvista_grid.cell_centers().points
vtkmesh.pyvista_grid.cell_data['U'] = var_u(xyz)
vtkmesh.pyvista_grid.cell_data['P'] = var_p(xyz)
In [4]:
Copied!
with Display():
vtkmesh.plot()
with Display():
vtkmesh.plot()
In [5]:
Copied!
vtkslice = vtkmesh.vtk_zconvolution(rms=True)
with Display():
vtkslice.plot()
vtkslice = vtkmesh.vtk_zconvolution(rms=True)
with Display():
vtkslice.plot()
2026-02-13 15:11:04,318 INFO > computes coords and compute chunks for planes
2026-02-13 15:11:04,319 INFO
2026-02-13 15:11:04,322 INFO 10 chunks found with min:max sizes 100:100
2026-02-13 15:11:04,323 INFO average distance (stddev) between planes: 1.00e-01 (2.01e-16)
2026-02-13 15:11:04,324 INFO wtime: 0.0036s
2026-02-13 15:11:04,324 INFO
2026-02-13 15:11:04,324 INFO > sort and localize cells in planes
2026-02-13 15:11:04,325 INFO
2026-02-13 15:11:04,326 INFO wtime: 0.0016s
2026-02-13 15:11:04,327 INFO
2026-02-13 15:11:04,328 INFO > create new sliced mesh with FFT data
2026-02-13 15:11:04,328 INFO vtu extract slice
2026-02-13 15:11:04,329 INFO wtime: 0.0011s
2026-02-13 15:11:04,330 INFO
2026-02-13 15:11:04,330 INFO U : 0 mode(s) of (10, 100) + avg, rms
2026-02-13 15:11:04,331 INFO P : 0 mode(s) of (10, 100) + avg, rms