Skip to content
Snippets Groups Projects
StreamInCellIntervalCodegen.py 979 B
Newer Older
import sympy as sp

from lbmpy.creationfunctions import create_lb_collision_rule, create_lb_update_rule
from lbmpy import LBMConfig

from pystencils_walberla import CodeGeneration
from lbmpy_walberla import generate_lattice_model

# general parameters
stencil = 'D3Q19'
omega = sp.Symbol('omega')
layout = 'fzyx'

# optimizations to be used by the code generator
optimizations = {'cse_global': True, 'field_layout': layout}

# method definition
method_params = {'stencil': stencil,
                 'method': 'srt',
                 'relaxation_rate': omega,
                 'compressible': True}

lbm_config = LBMConfig(streaming_pattern='pull')

collision_rule = create_lb_collision_rule(optimization=optimizations, **method_params)
update_rule = create_lb_update_rule(collision_rule=collision_rule, lbm_config=lbm_config, optimization=optimizations)

with CodeGeneration() as ctx:
    generate_lattice_model(ctx, "GeneratedLatticeModel", collision_rule, field_layout=layout)