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

class  DensityVTKWriter
 
struct  FieldTrait
 
struct  GhostComm
 
class  PressureTensorVTKWriter
 
class  VelocityVTKWriter
 
class  VTKWriter
 

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, Architecture >::PdfField
 
using VectorField = FieldTrait< FloatType, 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
 
 LBWalberlaImpl (std::shared_ptr< LatticeWalberla > lattice, double viscosity, double density)
 
void integrate () override
 
void ghost_communication () override
 
void ghost_communication_pdf () override
 
void ghost_communication_vel () override
 
void ghost_communication_laf () override
 
void ghost_communication_boundary ()
 
void ghost_communication_full ()
 
void apply_lees_edwards_interpolation ()
 
void set_collision_model (double kT, unsigned int seed) override
 
void set_collision_model (std::unique_ptr< LeesEdwardsPack > &&lees_edwards_pack) override
 
void check_lebc (unsigned int shear_direction, unsigned int shear_plane_normal) const override
 
void set_viscosity (double viscosity) override
 
double get_viscosity () const noexcept override
 
double get_density () const noexcept override
 
template<typename T >
void zero_centered_transform_impl (T &data, auto const factor) const
 
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
 
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
 
bool is_gpu () const noexcept override
 
std::function< bool(Utils::Vector3d const &)> make_lattice_position_checker (bool consider_points_in_halo) const override
 
void add_forces_at_pos (std::vector< Utils::Vector3d > const &pos, std::vector< Utils::Vector3d > const &forces) override
 
auto make_force_interpolation_kernel () const
 
auto make_velocity_interpolation_kernel () const
 
auto make_density_interpolation_kernel () const
 
std::vector< Utils::Vector3dget_velocities_at_pos (std::vector< Utils::Vector3d > const &pos) override
 
std::vector< double > get_densities_at_pos (std::vector< Utils::Vector3d > const &pos) override
 
std::optional< Utils::Vector3dget_velocity_at_pos (Utils::Vector3d const &pos, bool consider_points_in_halo=false) const override
 
std::optional< double > get_density_at_pos (Utils::Vector3d const &pos, bool consider_points_in_halo=false) const override
 
bool add_force_at_pos (Utils::Vector3d const &pos, Utils::Vector3d const &force) 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< 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< 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< 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
 
void reallocate_ubb_field () override
 
void on_boundary_add ()
 
void clear_boundaries () override
 
void update_boundary_from_shape (std::vector< int > const &raster_flat, std::vector< double > const &data_flat) 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
 
Utils::Vector3i flat_index_to_node (int index) const
 
Utils::Vector3i get_neighbor_node (Utils::Vector3i const &node, int dir) const
 
Utils::Vector3d get_boundary_force_from_shape (std::vector< int > const &raster_flat) const override
 
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
 
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
 
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
 
 ~LBWalberlaImpl () override=default
 
- 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 StreamCollisionModelLeesEdwards = detail::KernelTrait< FloatType, Architecture >::StreamCollisionModelLeesEdwards
 
using StreamCollisionModelThermalized = detail::KernelTrait< FloatType, Architecture >::StreamCollisionModelThermalized
 
using UpdateVelFromPDF = detail::KernelTrait< FloatType, Architecture >::UpdateVelFromPDF
 
using InitialPDFsSetter = detail::KernelTrait< FloatType, Architecture >::InitialPDFsSetter
 
using DynamicUBB = detail::BoundaryHandlingTrait< FloatType, Architecture >::DynamicUBB
 
using BoundaryModel = BoundaryHandling< FloatType, Vector3< FloatType >, DynamicUBB >
 
using CollisionModel = std::variant< StreamCollisionModelThermalized, StreamCollisionModelLeesEdwards >
 
using _PdfField = FieldTrait< FloatType >::PdfField
 
using _VectorField = FieldTrait< FloatType >::VectorField
 
using RegularFullCommunicator = FieldTrait< FloatType, Architecture >::template RegularCommScheme< stencil::D3Q27 >
 Full communicator.
 
using BoundaryFullCommunicator = FieldTrait< FloatType, Architecture >::template BoundaryCommScheme< stencil::D3Q27 >
 
using PDFStreamingCommunicator = FieldTrait< FloatType, Architecture >::template RegularCommScheme< Stencil >
 Regular communicator.
 
template<class Field >
using PackInfo = FieldTrait< FloatType, Architecture >::template PackInfo< Field >
 

Protected Member Functions

template<typename Field >
auto add_to_storage (std::string const tag)
 Convenience function to add a field with a custom allocator.
 
void setup_streaming_communicator ()
 
void integrate_vtk_writers () override
 

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
 
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< 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
 
std::shared_ptr< ResetForce< PdfField, VectorField > > m_reset_force
 
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
 
std::shared_ptr< CollisionModelm_collision_model
 
std::shared_ptr< UpdateVelFromPDFm_update_velocities_from_pdf
 
std::shared_ptr< BoundaryModelm_boundary
 
std::shared_ptr< LatticeWalberlam_lattice
 
- 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 91 of file LBWalberlaImpl.hpp.

Member Typedef Documentation

◆ _PdfField

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

Definition at line 165 of file LBWalberlaImpl.hpp.

◆ _VectorField

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

Definition at line 166 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 116 of file LBWalberlaImpl.hpp.

◆ BoundaryFullCommunicator

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

Definition at line 326 of file LBWalberlaImpl.hpp.

◆ BoundaryModel

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

Definition at line 105 of file LBWalberlaImpl.hpp.

◆ CollisionModel

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

Definition at line 107 of file LBWalberlaImpl.hpp.

◆ DynamicUBB

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

Definition at line 103 of file LBWalberlaImpl.hpp.

◆ FlagField

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

Definition at line 171 of file LBWalberlaImpl.hpp.

◆ InitialPDFsSetter

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

Definition at line 101 of file LBWalberlaImpl.hpp.

◆ PackInfo

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

Definition at line 336 of file LBWalberlaImpl.hpp.

◆ PdfField

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

Definition at line 169 of file LBWalberlaImpl.hpp.

◆ PDFStreamingCommunicator

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

Regular communicator.

We use the same directions as the stencil during integration.

Definition at line 333 of file LBWalberlaImpl.hpp.

◆ RegularFullCommunicator

template<typename FloatType , lbmpy::Arch Architecture>
using walberla::LBWalberlaImpl< FloatType, Architecture >::RegularFullCommunicator = FieldTrait<FloatType, 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 323 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 112 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 114 of file LBWalberlaImpl.hpp.

◆ StreamCollisionModelLeesEdwards

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

Definition at line 93 of file LBWalberlaImpl.hpp.

◆ StreamCollisionModelThermalized

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

Definition at line 96 of file LBWalberlaImpl.hpp.

◆ UpdateVelFromPDF

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

Definition at line 99 of file LBWalberlaImpl.hpp.

◆ VectorField

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

Definition at line 170 of file LBWalberlaImpl.hpp.

Constructor & Destructor Documentation

◆ LBWalberlaImpl()

template<typename FloatType , lbmpy::Arch Architecture>
walberla::LBWalberlaImpl< FloatType, Architecture >::LBWalberlaImpl ( std::shared_ptr< LatticeWalberla lattice,
double  viscosity,
double  density 
)
inline

Definition at line 447 of file LBWalberlaImpl.hpp.

References block(), walberla::LBWalberlaImpl< FloatType, Architecture >::m_boundary, walberla::LBWalberlaImpl< FloatType, Architecture >::m_boundary_communicator, walberla::LBWalberlaImpl< FloatType, Architecture >::m_flag_field_id, walberla::LBWalberlaImpl< FloatType, Architecture >::m_force_to_be_applied_id, walberla::LBWalberlaImpl< FloatType, Architecture >::m_full_communicator, walberla::LBWalberlaImpl< FloatType, Architecture >::m_laf_communicator, walberla::LBWalberlaImpl< FloatType, Architecture >::m_last_applied_force_field_id, walberla::LBWalberlaImpl< FloatType, Architecture >::m_lattice, walberla::LBWalberlaImpl< FloatType, Architecture >::m_pdf_communicator, walberla::LBWalberlaImpl< FloatType, Architecture >::m_pdf_field_id, walberla::LBWalberlaImpl< FloatType, Architecture >::m_pdf_tmp_field_id, walberla::LBWalberlaImpl< FloatType, Architecture >::m_pending_ghost_comm, walberla::LBWalberlaImpl< FloatType, Architecture >::m_reset_force, walberla::LBWalberlaImpl< FloatType, Architecture >::m_update_velocities_from_pdf, walberla::LBWalberlaImpl< FloatType, Architecture >::m_vel_communicator, walberla::LBWalberlaImpl< FloatType, Architecture >::m_vel_tmp_field_id, walberla::LBWalberlaImpl< FloatType, Architecture >::m_velocity_field_id, walberla::field::communication::BoundaryPackInfo< GhostLayerField_T, Boundary_T >::setup_boundary_handle(), and walberla::LBWalberlaImpl< FloatType, Architecture >::setup_streaming_communicator().

◆ ~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 
)
inlineoverridevirtual

◆ add_forces_at_pos()

◆ 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 387 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
inlineoverridevirtual

◆ clear_boundaries()

◆ flat_index_to_node()

template<typename FloatType , lbmpy::Arch Architecture>
Utils::Vector3i walberla::LBWalberlaImpl< FloatType, Architecture >::flat_index_to_node ( int  index) const
inline

◆ FloatType_c()

◆ get_boundary_force()

◆ get_boundary_force_from_shape()

◆ get_densities_at_pos()

◆ 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
inlineoverridevirtual

◆ 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()

template<typename FloatType , lbmpy::Arch Architecture>
LatticeWalberla const & walberla::LBWalberlaImpl< FloatType, Architecture >::get_lattice ( ) const
inlineoverridevirtualnoexcept

Implements LatticeModel.

Definition at line 1851 of file LBWalberlaImpl.hpp.

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

Referenced by walberla::LBWalberlaImpl< FloatType, Architecture >::add_forces_at_pos(), walberla::LBWalberlaImpl< FloatType, Architecture >::apply_lees_edwards_interpolation(), walberla::LBWalberlaImpl< FloatType, Architecture >::clear_boundaries(), walberla::LBWalberlaImpl< FloatType, Architecture >::flat_index_to_node(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_boundary_force(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_boundary_force_from_shape(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_densities_at_pos(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_momentum(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_neighbor_node(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_node_boundary_force(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_node_density(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_node_force_to_be_applied(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_node_is_boundary(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_node_last_applied_force(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_node_population(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_node_pressure_tensor(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_node_velocity(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_node_velocity_at_boundary(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_pressure_tensor(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_slice_density(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_slice_is_boundary(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_slice_last_applied_force(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_slice_population(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_slice_pressure_tensor(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_slice_velocity(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_slice_velocity_at_boundary(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_velocities_at_pos(), walberla::LBWalberlaImpl< FloatType, Architecture >::ghost_communication_laf(), walberla::LBWalberlaImpl< FloatType, Architecture >::ghost_communication_pdf(), walberla::LBWalberlaImpl< FloatType, Architecture >::ghost_communication_vel(), walberla::LBWalberlaImpl< FloatType, Architecture >::remove_node_from_boundary(), walberla::LBWalberlaImpl< FloatType, Architecture >::set_collision_model(), walberla::LBWalberlaImpl< FloatType, Architecture >::set_collision_model(), walberla::LBWalberlaImpl< FloatType, Architecture >::set_node_density(), walberla::LBWalberlaImpl< FloatType, Architecture >::set_node_last_applied_force(), walberla::LBWalberlaImpl< FloatType, Architecture >::set_node_population(), walberla::LBWalberlaImpl< FloatType, Architecture >::set_node_velocity(), walberla::LBWalberlaImpl< FloatType, Architecture >::set_node_velocity_at_boundary(), walberla::LBWalberlaImpl< FloatType, Architecture >::set_slice_density(), walberla::LBWalberlaImpl< FloatType, Architecture >::set_slice_last_applied_force(), walberla::LBWalberlaImpl< FloatType, Architecture >::set_slice_population(), walberla::LBWalberlaImpl< FloatType, Architecture >::set_slice_velocity(), walberla::LBWalberlaImpl< FloatType, Architecture >::set_slice_velocity_at_boundary(), and walberla::LBWalberlaImpl< FloatType, Architecture >::update_boundary_from_shape().

◆ get_momentum()

◆ get_neighbor_node()

◆ 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
inlineoverridevirtual

◆ get_node_density()

◆ get_node_force_to_be_applied()

◆ get_node_is_boundary()

◆ get_node_last_applied_force()

◆ get_node_population()

◆ get_node_pressure_tensor()

◆ get_node_velocity()

◆ get_node_velocity_at_boundary()

◆ 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()

◆ 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
inlineoverridevirtual

◆ get_slice_last_applied_force()

◆ get_slice_population()

◆ get_slice_pressure_tensor()

◆ get_slice_velocity()

◆ 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
inlineoverridevirtual

◆ get_velocities_at_pos()

◆ get_velocity_at_pos()

◆ 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 198 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 933 of file LBWalberlaImpl.hpp.

References lbmpy::GPU.

◆ make_density_interpolation_kernel()

◆ make_force_interpolation_kernel()

◆ 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
inlineoverridevirtual

◆ make_velocity_interpolation_kernel()

◆ on_boundary_add()

◆ reallocate_ubb_field()

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

◆ 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()

◆ remove_node_from_boundary()

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

◆ set_collision_model() [1/2]

◆ set_collision_model() [2/2]

◆ 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()

◆ set_node_last_applied_force()

◆ set_node_population()

◆ set_node_velocity()

◆ set_node_velocity_at_boundary()

◆ set_rng_state()

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

◆ set_slice_density()

◆ set_slice_last_applied_force()

◆ set_slice_population()

◆ set_slice_velocity()

◆ set_slice_velocity_at_boundary()

◆ set_viscosity()

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

◆ setup_streaming_communicator()

◆ stencil_size()

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

◆ update_boundary_from_shape()

◆ zero_centered_to_lb()

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

◆ zero_centered_to_lb_in_place()

◆ zero_centered_to_md()

◆ zero_centered_to_md_in_place()

◆ 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
inline

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 314 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

◆ m_flag_field_id

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

◆ m_force_to_be_applied_id

◆ m_full_communicator

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

◆ m_has_boundaries

◆ 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

◆ 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

◆ 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

◆ 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

◆ 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

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

Definition at line 298 of file LBWalberlaImpl.hpp.

Referenced by walberla::LBWalberlaImpl< FloatType, Architecture >::get_densities_at_pos(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_momentum(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_node_density(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_node_population(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_node_pressure_tensor(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_pressure_tensor(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_slice_density(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_slice_population(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_slice_pressure_tensor(), walberla::LBWalberlaImpl< FloatType, Architecture >::LBWalberlaImpl(), walberla::LBWalberlaImpl< FloatType, Architecture >::make_density_interpolation_kernel(), walberla::LBWalberlaImpl< FloatType, Architecture >::register_vtk_field_writers(), walberla::LBWalberlaImpl< FloatType, Architecture >::set_collision_model(), walberla::LBWalberlaImpl< FloatType, Architecture >::set_collision_model(), walberla::LBWalberlaImpl< FloatType, Architecture >::set_node_density(), walberla::LBWalberlaImpl< FloatType, Architecture >::set_node_last_applied_force(), walberla::LBWalberlaImpl< FloatType, Architecture >::set_node_population(), walberla::LBWalberlaImpl< FloatType, Architecture >::set_node_velocity(), walberla::LBWalberlaImpl< FloatType, Architecture >::set_slice_density(), walberla::LBWalberlaImpl< FloatType, Architecture >::set_slice_last_applied_force(), walberla::LBWalberlaImpl< FloatType, Architecture >::set_slice_population(), walberla::LBWalberlaImpl< FloatType, Architecture >::set_slice_velocity(), and walberla::LBWalberlaImpl< FloatType, Architecture >::setup_streaming_communicator().

◆ 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

template<typename FloatType , lbmpy::Arch Architecture>
std::bitset<GhostComm::SIZE> walberla::LBWalberlaImpl< FloatType, Architecture >::m_pending_ghost_comm
protected

Definition at line 346 of file LBWalberlaImpl.hpp.

Referenced by walberla::LBWalberlaImpl< FloatType, Architecture >::clear_boundaries(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_density_at_pos(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_node_density(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_node_is_boundary(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_node_last_applied_force(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_node_population(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_node_velocity(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_node_velocity_at_boundary(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_velocity_at_pos(), walberla::LBWalberlaImpl< FloatType, Architecture >::ghost_communication(), walberla::LBWalberlaImpl< FloatType, Architecture >::ghost_communication_boundary(), walberla::LBWalberlaImpl< FloatType, Architecture >::ghost_communication_full(), walberla::LBWalberlaImpl< FloatType, Architecture >::ghost_communication_laf(), walberla::LBWalberlaImpl< FloatType, Architecture >::ghost_communication_pdf(), walberla::LBWalberlaImpl< FloatType, Architecture >::ghost_communication_vel(), walberla::LBWalberlaImpl< FloatType, Architecture >::LBWalberlaImpl(), walberla::LBWalberlaImpl< FloatType, Architecture >::set_node_density(), walberla::LBWalberlaImpl< FloatType, Architecture >::set_node_last_applied_force(), walberla::LBWalberlaImpl< FloatType, Architecture >::set_node_population(), walberla::LBWalberlaImpl< FloatType, Architecture >::set_node_velocity(), walberla::LBWalberlaImpl< FloatType, Architecture >::set_node_velocity_at_boundary(), walberla::LBWalberlaImpl< FloatType, Architecture >::set_slice_density(), walberla::LBWalberlaImpl< FloatType, Architecture >::set_slice_last_applied_force(), walberla::LBWalberlaImpl< FloatType, Architecture >::set_slice_velocity(), walberla::LBWalberlaImpl< FloatType, Architecture >::set_slice_velocity_at_boundary(), and walberla::LBWalberlaImpl< FloatType, Architecture >::update_boundary_from_shape().

◆ 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<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

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

◆ 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 file: