ESPResSo
Extensible Simulation Package for Research on Soft Matter Systems
Loading...
Searching...
No Matches
walberla::LBWalberlaImpl< FloatType, Architecture > Class Template Reference

Class that runs and controls the LB on waLBerla. More...

#include <LBWalberlaImpl.hpp>

+ Inheritance diagram for walberla::LBWalberlaImpl< FloatType, Architecture >:
+ Collaboration diagram for walberla::LBWalberlaImpl< FloatType, Architecture >:

Classes

struct  GhostComm
 

Public Types

using Stencil = stencil::D3Q19
 Stencil for collision and streaming operations.
 
using StencilFull = stencil::D3Q27
 Stencil for ghost communication (includes domain corners).
 
using BlockStorage = LatticeWalberla::Lattice_T
 Lattice model (e.g.
 
using PdfField = FieldTrait< FloatType, Stencil, Architecture >::PdfField
 
using VectorField = FieldTrait< FloatType, Stencil, Architecture >::VectorField
 
using FlagField = BoundaryModel::FlagField
 
- Public Types inherited from LatticeModel
using units_map = std::unordered_map< std::string, double >
 

Public Member Functions

template<typename T >
FloatType FloatType_c (T t) const
 
std::size_t stencil_size () const noexcept override
 
bool is_double_precision () const noexcept override
 
bool is_gpu () const noexcept override
 
 LBWalberlaImpl (std::shared_ptr< LatticeWalberla > lattice, double viscosity, double density)
 
 ~LBWalberlaImpl () override=default
 
void integrate () override
 
void set_collision_model (double kT, unsigned int seed) override
 Set up the thermalized collision model.
 
void set_collision_model (std::unique_ptr< LeesEdwardsPack > &&lees_edwards_pack) override
 Set up the Lees-Edwards collision model.
 
void check_lebc (unsigned int shear_direction, unsigned int shear_plane_normal) const override
 Verify that MD and LB Lees-Edwards parameters are consistent.
 
void ghost_communication () override
 Perform all pending ghost layer updates.
 
void ghost_communication_pdf () override
 
void ghost_communication_vel () override
 
void ghost_communication_laf () override
 
void ghost_communication_boundary ()
 
void ghost_communication_full ()
 Communicate all fields at once using the D3Q27 stencil.
 
void apply_lees_edwards_interpolation ()
 
std::optional< Utils::Vector3dget_node_velocity (Utils::Vector3i const &node, bool consider_ghosts=false) const override
 
bool set_node_velocity (Utils::Vector3i const &node, Utils::Vector3d const &v) override
 
std::vector< double > get_slice_velocity (Utils::Vector3i const &lower_corner, Utils::Vector3i const &upper_corner) const override
 
void set_slice_velocity (Utils::Vector3i const &lower_corner, Utils::Vector3i const &upper_corner, std::vector< double > const &velocity) override
 
std::optional< double > get_node_density (Utils::Vector3i const &node, bool consider_ghosts=false) const override
 
bool set_node_density (Utils::Vector3i const &node, double density) override
 
std::vector< double > get_slice_density (Utils::Vector3i const &lower_corner, Utils::Vector3i const &upper_corner) const override
 
void set_slice_density (Utils::Vector3i const &lower_corner, Utils::Vector3i const &upper_corner, std::vector< double > const &density) override
 
std::optional< std::vector< double > > get_node_population (Utils::Vector3i const &node, bool consider_ghosts=false) const override
 
bool set_node_population (Utils::Vector3i const &node, std::vector< double > const &population) override
 
std::vector< double > get_slice_population (Utils::Vector3i const &lower_corner, Utils::Vector3i const &upper_corner) const override
 
void set_slice_population (Utils::Vector3i const &lower_corner, Utils::Vector3i const &upper_corner, std::vector< double > const &population) override
 
std::optional< Utils::Vector3dget_node_force_to_be_applied (Utils::Vector3i const &node) const override
 
std::optional< Utils::Vector3dget_node_last_applied_force (Utils::Vector3i const &node, bool consider_ghosts=false) const override
 
bool set_node_last_applied_force (Utils::Vector3i const &node, Utils::Vector3d const &force) override
 
std::vector< double > get_slice_last_applied_force (Utils::Vector3i const &lower_corner, Utils::Vector3i const &upper_corner) const override
 
void set_slice_last_applied_force (Utils::Vector3i const &lower_corner, Utils::Vector3i const &upper_corner, std::vector< double > const &force) override
 
std::optional< Utils::VectorXd< 9 > > get_node_pressure_tensor (Utils::Vector3i const &node) const override
 
std::vector< double > get_slice_pressure_tensor (Utils::Vector3i const &lower_corner, Utils::Vector3i const &upper_corner) const override
 
std::function< bool(Utils::Vector3d const &)> make_lattice_position_checker (bool consider_points_in_halo) const override
 
bool add_force_at_pos (Utils::Vector3d const &pos, Utils::Vector3d const &force) override
 
void add_forces_at_pos (std::vector< Utils::Vector3d > const &pos, std::vector< Utils::Vector3d > const &forces) override
 Distribute forces to the lattice at given positions.
 
std::optional< Utils::Vector3dget_velocity_at_pos (Utils::Vector3d const &pos, bool consider_points_in_halo=false) const override
 
std::vector< Utils::Vector3dget_velocities_at_pos (std::vector< Utils::Vector3d > const &pos) override
 Interpolate velocities at given positions (batch version).
 
std::optional< double > get_density_at_pos (Utils::Vector3d const &pos, bool consider_points_in_halo=false) const override
 
std::vector< double > get_densities_at_pos (std::vector< Utils::Vector3d > const &pos) override
 
void reset_boundary_handling (std::shared_ptr< BlockStorage > const &blocks)
 
void on_boundary_add ()
 Lazily enable boundary mode on first boundary addition.
 
void clear_boundaries () override
 
void reallocate_ubb_field () override
 
void update_boundary_from_shape (std::vector< int > const &raster_flat, std::vector< double > const &data_flat) override
 Set boundary conditions from a rasterized shape.
 
std::optional< Utils::Vector3dget_node_velocity_at_boundary (Utils::Vector3i const &node, bool consider_ghosts=false) const override
 
bool set_node_velocity_at_boundary (Utils::Vector3i const &node, Utils::Vector3d const &velocity) override
 
std::vector< std::optional< Utils::Vector3d > > get_slice_velocity_at_boundary (Utils::Vector3i const &lower_corner, Utils::Vector3i const &upper_corner) const override
 
void set_slice_velocity_at_boundary (Utils::Vector3i const &lower_corner, Utils::Vector3i const &upper_corner, std::vector< std::optional< Utils::Vector3d > > const &velocity) override
 
std::optional< Utils::Vector3dget_node_boundary_force (Utils::Vector3i const &node) const override
 
bool remove_node_from_boundary (Utils::Vector3i const &node) override
 
std::optional< bool > get_node_is_boundary (Utils::Vector3i const &node, bool consider_ghosts=false) const override
 
std::vector< bool > get_slice_is_boundary (Utils::Vector3i const &lower_corner, Utils::Vector3i const &upper_corner) const override
 
Utils::Vector3d get_boundary_force_from_shape (std::vector< int > const &raster_flat) const override
 Total force exerted by the fluid on a subset of boundary nodes.
 
Utils::Vector3d get_boundary_force () const override
 
Utils::VectorXd< 9 > get_pressure_tensor () const override
 
Utils::Vector3d get_momentum () const override
 
void set_external_force (Utils::Vector3d const &ext_force) override
 
Utils::Vector3d get_external_force () const noexcept override
 
void set_viscosity (double viscosity) override
 
double get_viscosity () const noexcept override
 
double get_density () const noexcept override
 
double get_kT () const noexcept override
 
unsigned int get_seed () const noexcept override
 
std::optional< uint64_t > get_rng_state () const override
 
void set_rng_state (uint64_t counter) override
 
LatticeWalberla const & get_lattice () const noexcept override
 
std::size_t get_velocity_field_id () const noexcept override
 
std::size_t get_force_field_id () const noexcept override
 
FloatType pressure_tensor_correction_factor () const
 Correction factor for off-diagonal pressure tensor elements.
 
void pressure_tensor_correction (Matrix3< FloatType > &tensor) const
 
void pressure_tensor_correction (std::span< FloatType, 9ul > tensor) const
 
void register_vtk_field_filters (walberla::vtk::VTKOutput &vtk_obj) override
 
void register_vtk_field_writers (walberla::vtk::VTKOutput &vtk_obj, LatticeModel::units_map const &units, int flag_observables) override
 
- Public Member Functions inherited from LBWalberlaBase
 ~LBWalberlaBase () override=default
 
- Public Member Functions inherited from LatticeModel
virtual ~LatticeModel ()=default
 
std::shared_ptr< VTKHandlecreate_vtk (int delta_N, int initial_count, int flag_observables, units_map const &units_conversion, std::string const &identifier, std::string const &base_folder, std::string const &prefix, bool force_pvtu)
 Create a VTK observable.
 
void write_vtk (std::string const &vtk_uid)
 Write a VTK observable to disk.
 
void switch_vtk (std::string const &vtk_uid, bool status)
 Toggle a VTK observable on/off.
 

Protected Types

using Kernels = detail::KernelTrait< FloatType, Architecture >
 
using BoundaryModel = BoundaryHandling< FloatType, Vector3< FloatType >, typename Kernels::DynamicUBB >
 
using CollisionModel = std::variant< typename Kernels::StreamCollisionModelThermalized, typename Kernels::StreamCollisionModelLeesEdwards >
 
using _PdfField = FieldTrait< FloatType, Stencil >::PdfField
 
using _VectorField = FieldTrait< FloatType, Stencil >::VectorField
 
using RegularFullCommunicator = FieldTrait< FloatType, Stencil, Architecture >::template RegularCommScheme< stencil::D3Q27 >
 Full communicator.
 
using BoundaryFullCommunicator = FieldTrait< FloatType, Stencil, Architecture >::template BoundaryCommScheme< stencil::D3Q27 >
 
using PDFStreamingCommunicator = FieldTrait< FloatType, Stencil, Architecture >::template RegularCommScheme< Stencil >
 Regular communicator.
 
template<class Field >
using PackInfo = FieldTrait< FloatType, Stencil, Architecture >::template PackInfo< Field >
 

Protected Member Functions

void integrate_vtk_writers () override
 
template<typename T >
void zero_centered_transform_impl (T &data, auto const factor) const
 Scale data by a conversion factor (in-place).
 
void zero_centered_to_lb_in_place (auto &data) const
 
void zero_centered_to_md_in_place (auto &data) const
 
auto zero_centered_to_lb (auto const &data) const
 
auto zero_centered_to_md (auto const &data) const
 
template<typename Field >
auto add_to_storage (std::string const tag)
 Convenience function to add a field with a custom allocator.
 
void setup_full_communicator ()
 Set up D3Q27 communicators for full ghost layer updates.
 
void setup_streaming_communicator ()
 Set up the communicator used during integration.
 

Protected Attributes

FloatType m_viscosity
 
FloatType m_density
 kinematic viscosity
 
FloatType m_kT
 
unsigned int m_seed
 
double m_zc_to_md
 
double m_zc_to_lb
 
std::shared_ptr< LatticeWalberlam_lattice
 
BlockDataID m_pdf_field_id
 
BlockDataID m_pdf_tmp_field_id
 
BlockDataID m_flag_field_id
 
BlockDataID m_last_applied_force_field_id
 
BlockDataID m_force_to_be_applied_id
 
BlockDataID m_velocity_field_id
 
BlockDataID m_vel_tmp_field_id
 
FlagUID const Boundary_flag {"boundary"}
 Flag for boundary cells.
 
bool m_has_boundaries {false}
 
std::shared_ptr< BoundaryModelm_boundary
 
std::shared_ptr< BoundaryFullCommunicatorm_boundary_communicator
 
std::shared_ptr< RegularFullCommunicatorm_full_communicator
 
std::shared_ptr< RegularFullCommunicatorm_pdf_communicator
 
std::shared_ptr< RegularFullCommunicatorm_vel_communicator
 
std::shared_ptr< RegularFullCommunicatorm_laf_communicator
 
std::shared_ptr< PDFStreamingCommunicatorm_pdf_streaming_communicator
 
std::bitset< GhostComm::SIZEm_pending_ghost_comm
 
ResourceObserver m_mpi_cart_comm_observer
 
std::shared_ptr< CollisionModelm_collision_model
 
std::shared_ptr< ResetForce< PdfField, VectorField > > m_reset_force
 
std::shared_ptr< typename Kernels::UpdateVelFromPDFm_update_velocities_from_pdf
 
std::shared_ptr< LeesEdwardsPackm_lees_edwards_callbacks
 
std::shared_ptr< InterpolateAndShiftAtBoundary< _PdfField, FloatType > > m_lees_edwards_pdf_interpol_sweep
 
std::shared_ptr< InterpolateAndShiftAtBoundary< _VectorField, FloatType > > m_lees_edwards_vel_interpol_sweep
 
std::shared_ptr< InterpolateAndShiftAtBoundary< _VectorField, FloatType > > m_lees_edwards_last_applied_force_interpol_sweep
 
- Protected Attributes inherited from LatticeModel
std::map< std::string, std::shared_ptr< VTKHandle > > m_vtk_auto
 VTK writers that are executed automatically.
 
std::map< std::string, std::shared_ptr< VTKHandle > > m_vtk_manual
 VTK writers that are executed manually.
 

Detailed Description

template<typename FloatType, lbmpy::Arch Architecture>
class walberla::LBWalberlaImpl< FloatType, Architecture >

Class that runs and controls the LB on waLBerla.

Definition at line 86 of file LBWalberlaImpl.hpp.

Member Typedef Documentation

◆ _PdfField

template<typename FloatType , lbmpy::Arch Architecture>
using walberla::LBWalberlaImpl< FloatType, Architecture >::_PdfField = FieldTrait<FloatType, Stencil>::PdfField
protected

Definition at line 111 of file LBWalberlaImpl.hpp.

◆ _VectorField

template<typename FloatType , lbmpy::Arch Architecture>
using walberla::LBWalberlaImpl< FloatType, Architecture >::_VectorField = FieldTrait<FloatType, Stencil>::VectorField
protected

Definition at line 112 of file LBWalberlaImpl.hpp.

◆ BlockStorage

template<typename FloatType , lbmpy::Arch Architecture>
using walberla::LBWalberlaImpl< FloatType, Architecture >::BlockStorage = LatticeWalberla::Lattice_T

Lattice model (e.g.

blockforest).

Definition at line 107 of file LBWalberlaImpl.hpp.

◆ BoundaryFullCommunicator

template<typename FloatType , lbmpy::Arch Architecture>
using walberla::LBWalberlaImpl< FloatType, Architecture >::BoundaryFullCommunicator = FieldTrait<FloatType, Stencil, Architecture>::template BoundaryCommScheme<stencil::D3Q27>
protected

Definition at line 147 of file LBWalberlaImpl.hpp.

◆ BoundaryModel

template<typename FloatType , lbmpy::Arch Architecture>
using walberla::LBWalberlaImpl< FloatType, Architecture >::BoundaryModel = BoundaryHandling<FloatType, Vector3<FloatType>, typename Kernels::DynamicUBB>
protected

Definition at line 95 of file LBWalberlaImpl.hpp.

◆ CollisionModel

template<typename FloatType , lbmpy::Arch Architecture>
using walberla::LBWalberlaImpl< FloatType, Architecture >::CollisionModel = std::variant<typename Kernels::StreamCollisionModelThermalized, typename Kernels::StreamCollisionModelLeesEdwards>
protected

Definition at line 97 of file LBWalberlaImpl.hpp.

◆ FlagField

template<typename FloatType , lbmpy::Arch Architecture>
using walberla::LBWalberlaImpl< FloatType, Architecture >::FlagField = BoundaryModel::FlagField

Definition at line 117 of file LBWalberlaImpl.hpp.

◆ Kernels

template<typename FloatType , lbmpy::Arch Architecture>
using walberla::LBWalberlaImpl< FloatType, Architecture >::Kernels = detail::KernelTrait<FloatType, Architecture>
protected

Definition at line 94 of file LBWalberlaImpl.hpp.

◆ PackInfo

template<typename FloatType , lbmpy::Arch Architecture>
template<class Field >
using walberla::LBWalberlaImpl< FloatType, Architecture >::PackInfo = FieldTrait<FloatType, Stencil, Architecture>::template PackInfo<Field>
protected

Definition at line 158 of file LBWalberlaImpl.hpp.

◆ PdfField

template<typename FloatType , lbmpy::Arch Architecture>
using walberla::LBWalberlaImpl< FloatType, Architecture >::PdfField = FieldTrait<FloatType, Stencil, Architecture>::PdfField

Definition at line 115 of file LBWalberlaImpl.hpp.

◆ PDFStreamingCommunicator

template<typename FloatType , lbmpy::Arch Architecture>
using walberla::LBWalberlaImpl< FloatType, Architecture >::PDFStreamingCommunicator = FieldTrait<FloatType, Stencil, Architecture>::template RegularCommScheme<Stencil>
protected

Regular communicator.

We use the same directions as the stencil during integration.

Definition at line 154 of file LBWalberlaImpl.hpp.

◆ RegularFullCommunicator

template<typename FloatType , lbmpy::Arch Architecture>
using walberla::LBWalberlaImpl< FloatType, Architecture >::RegularFullCommunicator = FieldTrait<FloatType, Stencil, Architecture>::template RegularCommScheme<stencil::D3Q27>
protected

Full communicator.

We use the D3Q27 directions to update cells along the diagonals during a full ghost communication. This is needed to properly update the corners of the ghost layer when setting cell velocities or populations.

Definition at line 144 of file LBWalberlaImpl.hpp.

◆ Stencil

template<typename FloatType , lbmpy::Arch Architecture>
using walberla::LBWalberlaImpl< FloatType, Architecture >::Stencil = stencil::D3Q19

Stencil for collision and streaming operations.

Definition at line 103 of file LBWalberlaImpl.hpp.

◆ StencilFull

template<typename FloatType , lbmpy::Arch Architecture>
using walberla::LBWalberlaImpl< FloatType, Architecture >::StencilFull = stencil::D3Q27

Stencil for ghost communication (includes domain corners).

Definition at line 105 of file LBWalberlaImpl.hpp.

◆ VectorField

template<typename FloatType , lbmpy::Arch Architecture>
using walberla::LBWalberlaImpl< FloatType, Architecture >::VectorField = FieldTrait<FloatType, Stencil, Architecture>::VectorField

Definition at line 116 of file LBWalberlaImpl.hpp.

Constructor & Destructor Documentation

◆ LBWalberlaImpl()

◆ ~LBWalberlaImpl()

template<typename FloatType , lbmpy::Arch Architecture>
walberla::LBWalberlaImpl< FloatType, Architecture >::~LBWalberlaImpl ( )
overridedefault

Member Function Documentation

◆ add_force_at_pos()

template<typename FloatType , lbmpy::Arch Architecture>
bool walberla::LBWalberlaImpl< FloatType, Architecture >::add_force_at_pos ( Utils::Vector3d const &  pos,
Utils::Vector3d const &  force 
)
overridevirtual

Implements LBWalberlaBase.

Definition at line 345 of file LBInterpolation.impl.hpp.

◆ add_forces_at_pos()

template<typename FloatType , lbmpy::Arch Architecture>
void walberla::LBWalberlaImpl< FloatType, Architecture >::add_forces_at_pos ( std::vector< Utils::Vector3d > const &  pos,
std::vector< Utils::Vector3d > const &  forces 
)
overridevirtual

Distribute forces to the lattice at given positions.

Uses B-spline interpolation to spread each force over the surrounding lattice nodes. On GPU, positions are transformed to block-local coordinates and the operation is performed in a single kernel launch.

Implements LBWalberlaBase.

Definition at line 85 of file LBInterpolation.impl.hpp.

References walberla::lbm::accessor::Interpolation::add_force(), block(), lbmpy::CPU, and lbmpy::GPU.

◆ add_to_storage()

template<typename FloatType , lbmpy::Arch Architecture>
template<typename Field >
auto walberla::LBWalberlaImpl< FloatType, Architecture >::add_to_storage ( std::string const  tag)
inlineprotected

Convenience function to add a field with a custom allocator.

When vectorization is off, let waLBerla decide which memory allocator to use. When vectorization is on, the aligned memory allocator is required, otherwise cpu_vectorize_info["assume_aligned"] will trigger assertions. That is because for single-precision kernels the waLBerla heuristic in src/field/allocation/FieldAllocator.h will fall back to StdFieldAlloc, yet AllocateAligned is needed for intrinsics to work.

Definition at line 872 of file LBWalberlaImpl.hpp.

References block(), lbmpy::CPU, walberla::lbm::accessor::Population::initialize(), walberla::lbm::accessor::Vector::initialize(), and walberla::LBWalberlaImpl< FloatType, Architecture >::m_lattice.

◆ apply_lees_edwards_interpolation()

template<typename FloatType , lbmpy::Arch Architecture>
void walberla::LBWalberlaImpl< FloatType, Architecture >::apply_lees_edwards_interpolation ( )
inline

◆ check_lebc()

template<typename FloatType , lbmpy::Arch Architecture>
void walberla::LBWalberlaImpl< FloatType, Architecture >::check_lebc ( unsigned int  shear_direction,
unsigned int  shear_plane_normal 
) const
overridevirtual

Verify that MD and LB Lees-Edwards parameters are consistent.

Implements LBWalberlaBase.

Definition at line 142 of file LBCollisionSetup.impl.hpp.

◆ clear_boundaries()

template<typename FloatType , lbmpy::Arch Architecture>
void walberla::LBWalberlaImpl< FloatType, Architecture >::clear_boundaries ( )
overridevirtual

Implements LBWalberlaBase.

Definition at line 200 of file LBBoundaryAccess.impl.hpp.

◆ FloatType_c()

template<typename FloatType , lbmpy::Arch Architecture>
template<typename T >
FloatType walberla::LBWalberlaImpl< FloatType, Architecture >::FloatType_c ( t) const
inline

◆ get_boundary_force()

template<typename FloatType , lbmpy::Arch Architecture>
Utils::Vector3d walberla::LBWalberlaImpl< FloatType, Architecture >::get_boundary_force ( ) const
overridevirtual

Implements LBWalberlaBase.

Definition at line 297 of file LBBoundaryAccess.impl.hpp.

References block(), and walberla::to_vector3d().

◆ get_boundary_force_from_shape()

template<typename FloatType , lbmpy::Arch Architecture>
Utils::Vector3d walberla::LBWalberlaImpl< FloatType, Architecture >::get_boundary_force_from_shape ( std::vector< int > const &  raster_flat) const
overridevirtual

Total force exerted by the fluid on a subset of boundary nodes.

Only boundary nodes where raster_flat is non-zero are included. The force is accumulated from the UBB index/force vectors by matching each boundary node's stencil neighbors against the index field.

Implements LBWalberlaBase.

Definition at line 264 of file LBBoundaryAccess.impl.hpp.

References block().

◆ get_densities_at_pos()

template<typename FloatType , lbmpy::Arch Architecture>
std::vector< double > walberla::LBWalberlaImpl< FloatType, Architecture >::get_densities_at_pos ( std::vector< Utils::Vector3d > const &  pos)
overridevirtual

◆ get_density()

template<typename FloatType , lbmpy::Arch Architecture>
double walberla::LBWalberlaImpl< FloatType, Architecture >::get_density ( ) const
inlineoverridevirtualnoexcept

◆ get_density_at_pos()

template<typename FloatType , lbmpy::Arch Architecture>
std::optional< double > walberla::LBWalberlaImpl< FloatType, Architecture >::get_density_at_pos ( Utils::Vector3d const &  pos,
bool  consider_points_in_halo = false 
) const
overridevirtual

Implements LBWalberlaBase.

Definition at line 333 of file LBInterpolation.impl.hpp.

◆ get_external_force()

template<typename FloatType , lbmpy::Arch Architecture>
Utils::Vector3d walberla::LBWalberlaImpl< FloatType, Architecture >::get_external_force ( ) const
inlineoverridevirtualnoexcept

◆ get_force_field_id()

template<typename FloatType , lbmpy::Arch Architecture>
std::size_t walberla::LBWalberlaImpl< FloatType, Architecture >::get_force_field_id ( ) const
inlineoverridevirtualnoexcept

◆ get_kT()

template<typename FloatType , lbmpy::Arch Architecture>
double walberla::LBWalberlaImpl< FloatType, Architecture >::get_kT ( ) const
inlineoverridevirtualnoexcept

◆ get_lattice()

◆ get_momentum()

◆ get_node_boundary_force()

template<typename FloatType , lbmpy::Arch Architecture>
std::optional< Utils::Vector3d > walberla::LBWalberlaImpl< FloatType, Architecture >::get_node_boundary_force ( Utils::Vector3i const &  node) const
overridevirtual

Implements LBWalberlaBase.

Definition at line 123 of file LBBoundaryAccess.impl.hpp.

References walberla::get_block_and_cell().

◆ get_node_density()

template<typename FloatType , lbmpy::Arch Architecture>
std::optional< double > walberla::LBWalberlaImpl< FloatType, Architecture >::get_node_density ( Utils::Vector3i const &  node,
bool  consider_ghosts = false 
) const
overridevirtual

◆ get_node_force_to_be_applied()

template<typename FloatType , lbmpy::Arch Architecture>
std::optional< Utils::Vector3d > walberla::LBWalberlaImpl< FloatType, Architecture >::get_node_force_to_be_applied ( Utils::Vector3i const &  node) const
overridevirtual

◆ get_node_is_boundary()

template<typename FloatType , lbmpy::Arch Architecture>
std::optional< bool > walberla::LBWalberlaImpl< FloatType, Architecture >::get_node_is_boundary ( Utils::Vector3i const &  node,
bool  consider_ghosts = false 
) const
overridevirtual

Implements LBWalberlaBase.

Definition at line 147 of file LBBoundaryAccess.impl.hpp.

References walberla::get_block_and_cell().

◆ get_node_last_applied_force()

template<typename FloatType , lbmpy::Arch Architecture>
std::optional< Utils::Vector3d > walberla::LBWalberlaImpl< FloatType, Architecture >::get_node_last_applied_force ( Utils::Vector3i const &  node,
bool  consider_ghosts = false 
) const
overridevirtual

◆ get_node_population()

template<typename FloatType , lbmpy::Arch Architecture>
std::optional< std::vector< double > > walberla::LBWalberlaImpl< FloatType, Architecture >::get_node_population ( Utils::Vector3i const &  node,
bool  consider_ghosts = false 
) const
overridevirtual

◆ get_node_pressure_tensor()

template<typename FloatType , lbmpy::Arch Architecture>
std::optional< Utils::VectorXd< 9 > > walberla::LBWalberlaImpl< FloatType, Architecture >::get_node_pressure_tensor ( Utils::Vector3i const &  node) const
overridevirtual

◆ get_node_velocity()

template<typename FloatType , lbmpy::Arch Architecture>
std::optional< Utils::Vector3d > walberla::LBWalberlaImpl< FloatType, Architecture >::get_node_velocity ( Utils::Vector3i const &  node,
bool  consider_ghosts = false 
) const
overridevirtual

◆ get_node_velocity_at_boundary()

template<typename FloatType , lbmpy::Arch Architecture>
std::optional< Utils::Vector3d > walberla::LBWalberlaImpl< FloatType, Architecture >::get_node_velocity_at_boundary ( Utils::Vector3i const &  node,
bool  consider_ghosts = false 
) const
overridevirtual

Implements LBWalberlaBase.

Definition at line 37 of file LBBoundaryAccess.impl.hpp.

References walberla::get_block_and_cell(), and walberla::to_vector3d().

◆ get_pressure_tensor()

◆ get_rng_state()

template<typename FloatType , lbmpy::Arch Architecture>
std::optional< uint64_t > walberla::LBWalberlaImpl< FloatType, Architecture >::get_rng_state ( ) const
inlineoverridevirtual

◆ get_seed()

template<typename FloatType , lbmpy::Arch Architecture>
unsigned int walberla::LBWalberlaImpl< FloatType, Architecture >::get_seed ( ) const
inlineoverridevirtualnoexcept

◆ get_slice_density()

template<typename FloatType , lbmpy::Arch Architecture>
std::vector< double > walberla::LBWalberlaImpl< FloatType, Architecture >::get_slice_density ( Utils::Vector3i const &  lower_corner,
Utils::Vector3i const &  upper_corner 
) const
overridevirtual

◆ get_slice_is_boundary()

template<typename FloatType , lbmpy::Arch Architecture>
std::vector< bool > walberla::LBWalberlaImpl< FloatType, Architecture >::get_slice_is_boundary ( Utils::Vector3i const &  lower_corner,
Utils::Vector3i const &  upper_corner 
) const
overridevirtual

◆ get_slice_last_applied_force()

template<typename FloatType , lbmpy::Arch Architecture>
std::vector< double > walberla::LBWalberlaImpl< FloatType, Architecture >::get_slice_last_applied_force ( Utils::Vector3i const &  lower_corner,
Utils::Vector3i const &  upper_corner 
) const
overridevirtual

◆ get_slice_population()

template<typename FloatType , lbmpy::Arch Architecture>
std::vector< double > walberla::LBWalberlaImpl< FloatType, Architecture >::get_slice_population ( Utils::Vector3i const &  lower_corner,
Utils::Vector3i const &  upper_corner 
) const
overridevirtual

◆ get_slice_pressure_tensor()

template<typename FloatType , lbmpy::Arch Architecture>
std::vector< double > walberla::LBWalberlaImpl< FloatType, Architecture >::get_slice_pressure_tensor ( Utils::Vector3i const &  lower_corner,
Utils::Vector3i const &  upper_corner 
) const
overridevirtual

◆ get_slice_velocity()

template<typename FloatType , lbmpy::Arch Architecture>
std::vector< double > walberla::LBWalberlaImpl< FloatType, Architecture >::get_slice_velocity ( Utils::Vector3i const &  lower_corner,
Utils::Vector3i const &  upper_corner 
) const
overridevirtual

◆ get_slice_velocity_at_boundary()

template<typename FloatType , lbmpy::Arch Architecture>
std::vector< std::optional< Utils::Vector3d > > walberla::LBWalberlaImpl< FloatType, Architecture >::get_slice_velocity_at_boundary ( Utils::Vector3i const &  lower_corner,
Utils::Vector3i const &  upper_corner 
) const
overridevirtual

◆ get_velocities_at_pos()

template<typename FloatType , lbmpy::Arch Architecture>
std::vector< Utils::Vector3d > walberla::LBWalberlaImpl< FloatType, Architecture >::get_velocities_at_pos ( std::vector< Utils::Vector3d > const &  pos)
overridevirtual

Interpolate velocities at given positions (batch version).

On GPU, boundary slip velocities are written into the velocity field before interpolation, since the field has indeterminate values inside boundary regions.

Implements LBWalberlaBase.

Definition at line 229 of file LBInterpolation.impl.hpp.

References block(), lbmpy::CPU, walberla::lbm::accessor::Interpolation::get_vel(), lbmpy::GPU, and walberla::lbm::accessor::Vector::set_from_list().

◆ get_velocity_at_pos()

template<typename FloatType , lbmpy::Arch Architecture>
std::optional< Utils::Vector3d > walberla::LBWalberlaImpl< FloatType, Architecture >::get_velocity_at_pos ( Utils::Vector3d const &  pos,
bool  consider_points_in_halo = false 
) const
overridevirtual

Implements LBWalberlaBase.

Definition at line 319 of file LBInterpolation.impl.hpp.

◆ get_velocity_field_id()

template<typename FloatType , lbmpy::Arch Architecture>
std::size_t walberla::LBWalberlaImpl< FloatType, Architecture >::get_velocity_field_id ( ) const
inlineoverridevirtualnoexcept

◆ get_viscosity()

template<typename FloatType , lbmpy::Arch Architecture>
double walberla::LBWalberlaImpl< FloatType, Architecture >::get_viscosity ( ) const
inlineoverridevirtualnoexcept

◆ ghost_communication()

◆ ghost_communication_boundary()

◆ ghost_communication_full()

◆ ghost_communication_laf()

◆ ghost_communication_pdf()

◆ ghost_communication_vel()

◆ integrate()

template<typename FloatType , lbmpy::Arch Architecture>
void walberla::LBWalberlaImpl< FloatType, Architecture >::integrate ( )
inlineoverridevirtual

◆ integrate_vtk_writers()

template<typename FloatType , lbmpy::Arch Architecture>
void walberla::LBWalberlaImpl< FloatType, Architecture >::integrate_vtk_writers ( )
inlineoverrideprotectedvirtual

◆ is_double_precision()

template<typename FloatType , lbmpy::Arch Architecture>
bool walberla::LBWalberlaImpl< FloatType, Architecture >::is_double_precision ( ) const
inlineoverridevirtualnoexcept

Implements LBWalberlaBase.

Definition at line 240 of file LBWalberlaImpl.hpp.

◆ is_gpu()

template<typename FloatType , lbmpy::Arch Architecture>
bool walberla::LBWalberlaImpl< FloatType, Architecture >::is_gpu ( ) const
inlineoverridevirtualnoexcept

Implements LBWalberlaBase.

Definition at line 244 of file LBWalberlaImpl.hpp.

References lbmpy::GPU.

◆ make_lattice_position_checker()

template<typename FloatType , lbmpy::Arch Architecture>
std::function< bool(Utils::Vector3d const &)> walberla::LBWalberlaImpl< FloatType, Architecture >::make_lattice_position_checker ( bool  consider_points_in_halo) const
overridevirtual

Implements LBWalberlaBase.

Definition at line 69 of file LBInterpolation.impl.hpp.

◆ on_boundary_add()

template<typename FloatType , lbmpy::Arch Architecture>
void walberla::LBWalberlaImpl< FloatType, Architecture >::on_boundary_add ( )

Lazily enable boundary mode on first boundary addition.

Switches the streaming communicator to the generic pack info, which correctly handles boundary-adjacent cells.

Definition at line 191 of file LBBoundaryAccess.impl.hpp.

◆ pressure_tensor_correction() [1/2]

template<typename FloatType , lbmpy::Arch Architecture>
void walberla::LBWalberlaImpl< FloatType, Architecture >::pressure_tensor_correction ( Matrix3< FloatType > &  tensor) const
inline

◆ pressure_tensor_correction() [2/2]

template<typename FloatType , lbmpy::Arch Architecture>
void walberla::LBWalberlaImpl< FloatType, Architecture >::pressure_tensor_correction ( std::span< FloatType, 9ul >  tensor) const
inline

◆ pressure_tensor_correction_factor()

template<typename FloatType , lbmpy::Arch Architecture>
FloatType walberla::LBWalberlaImpl< FloatType, Architecture >::pressure_tensor_correction_factor ( ) const
inline

Correction factor for off-diagonal pressure tensor elements.

Compensates for the viscosity-dependent error in the non-equilibrium stress: factor = nu / (nu + 1/6).

Definition at line 787 of file LBWalberlaImpl.hpp.

References walberla::LBWalberlaImpl< FloatType, Architecture >::m_viscosity.

Referenced by walberla::LBWalberlaImpl< FloatType, Architecture >::pressure_tensor_correction(), and walberla::LBWalberlaImpl< FloatType, Architecture >::pressure_tensor_correction().

◆ reallocate_ubb_field()

template<typename FloatType , lbmpy::Arch Architecture>
void walberla::LBWalberlaImpl< FloatType, Architecture >::reallocate_ubb_field ( )
overridevirtual

Implements LBWalberlaBase.

Definition at line 181 of file LBBoundaryAccess.impl.hpp.

◆ register_vtk_field_filters()

template<typename FloatType , lbmpy::Arch Architecture>
void walberla::LBWalberlaImpl< FloatType, Architecture >::register_vtk_field_filters ( walberla::vtk::VTKOutput &  vtk_obj)
inlineoverridevirtual

◆ register_vtk_field_writers()

template<typename FloatType , lbmpy::Arch Architecture>
void walberla::LBWalberlaImpl< FloatType, Architecture >::register_vtk_field_writers ( walberla::vtk::VTKOutput &  vtk_obj,
LatticeModel::units_map const &  units,
int  flag_observables 
)
overridevirtual

Implements LatticeModel.

Definition at line 126 of file LBVTK.impl.hpp.

References density, lbmpy::GPU, pressure_tensor, and velocity_vector.

◆ remove_node_from_boundary()

template<typename FloatType , lbmpy::Arch Architecture>
bool walberla::LBWalberlaImpl< FloatType, Architecture >::remove_node_from_boundary ( Utils::Vector3i const &  node)
overridevirtual

Implements LBWalberlaBase.

Definition at line 133 of file LBBoundaryAccess.impl.hpp.

References walberla::get_block_and_cell().

◆ reset_boundary_handling()

◆ set_collision_model() [1/2]

template<typename FloatType , lbmpy::Arch Architecture>
void walberla::LBWalberlaImpl< FloatType, Architecture >::set_collision_model ( double  kT,
unsigned int  seed 
)
overridevirtual

Set up the thermalized collision model.

Configures MRT relaxation rates from the viscosity and initializes the random number generator for fluctuating LB. When kT is zero, fluctuations are suppressed but the thermalized kernel is still used (required for RNG state tracking).

Implements LBWalberlaBase.

Definition at line 56 of file LBCollisionSetup.impl.hpp.

◆ set_collision_model() [2/2]

template<typename FloatType , lbmpy::Arch Architecture>
void walberla::LBWalberlaImpl< FloatType, Architecture >::set_collision_model ( std::unique_ptr< LeesEdwardsPack > &&  lees_edwards_pack)
overridevirtual

Set up the Lees-Edwards collision model.

Configures a modified collision step that applies the shear velocity at the Lees-Edwards boundary planes, and sets up the interpolation sweeps for PDFs, velocities, and forces at those boundaries. Currently restricted to shear_plane_normal="y" and no domain decomposition along the shear direction.

Implements LBWalberlaBase.

Definition at line 80 of file LBCollisionSetup.impl.hpp.

References lbmpy::GPU.

◆ set_external_force()

template<typename FloatType , lbmpy::Arch Architecture>
void walberla::LBWalberlaImpl< FloatType, Architecture >::set_external_force ( Utils::Vector3d const &  ext_force)
inlineoverridevirtual

◆ set_node_density()

template<typename FloatType , lbmpy::Arch Architecture>
bool walberla::LBWalberlaImpl< FloatType, Architecture >::set_node_density ( Utils::Vector3i const &  node,
double  density 
)
overridevirtual

◆ set_node_last_applied_force()

template<typename FloatType , lbmpy::Arch Architecture>
bool walberla::LBWalberlaImpl< FloatType, Architecture >::set_node_last_applied_force ( Utils::Vector3i const &  node,
Utils::Vector3d const &  force 
)
overridevirtual

◆ set_node_population()

template<typename FloatType , lbmpy::Arch Architecture>
bool walberla::LBWalberlaImpl< FloatType, Architecture >::set_node_population ( Utils::Vector3i const &  node,
std::vector< double > const &  population 
)
overridevirtual

◆ set_node_velocity()

template<typename FloatType , lbmpy::Arch Architecture>
bool walberla::LBWalberlaImpl< FloatType, Architecture >::set_node_velocity ( Utils::Vector3i const &  node,
Utils::Vector3d const &  v 
)
overridevirtual

◆ set_node_velocity_at_boundary()

template<typename FloatType , lbmpy::Arch Architecture>
bool walberla::LBWalberlaImpl< FloatType, Architecture >::set_node_velocity_at_boundary ( Utils::Vector3i const &  node,
Utils::Vector3d const &  velocity 
)
overridevirtual

Implements LBWalberlaBase.

Definition at line 48 of file LBBoundaryAccess.impl.hpp.

References walberla::get_block_and_cell(), and velocity().

◆ set_rng_state()

template<typename FloatType , lbmpy::Arch Architecture>
void walberla::LBWalberlaImpl< FloatType, Architecture >::set_rng_state ( uint64_t  counter)
inlineoverridevirtual

◆ set_slice_density()

template<typename FloatType , lbmpy::Arch Architecture>
void walberla::LBWalberlaImpl< FloatType, Architecture >::set_slice_density ( Utils::Vector3i const &  lower_corner,
Utils::Vector3i const &  upper_corner,
std::vector< double > const &  density 
)
overridevirtual

◆ set_slice_last_applied_force()

template<typename FloatType , lbmpy::Arch Architecture>
void walberla::LBWalberlaImpl< FloatType, Architecture >::set_slice_last_applied_force ( Utils::Vector3i const &  lower_corner,
Utils::Vector3i const &  upper_corner,
std::vector< double > const &  force 
)
overridevirtual

◆ set_slice_population()

template<typename FloatType , lbmpy::Arch Architecture>
void walberla::LBWalberlaImpl< FloatType, Architecture >::set_slice_population ( Utils::Vector3i const &  lower_corner,
Utils::Vector3i const &  upper_corner,
std::vector< double > const &  population 
)
overridevirtual

◆ set_slice_velocity()

template<typename FloatType , lbmpy::Arch Architecture>
void walberla::LBWalberlaImpl< FloatType, Architecture >::set_slice_velocity ( Utils::Vector3i const &  lower_corner,
Utils::Vector3i const &  upper_corner,
std::vector< double > const &  velocity 
)
overridevirtual

◆ set_slice_velocity_at_boundary()

template<typename FloatType , lbmpy::Arch Architecture>
void walberla::LBWalberlaImpl< FloatType, Architecture >::set_slice_velocity_at_boundary ( Utils::Vector3i const &  lower_corner,
Utils::Vector3i const &  upper_corner,
std::vector< std::optional< Utils::Vector3d > > const &  velocity 
)
overridevirtual

◆ set_viscosity()

template<typename FloatType , lbmpy::Arch Architecture>
void walberla::LBWalberlaImpl< FloatType, Architecture >::set_viscosity ( double  viscosity)
inlineoverridevirtual

◆ setup_full_communicator()

◆ setup_streaming_communicator()

template<typename FloatType , lbmpy::Arch Architecture>
void walberla::LBWalberlaImpl< FloatType, Architecture >::setup_streaming_communicator ( )
inlineprotected

◆ stencil_size()

template<typename FloatType , lbmpy::Arch Architecture>
std::size_t walberla::LBWalberlaImpl< FloatType, Architecture >::stencil_size ( ) const
inlineoverridevirtualnoexcept

Implements LBWalberlaBase.

Definition at line 236 of file LBWalberlaImpl.hpp.

◆ update_boundary_from_shape()

template<typename FloatType , lbmpy::Arch Architecture>
void walberla::LBWalberlaImpl< FloatType, Architecture >::update_boundary_from_shape ( std::vector< int > const &  raster_flat,
std::vector< double > const &  data_flat 
)
overridevirtual

Set boundary conditions from a rasterized shape.

Parameters
raster_flatFlattened 3D mask (non-zero = boundary node).
data_flatFlattened 3D array of slip velocities (3 components per node, same ordering as raster_flat).

Implements LBWalberlaBase.

Definition at line 215 of file LBBoundaryAccess.impl.hpp.

References walberla::fill_3D_vector_array(), and walberla::set_boundary_from_grid().

◆ zero_centered_to_lb()

template<typename FloatType , lbmpy::Arch Architecture>
auto walberla::LBWalberlaImpl< FloatType, Architecture >::zero_centered_to_lb ( auto const &  data) const
inlineprotected

◆ zero_centered_to_lb_in_place()

template<typename FloatType , lbmpy::Arch Architecture>
void walberla::LBWalberlaImpl< FloatType, Architecture >::zero_centered_to_lb_in_place ( auto &  data) const
inlineprotected

◆ zero_centered_to_md()

template<typename FloatType , lbmpy::Arch Architecture>
auto walberla::LBWalberlaImpl< FloatType, Architecture >::zero_centered_to_md ( auto const &  data) const
inlineprotected

◆ zero_centered_to_md_in_place()

template<typename FloatType , lbmpy::Arch Architecture>
void walberla::LBWalberlaImpl< FloatType, Architecture >::zero_centered_to_md_in_place ( auto &  data) const
inlineprotected

◆ zero_centered_transform_impl()

template<typename FloatType , lbmpy::Arch Architecture>
template<typename T >
void walberla::LBWalberlaImpl< FloatType, Architecture >::zero_centered_transform_impl ( T &  data,
auto const  factor 
) const
inlineprotected

Scale data by a conversion factor (in-place).

Used for zero-centered density representation: LB internally stores density fluctuations around zero, while the user interface uses absolute densities. The conversion factors m_zc_to_md and m_zc_to_lb translate between these representations.

Definition at line 814 of file LBWalberlaImpl.hpp.

Referenced by walberla::LBWalberlaImpl< FloatType, Architecture >::zero_centered_to_lb_in_place(), and walberla::LBWalberlaImpl< FloatType, Architecture >::zero_centered_to_md_in_place().

Member Data Documentation

◆ Boundary_flag

template<typename FloatType , lbmpy::Arch Architecture>
FlagUID const walberla::LBWalberlaImpl< FloatType, Architecture >::Boundary_flag {"boundary"}
protected

Flag for boundary cells.

Definition at line 192 of file LBWalberlaImpl.hpp.

Referenced by walberla::LBWalberlaImpl< FloatType, Architecture >::register_vtk_field_filters().

◆ m_boundary

template<typename FloatType , lbmpy::Arch Architecture>
std::shared_ptr<BoundaryModel> walberla::LBWalberlaImpl< FloatType, Architecture >::m_boundary
protected

◆ m_boundary_communicator

template<typename FloatType , lbmpy::Arch Architecture>
std::shared_ptr<BoundaryFullCommunicator> walberla::LBWalberlaImpl< FloatType, Architecture >::m_boundary_communicator
protected

◆ m_collision_model

◆ m_density

template<typename FloatType , lbmpy::Arch Architecture>
FloatType walberla::LBWalberlaImpl< FloatType, Architecture >::m_density
protected

◆ m_flag_field_id

◆ m_force_to_be_applied_id

template<typename FloatType , lbmpy::Arch Architecture>
BlockDataID walberla::LBWalberlaImpl< FloatType, Architecture >::m_force_to_be_applied_id
protected

◆ m_full_communicator

template<typename FloatType , lbmpy::Arch Architecture>
std::shared_ptr<RegularFullCommunicator> walberla::LBWalberlaImpl< FloatType, Architecture >::m_full_communicator
protected

◆ m_has_boundaries

template<typename FloatType , lbmpy::Arch Architecture>
bool walberla::LBWalberlaImpl< FloatType, Architecture >::m_has_boundaries {false}
protected

◆ m_kT

◆ m_laf_communicator

template<typename FloatType , lbmpy::Arch Architecture>
std::shared_ptr<RegularFullCommunicator> walberla::LBWalberlaImpl< FloatType, Architecture >::m_laf_communicator
protected

◆ m_last_applied_force_field_id

◆ m_lattice

◆ m_lees_edwards_callbacks

template<typename FloatType , lbmpy::Arch Architecture>
std::shared_ptr<LeesEdwardsPack> walberla::LBWalberlaImpl< FloatType, Architecture >::m_lees_edwards_callbacks
protected

Definition at line 219 of file LBWalberlaImpl.hpp.

◆ m_lees_edwards_last_applied_force_interpol_sweep

template<typename FloatType , lbmpy::Arch Architecture>
std::shared_ptr<InterpolateAndShiftAtBoundary<_VectorField, FloatType> > walberla::LBWalberlaImpl< FloatType, Architecture >::m_lees_edwards_last_applied_force_interpol_sweep
protected

Definition at line 225 of file LBWalberlaImpl.hpp.

◆ m_lees_edwards_pdf_interpol_sweep

template<typename FloatType , lbmpy::Arch Architecture>
std::shared_ptr<InterpolateAndShiftAtBoundary<_PdfField, FloatType> > walberla::LBWalberlaImpl< FloatType, Architecture >::m_lees_edwards_pdf_interpol_sweep
protected

Definition at line 221 of file LBWalberlaImpl.hpp.

◆ m_lees_edwards_vel_interpol_sweep

template<typename FloatType , lbmpy::Arch Architecture>
std::shared_ptr<InterpolateAndShiftAtBoundary<_VectorField, FloatType> > walberla::LBWalberlaImpl< FloatType, Architecture >::m_lees_edwards_vel_interpol_sweep
protected

Definition at line 223 of file LBWalberlaImpl.hpp.

◆ m_mpi_cart_comm_observer

◆ m_pdf_communicator

template<typename FloatType , lbmpy::Arch Architecture>
std::shared_ptr<RegularFullCommunicator> walberla::LBWalberlaImpl< FloatType, Architecture >::m_pdf_communicator
protected

◆ m_pdf_field_id

◆ m_pdf_streaming_communicator

template<typename FloatType , lbmpy::Arch Architecture>
std::shared_ptr<PDFStreamingCommunicator> walberla::LBWalberlaImpl< FloatType, Architecture >::m_pdf_streaming_communicator
protected

◆ m_pdf_tmp_field_id

template<typename FloatType , lbmpy::Arch Architecture>
BlockDataID walberla::LBWalberlaImpl< FloatType, Architecture >::m_pdf_tmp_field_id
protected

◆ m_pending_ghost_comm

◆ m_reset_force

◆ m_seed

template<typename FloatType , lbmpy::Arch Architecture>
unsigned int walberla::LBWalberlaImpl< FloatType, Architecture >::m_seed
protected

◆ m_update_velocities_from_pdf

template<typename FloatType , lbmpy::Arch Architecture>
std::shared_ptr<typename Kernels::UpdateVelFromPDF> walberla::LBWalberlaImpl< FloatType, Architecture >::m_update_velocities_from_pdf
protected

◆ m_vel_communicator

template<typename FloatType , lbmpy::Arch Architecture>
std::shared_ptr<RegularFullCommunicator> walberla::LBWalberlaImpl< FloatType, Architecture >::m_vel_communicator
protected

◆ m_vel_tmp_field_id

template<typename FloatType , lbmpy::Arch Architecture>
BlockDataID walberla::LBWalberlaImpl< FloatType, Architecture >::m_vel_tmp_field_id
protected

◆ m_velocity_field_id

◆ m_viscosity

◆ m_zc_to_lb

template<typename FloatType , lbmpy::Arch Architecture>
double walberla::LBWalberlaImpl< FloatType, Architecture >::m_zc_to_lb
protected

◆ m_zc_to_md

template<typename FloatType , lbmpy::Arch Architecture>
double walberla::LBWalberlaImpl< FloatType, Architecture >::m_zc_to_md
protected

The documentation for this class was generated from the following files: