37template <
typename FloatType, lbmpy::Arch Architecture>
38std::optional<Utils::Vector3d>
43 if (m_has_boundaries) {
45 if (is_boundary
and *is_boundary) {
59template <
typename FloatType, lbmpy::Arch Architecture>
62 m_pending_ghost_comm.set(GhostComm::PDF);
63 m_pending_ghost_comm.set(GhostComm::VEL);
81template <
typename FloatType, lbmpy::Arch Architecture>
96template <
typename FloatType, lbmpy::Arch Architecture>
99 m_pending_ghost_comm.set(GhostComm::PDF);
111template <
typename FloatType, lbmpy::Arch Architecture>
112std::optional<std::vector<double>>
122 std::vector<double>
population(Stencil::Size);
123 for (
uint_t f = 0
u; f < Stencil::Size; ++f) {
130template <
typename FloatType, lbmpy::Arch Architecture>
133 m_pending_ghost_comm.set(GhostComm::PDF);
134 m_pending_ghost_comm.set(GhostComm::VEL);
144 std::array<FloatType, Stencil::Size>
pop;
145 for (
uint_t f = 0
u; f < Stencil::Size; ++f) {
154template <
typename FloatType, lbmpy::Arch Architecture>
155std::optional<Utils::Vector3d>
168template <
typename FloatType, lbmpy::Arch Architecture>
169std::optional<Utils::Vector3d>
183template <
typename FloatType, lbmpy::Arch Architecture>
186 m_pending_ghost_comm.set(GhostComm::VEL);
187 m_pending_ghost_comm.set(GhostComm::LAF);
204template <
typename FloatType, lbmpy::Arch Architecture>
205std::optional<Utils::VectorXd<9>>
215 pressure_tensor_correction(
tensor);
Vector implementation and trait types for boost qvm interoperability.
std::optional< Utils::Vector3d > get_node_last_applied_force(Utils::Vector3i const &node, bool consider_ghosts=false) const override
std::optional< Utils::Vector3d > get_node_velocity(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
bool set_node_density(Utils::Vector3i const &node, double density) override
std::optional< std::vector< double > > get_node_population(Utils::Vector3i const &node, bool consider_ghosts=false) const override
std::optional< double > get_node_density(Utils::Vector3i const &node, bool consider_ghosts=false) const override
std::optional< Utils::Vector3d > get_node_force_to_be_applied(Utils::Vector3i const &node) const override
bool set_node_velocity(Utils::Vector3i const &node, Utils::Vector3d const &v) override
bool set_node_population(Utils::Vector3i const &node, std::vector< double > const &population) override
std::optional< Utils::VectorXd< 9 > > get_node_pressure_tensor(Utils::Vector3i const &node) const override
cudaStream_t stream[1]
CUDA streams for parallel computing on CPU and GPU.
void set(GhostLayerField< double, uint_t{19u}> *pdf_field, double const rho_in, double const density, Cell const &cell)
double get(GhostLayerField< double, uint_t{19u}> const *pdf_field, double const density, Cell const &cell)
void set(GhostLayerField< double, uint_t{19u}> const *pdf_field, GhostLayerField< double, uint_t{3u}> *velocity_field, GhostLayerField< double, uint_t{3u}> *force_field, Vector3< double > const &force, double const density, Cell const &cell)
void set(GhostLayerField< double, uint_t{19u}> *pdf_field, std::array< double, 19u > const &pop, Cell const &cell)
auto get(GhostLayerField< double, uint_t{19u}> const *pdf_field, Cell const &cell)
auto get(GhostLayerField< double, uint_t{19u}> const *pdf_field, double const density, Cell const &cell)
auto get(GhostLayerField< double, uint_t{3u}> const *vec_field, Cell const &cell)
void set(GhostLayerField< double, uint_t{19u}> *pdf_field, GhostLayerField< double, uint_t{3u}> *velocity_field, GhostLayerField< double, uint_t{3u}> const *force_field, Vector3< double > const &u, Cell const &cell)
\file PackInfoPdfDoublePrecision.cpp \author pystencils
auto to_vector3d(Vector3< T > const &v) noexcept
std::optional< BlockAndCell > get_block_and_cell(::LatticeWalberla const &lattice, signed_integral_vector auto const &node, bool consider_ghost_layers)
auto to_vector9d(Matrix3< T > const &m) noexcept