22#include "system/Leaf.hpp"
55 template <
typename LB,
class... Args>
void set(Args... args);
61 template <
class Connector>
void connect(Connector &&connector)
const {
62 assert(impl !=
nullptr);
63 connector(*this->impl);
111 unsigned int shear_plane_normal)
const;
145 std::optional<Utils::Vector3d>
154 std::optional<double>
168 std::vector<Utils::Vector3d>
const &pos)
const;
171 std::vector<Utils::Vector3d>
const &forces);
192 std::unique_ptr<Implementation> impl;
193 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.
void add_force_density(Utils::Vector3d const &pos, Utils::Vector3d const &force_density)
Add a force density to the fluid at the given position.
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
double get_kT() const
Get the thermal energy parameter of the LB fluid.