Skip to content
Snippets Groups Projects
Commit e1318522 authored by Christoph Rettinger's avatar Christoph Rettinger
Browse files

Merge branch 'mr_adapt_codegen_to_new_lbmpy' into 'master'

Adapted parts using codegen via lbmpy to new lbmpy version

See merge request walberla/walberla!248
parents ff1a3a46 76c59f41
No related merge requests found
import sympy as sp import sympy as sp
import pystencils as ps import pystencils as ps
from lbmpy.creationfunctions import create_lb_method_from_existing, create_lb_ast, create_lb_method from lbmpy.creationfunctions import create_lb_method_from_existing, create_lb_method
from lbmpy_walberla import generate_lattice_model from lbmpy_walberla import generate_lattice_model
from pystencils_walberla import CodeGeneration from pystencils_walberla import CodeGeneration
from lbmpy.creationfunctions import create_lb_collision_rule from lbmpy.creationfunctions import create_lb_collision_rule
from lbmpy.moments import MOMENT_SYMBOLS, is_even, get_order from lbmpy.moments import is_even, get_order
from lbmpy.stencils import get_stencil from lbmpy.stencils import get_stencil
from lbmpy.forcemodels import * from lbmpy.methods import mrt_orthogonal_modes_literature
with CodeGeneration() as ctx: with CodeGeneration() as ctx:
stencil = get_stencil("D3Q19", 'walberla') stencil = get_stencil("D3Q19", 'walberla')
omega = sp.symbols("omega_:%d" % len(stencil)) omega = sp.symbols("omega_:%d" % len(stencil))
method = create_lb_method(stencil=stencil, method='mrt', maxwellian_moments=False) moments = mrt_orthogonal_modes_literature(stencil, True, False)
method = create_lb_method(stencil=stencil, method='mrt', maxwellian_moments=False, nested_moments=moments)
def modification_func(moment, eq, rate): def modification_func(moment, eq, rate):
omegaVisc = sp.Symbol("omega_visc") omegaVisc = sp.Symbol("omega_visc")
omegaBulk = ps.fields("omega_bulk: [3D]", layout='fzyx')# sp.Symbol("omega_bulk") omegaBulk = ps.fields("omega_bulk: [3D]", layout='fzyx')
omegaMagic = sp.Symbol("omega_magic") omegaMagic = sp.Symbol("omega_magic")
if get_order(moment) <= 1: if get_order(moment) <= 1:
return moment, eq, 0 return moment, eq, 0
......
import sympy as sp import sympy as sp
import pystencils as ps import pystencils as ps
from lbmpy.creationfunctions import create_lb_method_from_existing, create_lb_ast, create_lb_method from lbmpy.creationfunctions import create_lb_method_from_existing, create_lb_method
from lbmpy_walberla import generate_lattice_model from lbmpy_walberla import generate_lattice_model
from pystencils_walberla import CodeGeneration from pystencils_walberla import CodeGeneration
from lbmpy.creationfunctions import create_lb_collision_rule from lbmpy.creationfunctions import create_lb_collision_rule
from lbmpy.moments import MOMENT_SYMBOLS, is_even, get_order from lbmpy.moments import is_even, get_order
from lbmpy.stencils import get_stencil from lbmpy.stencils import get_stencil
from lbmpy.forcemodels import * from lbmpy.forcemodels import Luo
from lbmpy.methods import mrt_orthogonal_modes_literature
with CodeGeneration() as ctx: with CodeGeneration() as ctx:
...@@ -18,7 +18,9 @@ with CodeGeneration() as ctx: ...@@ -18,7 +18,9 @@ with CodeGeneration() as ctx:
stencil = get_stencil("D3Q19", 'walberla') stencil = get_stencil("D3Q19", 'walberla')
omega = sp.symbols("omega_:%d" % len(stencil)) omega = sp.symbols("omega_:%d" % len(stencil))
methodWithForce = create_lb_method(stencil=stencil, method='mrt', maxwellian_moments=False,force_model=forcemodel) moments = mrt_orthogonal_modes_literature(stencil, True, False)
methodWithForce = create_lb_method(stencil=stencil, method='mrt', maxwellian_moments=False,
force_model=forcemodel, nested_moments=moments)
def modification_func(moment, eq, rate): def modification_func(moment, eq, rate):
omegaVisc = sp.Symbol("omega_visc") omegaVisc = sp.Symbol("omega_visc")
......
...@@ -70,7 +70,7 @@ int main( int argc, char ** argv ) ...@@ -70,7 +70,7 @@ int main( int argc, char ** argv )
// create fields // create fields
BlockDataID forceFieldId = field::addToStorage<VectorField_T>( blocks, "Force", real_t( 0.0 )); BlockDataID forceFieldId = field::addToStorage<VectorField_T>( blocks, "Force", real_t( 0.0 ));
LatticeModel_T latticeModel = LatticeModel_T( forceFieldId, omega, omega, seed, temperature, uint_t(0) ); LatticeModel_T latticeModel = LatticeModel_T( forceFieldId, omega, seed, temperature, uint_t(0) );
BlockDataID pdfFieldId = lbm::addPdfFieldToStorage( blocks, "pdf field", latticeModel, initialVelocity, real_t(1) ); BlockDataID pdfFieldId = lbm::addPdfFieldToStorage( blocks, "pdf field", latticeModel, initialVelocity, real_t(1) );
BlockDataID flagFieldId = field::addFlagFieldToStorage< FlagField_T >( blocks, "flag field" ); BlockDataID flagFieldId = field::addFlagFieldToStorage< FlagField_T >( blocks, "flag field" );
......
...@@ -5,7 +5,7 @@ from pystencils_walberla import CodeGeneration ...@@ -5,7 +5,7 @@ from pystencils_walberla import CodeGeneration
from lbmpy_walberla import generate_lattice_model from lbmpy_walberla import generate_lattice_model
with CodeGeneration() as ctx: with CodeGeneration() as ctx:
omega_shear, omega_bulk = sp.symbols("omega_shear, omega_bulk") omega_shear = sp.symbols("omega_shear")
temperature = sp.symbols("temperature") temperature = sp.symbols("temperature")
force_field, vel_field = ps.fields("force(3), velocity(3): [3D]", layout='fzyx') force_field, vel_field = ps.fields("force(3), velocity(3): [3D]", layout='fzyx')
...@@ -14,7 +14,7 @@ with CodeGeneration() as ctx: ...@@ -14,7 +14,7 @@ with CodeGeneration() as ctx:
'temperature' : temperature, 'temperature' : temperature,
'block_offsets' : 'walberla', 'block_offsets' : 'walberla',
}, },
method='mrt3', relaxation_rates=[omega_shear, omega_bulk], method='mrt', relaxation_rates=[omega_shear]*19,
force_model='guo', force=force_field.center_vector, force_model='guo', force=force_field.center_vector,
optimization={'cse_global': True} optimization={'cse_global': True}
) )
......
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