22#include "system/Leaf.hpp"
57 template <
typename LB,
class... Args>
void set(Args... args);
63 template <
class Connector>
void connect(Connector &&connector)
const {
64 assert(impl !=
nullptr);
65 connector(*this->impl);
113 unsigned int shear_plane_normal)
const;
151 std::optional<Utils::Vector3d>
160 std::optional<double>
191 std::vector<Utils::Vector3d>
const &pos)
const;
194 std::vector<Utils::Vector3d>
const &forces);
215 std::unique_ptr<Implementation> impl;
216 Conversions m_conv{};
Vector implementation and trait types for boost qvm interoperability.
Abstract class that represents a component of the system.
void veto_boxl_change() const
void lebc_sanity_checks(unsigned int shear_direction, unsigned int shear_plane_normal) const
Perform LB LEbc parameter checks.
std::vector< double > get_interpolated_densities(std::vector< Utils::Vector3d > const &pos) const
Calculate the interpolated fluid densities in LB units.
void add_force_density(Utils::Vector3d const &pos, Utils::Vector3d const &force_density)
Add a force density to the fluid at the given position.
std::function< bool(Utils::Vector3d const &)> make_lattice_position_checker(bool consider_points_in_halo) const
Make a functor to check if a position is in the local domain.
Utils::Vector3d get_coupling_interpolated_velocity(Utils::Vector3d const &pos) const
Calculate the interpolated fluid velocity in MD units.
void connect(Connector &&connector) const
Connector to the implementation internal state.
void sanity_checks() const
Perform LB parameter and boundary velocity checks.
void on_timestep_change()
void ghost_communication()
Perform a full ghost communication.
void propagate()
Propagate the LB fluid.
void reset()
Remove the LB solver.
std::optional< Utils::Vector3d > get_interpolated_velocity(Utils::Vector3d const &pos) const
Calculate the interpolated fluid velocity in LB units.
bool is_solver_set() const
Return true if a LB solver is active.
void ghost_communication_pdf()
Perform a ghost communication of the PDF field.
void init() const
Perform a full initialization of the lattice-Boltzmann system.
double get_tau() const
Get the LB time step.
void on_temperature_change()
std::optional< double > get_interpolated_density(Utils::Vector3d const &pos) const
Calculate the interpolated fluid density in LB units.
void add_forces_at_pos(std::vector< Utils::Vector3d > const &pos, std::vector< Utils::Vector3d > const &forces)
void set(Args... args)
Set the LB solver.
void veto_kT(double kT) const
Check if a thermostat is compatible with the LB temperature.
double get_agrid() const
Get the LB grid spacing.
Utils::VectorXd< 9 > get_pressure_tensor() const
void update_collision_model()
void veto_time_step(double time_step) const
Check if a MD time step is compatible with the LB tau.
auto get_lattice_speed() const
Get the lattice speed (agrid/tau).
void ghost_communication_vel()
Perform a ghost communication of the velocity field.
void on_lees_edwards_change()
void on_node_grid_change()
Utils::Vector3d get_momentum() const
void on_cell_structure_change()
std::vector< Utils::Vector3d > get_coupling_interpolated_velocities(std::vector< Utils::Vector3d > const &pos) const
Calculate the interpolated fluid velocities in MD units.
double get_kT() const
Get the thermal energy parameter of the LB fluid.