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 = 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
 
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 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
 
template<typename Kernel >
void copy_block_buffer (CellInterval const &bci, CellInterval const &ci, Utils::Vector3i const &block_offset, Utils::Vector3i const &lower_corner, Kernel &&kernel) const
 Synchronize data between a sliced block and a container.
 
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 >::DynamicUBB >
 
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
 
std::optional< CellInterval > get_block_interval (Utils::Vector3i const &lower_corner, Utils::Vector3i const &upper_corner, Utils::Vector3i const &block_offset, IBlock const &block) 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_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< 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 91 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 169 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 170 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 = typename FieldTrait<FloatType, Architecture>::template BoundaryCommScheme< typename stencil::D3Q27>
protected

Definition at line 330 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>::DynamicUBB>
protected

Definition at line 103 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 107 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 93 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 96 of file LBWalberlaImpl.hpp.

◆ FlagField

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

Definition at line 175 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 101 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 341 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 173 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 337 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 327 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.

◆ StreamSweep

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

Definition at line 99 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 174 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 503 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_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()

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

◆ copy_block_buffer()

template<typename FloatType , lbmpy::Arch Architecture>
template<typename Kernel >
void walberla::LBWalberlaImpl< FloatType, Architecture >::copy_block_buffer ( CellInterval const &  bci,
CellInterval const &  ci,
Utils::Vector3i const &  block_offset,
Utils::Vector3i const &  lower_corner,
Kernel &&  kernel 
) const
inline

Synchronize data between a sliced block and a container.

Synchronize data between two data buffers representing sliced matrices with different memory layouts. The kernel takes as argument an index for the flattened data buffer containing the serialized block slice, an index for the flattened I/O buffer, and a block-local node position.

Parameters
bciCell interval of the local block within a 3D slice
ciCell interval of the entire lattice within a 3D slice
block_offsetOrigin of the local block
lower_cornerLower corner of the 3D slice
kernelFunction to execute on the two data buffers

Definition at line 917 of file LBWalberlaImpl.hpp.

References Utils::get_linear_index(), Utils::ROW_MAJOR, and walberla::to_vector3i().

Referenced by 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 >::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 >::set_slice_velocity_at_boundary().

◆ FloatType_c()

◆ get_block_interval()

◆ 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 1770 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 >::clear_boundaries(), 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_full(), walberla::LBWalberlaImpl< FloatType, Architecture >::ghost_communication_laf(), walberla::LBWalberlaImpl< FloatType, Architecture >::ghost_communication_pdf(), 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()

◆ get_slice_is_boundary()

◆ get_slice_last_applied_force()

◆ get_slice_population()

◆ get_slice_pressure_tensor()

◆ get_slice_velocity()

◆ get_slice_velocity_at_boundary()

◆ 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_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>
bool walberla::LBWalberlaImpl< FloatType, Architecture >::is_double_precision ( ) const
inlineoverridevirtualnoexcept

Implements LBWalberlaBase.

Definition at line 204 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 1022 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 318 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 302 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 351 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_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_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

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