ESPResSo
Extensible Simulation Package for Research on Soft Matter Systems
Loading...
Searching...
No Matches
walberla Namespace Reference

\file PackInfoPdfDoublePrecision.cpp \author pystencils More...

Namespaces

namespace  blockforest
 
namespace  domain_decomposition
 
namespace  ek
 
namespace  field
 
namespace  lbm
 
namespace  pystencils
 
namespace  vtk
 

Classes

struct  BlockAndCell
 
class  BoundaryHandling
 Boundary class optimized for sparse data. More...
 
class  EKinWalberlaImpl
 Class that runs and controls the EK on waLBerla. More...
 
class  EKReactant
 
class  EKReactionBase
 
class  EKReactionBaseIndexed
 
class  EKReactionImplBulk
 
class  EKReactionImplIndexed
 
class  InterpolateAndShiftAtBoundary
 Lees-Edwards sweep. More...
 
class  LBWalberlaImpl
 Class that runs and controls the LB on waLBerla. More...
 
class  PoissonSolver
 
class  PoissonSolverFFT
 
class  PoissonSolverNone
 
class  ResetForce
 Sweep that swaps force_to_be_applied and last_applied_force and resets force_to_be_applied to the global external force. More...
 

Functions

Cell to_cell (signed_integral_vector auto const &xyz)
 
IBlock * get_block_extended (LatticeWalberla const &lattice, auto const &pos, unsigned int n_ghost_layers)
 
std::optional< BlockAndCellget_block_and_cell (::LatticeWalberla const &lattice, signed_integral_vector auto const &node, bool consider_ghost_layers)
 
IBlock * get_block (::LatticeWalberla const &lattice, real_vector auto const &pos, bool consider_ghost_layers)
 
auto convert_cell_corner_to_coord (real_vector auto const &corner)
 Get the block-local coordinates of a block corner.
 
auto get_min_corner (IBlock const &block)
 Get the block-local coordinates of the lower corner of a block.
 
auto get_max_corner (IBlock const &block)
 Get the block-local coordinates of the upper corner of a block.
 
std::optional< walberla::cell::CellInterval > get_interval (::LatticeWalberla const &lattice, Utils::Vector3i const &lower_corner, Utils::Vector3i const &upper_corner)
 
std::optional< walberla::cell::CellInterval > get_block_interval (::LatticeWalberla const &lattice, Utils::Vector3i const &lower_corner, Utils::Vector3i const &upper_corner, Utils::Vector3i const &block_offset, IBlock const &block)
 
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)
 Synchronize data between a sliced block and a container.
 
std::shared_ptr< EKinWalberlaBasenew_ek_walberla_cpu (std::shared_ptr< LatticeWalberla > const &lattice, double diffusion, double kT, double valency, Utils::Vector3d ext_efield, double density, bool advection, bool friction_coupling, bool single_precision, bool thermalized, unsigned int seed)
 
std::shared_ptr< EKinWalberlaBasenew_ek_walberla_gpu (std::shared_ptr< LatticeWalberla > const &lattice, double diffusion, double kT, double valency, Utils::Vector3d ext_efield, double density, bool advection, bool friction_coupling, bool single_precision, bool thermalized, unsigned int seed)
 
std::shared_ptr< EKReactionBasenew_ek_reaction_bulk_cpu (std::shared_ptr< LatticeWalberla > const &lattice, typename EKReactionBase::reactants_type const &reactants, double coefficient)
 
std::shared_ptr< EKReactionBasenew_ek_reaction_bulk_gpu (std::shared_ptr< LatticeWalberla > const &lattice, typename EKReactionBase::reactants_type const &reactants, double coefficient)
 
std::shared_ptr< EKReactionBaseIndexednew_ek_reaction_indexed_cpu (std::shared_ptr< LatticeWalberla > const &lattice, typename EKReactionBase::reactants_type const &reactants, double coefficient)
 
std::shared_ptr< EKReactionBaseIndexednew_ek_reaction_indexed_gpu (std::shared_ptr< LatticeWalberla > const &lattice, typename EKReactionBase::reactants_type const &reactants, double coefficient)
 
std::shared_ptr< walberla::PoissonSolvernew_ek_poisson_none (std::shared_ptr< LatticeWalberla > const &lattice, bool single_precision)
 
std::shared_ptr< walberla::PoissonSolvernew_ek_poisson_fft (std::shared_ptr< LatticeWalberla > const &lattice, double permittivity, bool single_precision)
 
std::shared_ptr< walberla::PoissonSolvernew_ek_poisson_fft_cuda (std::shared_ptr< LatticeWalberla > const &lattice, double permittivity, bool single_precision)
 
void mpi_init ()
 Initialize waLBerla's MPI manager and environment.
 
void mpi_deinit ()
 Release waLBerla's MPI manager and environment.
 
std::unique_ptr< ResourceManagerget_vtk_dependent_resources ()
 Get a lock on waLBerla's global resources for VTK.
 
template<typename FloatType >
FloatType greens_function (int x, int y, int z, auto const &dim)
 
template<typename T , std::size_t N>
auto to_array (Utils::Vector< T, N > const &vec)
 
int pos_to_linear_index (int x, int y, int z, auto const &dim)
 
std::vector< Utils::Vector3dfill_3D_vector_array (std::vector< double > const &vec_flat, Utils::Vector3i const &grid_size)
 
std::vector< double > fill_3D_scalar_array (std::vector< double > const &vec_flat, Utils::Vector3i const &grid_size)
 
template<class BoundaryModel , class DataType >
void set_boundary_from_grid (BoundaryModel &boundary, LatticeWalberla const &lattice, std::vector< int > const &raster_flat, std::vector< DataType > const &data_flat)
 
template<typename T , typename U = T>
es2walberla (T const &v)
 
template<>
Vector3< float > es2walberla (Utils::Vector3d const &v)
 
template<>
Vector3< double > es2walberla (Utils::Vector3d const &v)
 
template<typename T >
auto to_vector3d (Vector3< T > const &v) noexcept
 
Utils::Vector3i to_vector3i (Vector3< int > const &v) noexcept
 
Utils::Vector3i to_vector3i (Cell const &v) noexcept
 
template<typename T >
auto to_vector3 (Utils::Vector3d const &v) noexcept
 
template<typename T >
auto to_vector9d (Matrix3< T > const &m) noexcept
 
template<typename Function >
void interpolate_bspline_at_pos (Utils::Vector3d const &pos, Function const &f)
 

Detailed Description

\file PackInfoPdfDoublePrecision.cpp \author pystencils

\file PackInfoVecSinglePrecisionCUDA.h \author pystencils

\file PackInfoVecSinglePrecision.cpp \author pystencils

\file PackInfoVecDoublePrecisionCUDA.h \author pystencils

\file PackInfoVecDoublePrecision.cpp \author pystencils

\file PackInfoPdfSinglePrecisionCUDA.h \author pystencils

\file PackInfoPdfSinglePrecision.cpp \author pystencils

\file PackInfoPdfDoublePrecisionCUDA.h \author pystencils

Function Documentation

◆ convert_cell_corner_to_coord()

auto walberla::convert_cell_corner_to_coord ( real_vector auto const &  corner)
inline

Get the block-local coordinates of a block corner.

This method leverages the fact that the grid spacing is unity in LB units, i.e. floating-point coordinates can be cast to integers indices.

Definition at line 141 of file BlockAndCell.hpp.

Referenced by LatticeWalberla::get_local_grid_range(), get_max_corner(), and get_min_corner().

◆ copy_block_buffer()

template<typename Kernel >
void walberla::copy_block_buffer ( CellInterval const &  bci,
CellInterval const &  ci,
Utils::Vector3i const &  block_offset,
Utils::Vector3i const &  lower_corner,
Kernel &&  kernel 
)

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 217 of file BlockAndCell.hpp.

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

Referenced by walberla::EKinWalberlaImpl< FluxCount, FloatType, Architecture >::get_slice_density(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_slice_density(), walberla::EKinWalberlaImpl< FluxCount, FloatType, Architecture >::get_slice_flux_vector(), 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::PoissonSolverFFT< FloatType, Architecture >::get_slice_potential(), 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::EKinWalberlaImpl< FluxCount, FloatType, Architecture >::set_slice_density(), 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().

◆ es2walberla() [1/3]

template<typename T , typename U = T>
U walberla::es2walberla ( T const &  v)
inline

Definition at line 34 of file types_conversion.hpp.

◆ es2walberla() [2/3]

template<>
Vector3< float > walberla::es2walberla ( Utils::Vector3d const &  v)
inline

Definition at line 40 of file types_conversion.hpp.

◆ es2walberla() [3/3]

template<>
Vector3< double > walberla::es2walberla ( Utils::Vector3d const &  v)
inline

Definition at line 44 of file types_conversion.hpp.

◆ fill_3D_scalar_array()

std::vector< double > walberla::fill_3D_scalar_array ( std::vector< double > const &  vec_flat,
Utils::Vector3i const &  grid_size 
)
inline

◆ fill_3D_vector_array()

std::vector< Utils::Vector3d > walberla::fill_3D_vector_array ( std::vector< double > const &  vec_flat,
Utils::Vector3i const &  grid_size 
)
inline

◆ get_block()

IBlock * walberla::get_block ( ::LatticeWalberla const &  lattice,
real_vector auto const &  pos,
bool  consider_ghost_layers 
)
inline

◆ get_block_and_cell()

std::optional< BlockAndCell > walberla::get_block_and_cell ( ::LatticeWalberla const &  lattice,
signed_integral_vector auto const &  node,
bool  consider_ghost_layers 
)
inline

Definition at line 102 of file BlockAndCell.hpp.

References block(), get_block_extended(), LatticeWalberla::get_blocks(), LatticeWalberla::get_ghost_layers(), and to_cell().

Referenced by get_interval(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_node_boundary_force(), walberla::EKinWalberlaImpl< FluxCount, FloatType, Architecture >::get_node_density(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_node_density(), walberla::EKinWalberlaImpl< FluxCount, FloatType, Architecture >::get_node_density_at_boundary(), walberla::EKinWalberlaImpl< FluxCount, FloatType, Architecture >::get_node_flux_at_boundary(), walberla::EKinWalberlaImpl< FluxCount, FloatType, Architecture >::get_node_flux_vector(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_node_force_to_be_applied(), walberla::EKReactionImplIndexed< Architecture >::get_node_is_boundary(), walberla::EKinWalberlaImpl< FluxCount, FloatType, Architecture >::get_node_is_boundary(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_node_is_boundary(), walberla::EKinWalberlaImpl< FluxCount, FloatType, Architecture >::get_node_is_density_boundary(), walberla::EKinWalberlaImpl< FluxCount, FloatType, Architecture >::get_node_is_flux_boundary(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_node_last_applied_force(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_node_population(), walberla::PoissonSolverFFT< FloatType, Architecture >::get_node_potential(), 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 >::remove_node_from_boundary(), walberla::EKinWalberlaImpl< FluxCount, FloatType, Architecture >::remove_node_from_density_boundary(), walberla::EKinWalberlaImpl< FluxCount, FloatType, Architecture >::remove_node_from_flux_boundary(), walberla::EKinWalberlaImpl< FluxCount, FloatType, Architecture >::set_node_density(), walberla::LBWalberlaImpl< FloatType, Architecture >::set_node_density(), walberla::EKinWalberlaImpl< FluxCount, FloatType, Architecture >::set_node_density_boundary(), walberla::EKinWalberlaImpl< FluxCount, FloatType, Architecture >::set_node_flux_boundary(), walberla::EKReactionImplIndexed< Architecture >::set_node_is_boundary(), 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::EKinWalberlaImpl< FluxCount, FloatType, Architecture >::set_slice_density_boundary(), walberla::EKinWalberlaImpl< FluxCount, FloatType, Architecture >::set_slice_flux_boundary(), and walberla::LBWalberlaImpl< FloatType, Architecture >::set_slice_velocity_at_boundary().

◆ get_block_extended()

◆ get_block_interval()

std::optional< walberla::cell::CellInterval > walberla::get_block_interval ( ::LatticeWalberla const &  lattice,
Utils::Vector3i const &  lower_corner,
Utils::Vector3i const &  upper_corner,
Utils::Vector3i const &  block_offset,
IBlock const &  block 
)
inline

◆ get_interval()

std::optional< walberla::cell::CellInterval > walberla::get_interval ( ::LatticeWalberla const &  lattice,
Utils::Vector3i const &  lower_corner,
Utils::Vector3i const &  upper_corner 
)
inline

Definition at line 158 of file BlockAndCell.hpp.

References Utils::Vector< T, N >::broadcast(), get_block_and_cell(), get_min_corner(), and to_cell().

Referenced by walberla::EKinWalberlaImpl< FluxCount, FloatType, Architecture >::get_slice_density(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_slice_density(), walberla::EKinWalberlaImpl< FluxCount, FloatType, Architecture >::get_slice_density_at_boundary(), walberla::EKinWalberlaImpl< FluxCount, FloatType, Architecture >::get_slice_flux_at_boundary(), walberla::EKinWalberlaImpl< FluxCount, FloatType, Architecture >::get_slice_flux_vector(), walberla::EKinWalberlaImpl< FluxCount, FloatType, Architecture >::get_slice_is_boundary(), 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::PoissonSolverFFT< FloatType, Architecture >::get_slice_potential(), 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::EKinWalberlaImpl< FluxCount, FloatType, Architecture >::set_slice_density(), walberla::LBWalberlaImpl< FloatType, Architecture >::set_slice_density(), walberla::EKinWalberlaImpl< FluxCount, FloatType, Architecture >::set_slice_density_boundary(), walberla::EKinWalberlaImpl< FluxCount, FloatType, Architecture >::set_slice_flux_boundary(), 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().

◆ get_max_corner()

auto walberla::get_max_corner ( IBlock const &  block)
inline

Get the block-local coordinates of the upper corner of a block.

Definition at line 153 of file BlockAndCell.hpp.

References block(), and convert_cell_corner_to_coord().

Referenced by LatticeWalberla::get_block_corner().

◆ get_min_corner()

auto walberla::get_min_corner ( IBlock const &  block)
inline

Get the block-local coordinates of the lower corner of a block.

Definition at line 148 of file BlockAndCell.hpp.

References block(), and convert_cell_corner_to_coord().

Referenced by LatticeWalberla::get_block_corner(), and get_interval().

◆ get_vtk_dependent_resources()

std::unique_ptr< ResourceManager > walberla::get_vtk_dependent_resources ( )

Get a lock on waLBerla's global resources for VTK.

Definition at line 52 of file walberla_init.cpp.

References walberla_mpi_comm, and walberla_mpi_env.

Referenced by VTKHandle::VTKHandle().

◆ greens_function()

template<typename FloatType >
FloatType walberla::greens_function ( int  x,
int  y,
int  z,
auto const &  dim 
)

Definition at line 35 of file greens_function.hpp.

◆ interpolate_bspline_at_pos()

◆ mpi_deinit()

void walberla::mpi_deinit ( )

Release waLBerla's MPI manager and environment.

Definition at line 45 of file walberla_init.cpp.

References walberla_mpi_comm, and walberla_mpi_env.

Referenced by CommunicationEnvironment::~CommunicationEnvironment().

◆ mpi_init()

void walberla::mpi_init ( )

Initialize waLBerla's MPI manager and environment.

Definition at line 36 of file walberla_init.cpp.

References walberla_mpi_comm, and walberla_mpi_env.

Referenced by CommunicationEnvironment::CommunicationEnvironment().

◆ new_ek_poisson_fft()

std::shared_ptr< walberla::PoissonSolver > walberla::new_ek_poisson_fft ( std::shared_ptr< LatticeWalberla > const &  lattice,
double  permittivity,
bool  single_precision 
)

◆ new_ek_poisson_fft_cuda()

std::shared_ptr< walberla::PoissonSolver > walberla::new_ek_poisson_fft_cuda ( std::shared_ptr< LatticeWalberla > const &  lattice,
double  permittivity,
bool  single_precision 
)

◆ new_ek_poisson_none()

std::shared_ptr< walberla::PoissonSolver > walberla::new_ek_poisson_none ( std::shared_ptr< LatticeWalberla > const &  lattice,
bool  single_precision 
)

◆ new_ek_reaction_bulk_cpu()

std::shared_ptr< EKReactionBase > walberla::new_ek_reaction_bulk_cpu ( std::shared_ptr< LatticeWalberla > const &  lattice,
typename EKReactionBase::reactants_type const &  reactants,
double  coefficient 
)

◆ new_ek_reaction_bulk_gpu()

std::shared_ptr< EKReactionBase > walberla::new_ek_reaction_bulk_gpu ( std::shared_ptr< LatticeWalberla > const &  lattice,
typename EKReactionBase::reactants_type const &  reactants,
double  coefficient 
)

◆ new_ek_reaction_indexed_cpu()

std::shared_ptr< EKReactionBaseIndexed > walberla::new_ek_reaction_indexed_cpu ( std::shared_ptr< LatticeWalberla > const &  lattice,
typename EKReactionBase::reactants_type const &  reactants,
double  coefficient 
)

◆ new_ek_reaction_indexed_gpu()

std::shared_ptr< EKReactionBaseIndexed > walberla::new_ek_reaction_indexed_gpu ( std::shared_ptr< LatticeWalberla > const &  lattice,
typename EKReactionBase::reactants_type const &  reactants,
double  coefficient 
)

◆ new_ek_walberla_cpu()

std::shared_ptr< EKinWalberlaBase > walberla::new_ek_walberla_cpu ( std::shared_ptr< LatticeWalberla > const &  lattice,
double  diffusion,
double  kT,
double  valency,
Utils::Vector3d  ext_efield,
double  density,
bool  advection,
bool  friction_coupling,
bool  single_precision,
bool  thermalized,
unsigned int  seed 
)

Definition at line 36 of file ek_walberla_init.cpp.

References density.

Referenced by ScriptInterface::walberla::EKSpeciesCPU::make_instance().

◆ new_ek_walberla_gpu()

std::shared_ptr< EKinWalberlaBase > walberla::new_ek_walberla_gpu ( std::shared_ptr< LatticeWalberla > const &  lattice,
double  diffusion,
double  kT,
double  valency,
Utils::Vector3d  ext_efield,
double  density,
bool  advection,
bool  friction_coupling,
bool  single_precision,
bool  thermalized,
unsigned int  seed 
)

Definition at line 60 of file ek_walberla_init.cu.

References density.

Referenced by ScriptInterface::walberla::EKSpeciesGPU::make_instance().

◆ pos_to_linear_index()

◆ set_boundary_from_grid()

◆ to_array()

template<typename T , std::size_t N>
auto walberla::to_array ( Utils::Vector< T, N > const &  vec)

◆ to_cell()

◆ to_vector3()

template<typename T >
auto walberla::to_vector3 ( Utils::Vector3d const &  v)
noexcept

Definition at line 63 of file types_conversion.hpp.

◆ to_vector3d()

◆ to_vector3i() [1/2]

Utils::Vector3i walberla::to_vector3i ( Cell const &  v)
inlinenoexcept

Definition at line 58 of file types_conversion.hpp.

◆ to_vector3i() [2/2]

Utils::Vector3i walberla::to_vector3i ( Vector3< int > const &  v)
inlinenoexcept

Definition at line 53 of file types_conversion.hpp.

Referenced by copy_block_buffer().

◆ to_vector9d()

template<typename T >
auto walberla::to_vector9d ( Matrix3< T > const &  m)
noexcept