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 Lattice_T = LatticeWalberla::Lattice_T
 Lattice model (e.g.
 
using PdfField = typename FieldTrait< FloatType, Architecture >::PdfField
 
using VectorField = typename FieldTrait< FloatType, Architecture >::VectorField
 
using FlagField = typename 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
 
virtual 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 ()
 
void ghost_communication_boundary ()
 
void ghost_communication_pdfs ()
 
void ghost_communication_push_scheme ()
 
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
 
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
 
void add_forces_at_pos (std::vector< Utils::Vector3d > const &pos, std::vector< Utils::Vector3d > const &forces) override
 
std::vector< Utils::Vector3dget_velocities_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::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)
 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 CollisionModelLeesEdwards = typename detail::KernelTrait< FloatType, Architecture >::CollisionModelLeesEdwards
 
using CollisionModelThermalized = typename detail::KernelTrait< FloatType, Architecture >::CollisionModelThermalized
 
using StreamSweep = typename detail::KernelTrait< FloatType, Architecture >::StreamSweep
 
using InitialPDFsSetter = typename detail::KernelTrait< FloatType, Architecture >::InitialPDFsSetter
 
using BoundaryModel = BoundaryHandling< Vector3< FloatType >, typename detail::BoundaryHandlingTrait< FloatType, Architecture >::Dynamic_UBB >
 
using CollisionModel = std::variant< CollisionModelThermalized, CollisionModelLeesEdwards >
 
using _PdfField = typename FieldTrait< FloatType >::PdfField
 
using _VectorField = typename FieldTrait< FloatType >::VectorField
 
using RegularFullCommunicator = typename FieldTrait< FloatType, Architecture >::template RegularCommScheme< typename stencil::D3Q27 >
 Full communicator.
 
using BoundaryFullCommunicator = typename FieldTrait< FloatType, Architecture >::template BoundaryCommScheme< typename stencil::D3Q27 >
 
using PDFStreamingCommunicator = typename FieldTrait< FloatType, Architecture >::template RegularCommScheme< Stencil >
 Regular communicator.
 
template<class Field >
using PackInfo = typename FieldTrait< FloatType, Architecture >::template PackInfo< Field >
 

Protected Member Functions

std::optional< CellInterval > get_interval (Utils::Vector3i const &lower_corner, Utils::Vector3i const &upper_corner) const
 
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
 
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_vec_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< StreamSweepm_stream
 
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< 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 89 of file LBWalberlaImpl.hpp.

Member Typedef Documentation

◆ _PdfField

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

Definition at line 167 of file LBWalberlaImpl.hpp.

◆ _VectorField

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

Definition at line 168 of file LBWalberlaImpl.hpp.

◆ BoundaryFullCommunicator

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

Definition at line 320 of file LBWalberlaImpl.hpp.

◆ BoundaryModel

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

Definition at line 101 of file LBWalberlaImpl.hpp.

◆ CollisionModel

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

Definition at line 105 of file LBWalberlaImpl.hpp.

◆ CollisionModelLeesEdwards

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

Definition at line 91 of file LBWalberlaImpl.hpp.

◆ CollisionModelThermalized

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

Definition at line 94 of file LBWalberlaImpl.hpp.

◆ FlagField

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

Definition at line 173 of file LBWalberlaImpl.hpp.

◆ InitialPDFsSetter

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

Definition at line 99 of file LBWalberlaImpl.hpp.

◆ Lattice_T

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

Lattice model (e.g.

blockforest).

Definition at line 114 of file LBWalberlaImpl.hpp.

◆ PackInfo

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

Definition at line 331 of file LBWalberlaImpl.hpp.

◆ PdfField

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

Definition at line 171 of file LBWalberlaImpl.hpp.

◆ PDFStreamingCommunicator

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

Regular communicator.

We use the same directions as the stencil during integration.

Definition at line 327 of file LBWalberlaImpl.hpp.

◆ RegularFullCommunicator

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

◆ StreamSweep

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

Definition at line 97 of file LBWalberlaImpl.hpp.

◆ VectorField

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

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

References walberla::LBWalberlaImpl< FloatType, Architecture >::m_boundary, walberla::LBWalberlaImpl< FloatType, Architecture >::m_boundary_communicator, walberla::LBWalberlaImpl< FloatType, Architecture >::m_density, 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_stream, walberla::LBWalberlaImpl< FloatType, Architecture >::m_vec_tmp_field_id, walberla::LBWalberlaImpl< FloatType, Architecture >::m_vel_communicator, 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()

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

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

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

◆ FloatType_c()

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

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

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

Referenced by walberla::LBWalberlaImpl< FloatType, Architecture >::add_force_at_pos(), walberla::LBWalberlaImpl< FloatType, Architecture >::add_forces_at_pos(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_interval(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_momentum(), 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_pdfs(), walberla::LBWalberlaImpl< FloatType, Architecture >::ghost_communication_push_scheme(), 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_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()

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
inlineoverridevirtual

◆ get_node_is_boundary()

◆ get_node_last_applied_force()

◆ get_node_population()

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

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

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
inlineoverridevirtual

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

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
inlineoverridevirtual

◆ get_slice_population()

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

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

◆ ghost_communication_pdf()

◆ ghost_communication_pdfs()

◆ ghost_communication_push_scheme()

◆ 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>
virtual 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 911 of file LBWalberlaImpl.hpp.

References lbmpy::GPU.

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

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

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

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 308 of file LBWalberlaImpl.hpp.

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

◆ m_boundary

◆ 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

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

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

Referenced by 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 >::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 341 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_laf(), walberla::LBWalberlaImpl< FloatType, Architecture >::ghost_communication_pdf(), walberla::LBWalberlaImpl< FloatType, Architecture >::ghost_communication_pdfs(), walberla::LBWalberlaImpl< FloatType, Architecture >::ghost_communication_push_scheme(), 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_stream

template<typename FloatType , lbmpy::Arch Architecture>
std::shared_ptr<StreamSweep> walberla::LBWalberlaImpl< FloatType, Architecture >::m_stream
protected

◆ m_vec_tmp_field_id

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

◆ m_vel_communicator

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

◆ m_velocity_field_id

◆ m_viscosity

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

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