27#include "communication.hpp"
30#include "system/System.hpp"
31#include "thermostat.hpp"
47 return lb_fluid->get_pressure_tensor();
53 unsigned int shear_plane_normal)
const {
54 lb_fluid->check_lebc(shear_direction, shear_plane_normal);
57std::optional<Utils::Vector3d>
59 bool consider_points_in_halo)
const {
60 return lb_fluid->get_velocity_at_pos(
pos, consider_points_in_halo);
65 bool consider_points_in_halo)
const {
66 return lb_fluid->get_density_at_pos(
pos, consider_points_in_halo);
79 std::vector<Utils::Vector3d>
const &forces) {
83std::vector<Utils::Vector3d>
93 auto const energy_conversion =
95 auto const lb_kT =
lb_fluid->get_kT() * energy_conversion;
96 if (not ::Thermostat::are_kT_equal(lb_kT, kT)) {
97 throw std::runtime_error(
"Temperature change not supported by LB");
102 auto const agrid =
lb_params->get_agrid();
103 auto [lb_left, lb_right] =
lb_fluid->get_lattice().get_local_domain();
106 auto const &md_left = system.
local_geo->my_left();
107 auto const &md_right = system.
local_geo->my_right();
LBWalberlaBase provides the public interface of the LB waLBerla bridge.
Vector implementation and trait types for boost qvm interoperability.
__shared__ int pos[MAXDEPTH *THREADS5/WARPSIZE]
auto get_time_step() const
Get time_step.
std::shared_ptr< LocalBox > local_geo
This file contains the defaults for ESPResSo.
This file contains the errorhandling code for severe errors, like a broken bond or illegal parameter ...
void walberla_agrid_sanity_checks(std::string method, Utils::Vector3d const &geo_left, Utils::Vector3d const &geo_right, Utils::Vector3d const &lattice_left, Utils::Vector3d const &lattice_right, double agrid)
void walberla_tau_sanity_checks(std::string method, double tau, double time_step)
Molecular dynamics integrator.
Utils::Vector3d get_momentum() const
std::shared_ptr< LBWalberlaBase > lb_fluid
Utils::VectorXd< 9 > get_pressure_tensor() const
std::optional< Utils::Vector3d > get_velocity_at_pos(Utils::Vector3d const &pos, bool consider_points_in_halo) const
void veto_time_step(double time_step) const
void add_forces_at_pos(std::vector< Utils::Vector3d > const &pos, std::vector< Utils::Vector3d > const &forces)
void veto_kT(double kT) const
std::optional< double > get_density_at_pos(Utils::Vector3d const &pos, bool consider_points_in_halo) const
std::shared_ptr< LBWalberlaParams > lb_params
std::vector< Utils::Vector3d > get_velocities_at_pos(std::vector< Utils::Vector3d > const &pos)
void sanity_checks(System::System const &system) const
void lebc_sanity_checks(unsigned int shear_direction, unsigned int shear_plane_normal) const
bool add_force_at_pos(Utils::Vector3d const &pos, Utils::Vector3d const &force)