ESPResSo
Extensible Simulation Package for Research on Soft Matter Systems
|
Interface of a lattice-based fluid model. More...
#include <LBWalberlaBase.hpp>
Public Member Functions | |
~LBWalberlaBase () override=default | |
virtual void | integrate ()=0 |
Integrate LB for one time step. | |
virtual void | ghost_communication ()=0 |
Perform a full ghost communication. | |
virtual void | ghost_communication_pdf ()=0 |
Perform a ghost communication of the PDF field. | |
virtual void | ghost_communication_vel ()=0 |
Perform a ghost communication of the velocity field. | |
virtual std::size_t | stencil_size () const noexcept=0 |
Number of discretized velocities in the PDF. | |
virtual bool | is_double_precision () const noexcept=0 |
Whether kernels use double-precision floating point numbers. | |
virtual std::optional< Utils::Vector3d > | get_velocity_at_pos (Utils::Vector3d const &position, bool consider_points_in_halo=false) const =0 |
Get interpolated velocities at a position. | |
virtual std::vector< Utils::Vector3d > | get_velocities_at_pos (std::vector< Utils::Vector3d > const &pos)=0 |
Get interpolated velocities at positions. | |
virtual std::optional< double > | get_density_at_pos (Utils::Vector3d const &position, bool consider_points_in_halo=false) const =0 |
Get interpolated densities at a position. | |
virtual bool | add_force_at_pos (Utils::Vector3d const &position, Utils::Vector3d const &force)=0 |
Interpolate a force to the stored forces to be applied on nodes in the next time step. | |
virtual void | add_forces_at_pos (std::vector< Utils::Vector3d > const &positions, std::vector< Utils::Vector3d > const &forces)=0 |
Interpolate forces to the stored forces to be applied on nodes in the next time step. | |
virtual std::optional< Utils::Vector3d > | get_node_force_to_be_applied (Utils::Vector3i const &node) const =0 |
Get stored force to be applied on node in the next time step. | |
virtual std::optional< Utils::Vector3d > | get_node_last_applied_force (Utils::Vector3i const &node, bool consider_ghosts=false) const =0 |
Get stored force that was applied on node in the last time step. | |
virtual bool | set_node_last_applied_force (Utils::Vector3i const &node, Utils::Vector3d const &force)=0 |
Set stored force that was applied on node in the last time step. | |
virtual std::vector< double > | get_slice_last_applied_force (Utils::Vector3i const &lower_corner, Utils::Vector3i const &upper_corner) const =0 |
Get stored force that was applied on slice in the last time step. | |
virtual void | set_slice_last_applied_force (Utils::Vector3i const &lower_corner, Utils::Vector3i const &upper_corner, std::vector< double > const &force)=0 |
Set stored force that was applied on slice in the last time step. | |
virtual std::optional< std::vector< double > > | get_node_population (Utils::Vector3i const &node, bool consider_ghosts=false) const =0 |
Get node population. | |
virtual bool | set_node_population (Utils::Vector3i const &node, std::vector< double > const &population)=0 |
Set node population. | |
virtual std::vector< double > | get_slice_population (Utils::Vector3i const &lower_corner, Utils::Vector3i const &upper_corner) const =0 |
Get slice population. | |
virtual void | set_slice_population (Utils::Vector3i const &lower_corner, Utils::Vector3i const &upper_corner, std::vector< double > const &population)=0 |
Set slice population. | |
virtual std::optional< Utils::Vector3d > | get_node_velocity (Utils::Vector3i const &node, bool consider_ghosts=false) const =0 |
Get node velocity. | |
virtual bool | set_node_velocity (Utils::Vector3i const &node, Utils::Vector3d const &v)=0 |
Set node velocity. | |
virtual std::vector< double > | get_slice_velocity (Utils::Vector3i const &lower_corner, Utils::Vector3i const &upper_corner) const =0 |
Get slice velocity. | |
virtual void | set_slice_velocity (Utils::Vector3i const &lower_corner, Utils::Vector3i const &upper_corner, std::vector< double > const &velocity)=0 |
Set slice velocity. | |
virtual std::optional< double > | get_node_density (Utils::Vector3i const &node, bool consider_ghosts=false) const =0 |
Get node density. | |
virtual bool | set_node_density (Utils::Vector3i const &node, double density)=0 |
Set node density. | |
virtual std::vector< double > | get_slice_density (Utils::Vector3i const &lower_corner, Utils::Vector3i const &upper_corner) const =0 |
Get slice density. | |
virtual void | set_slice_density (Utils::Vector3i const &lower_corner, Utils::Vector3i const &upper_corner, std::vector< double > const &density)=0 |
Set slice density. | |
virtual std::optional< Utils::Vector3d > | get_node_velocity_at_boundary (Utils::Vector3i const &node, bool consider_ghosts=false) const =0 |
Get node velocity boundary conditions. | |
virtual bool | set_node_velocity_at_boundary (Utils::Vector3i const &node, Utils::Vector3d const &velocity)=0 |
Set node velocity boundary conditions. | |
virtual std::vector< std::optional< Utils::Vector3d > > | get_slice_velocity_at_boundary (Utils::Vector3i const &lower_corner, Utils::Vector3i const &upper_corner) const =0 |
Get slice velocity boundary conditions. | |
virtual void | set_slice_velocity_at_boundary (Utils::Vector3i const &lower_corner, Utils::Vector3i const &upper_corner, std::vector< std::optional< Utils::Vector3d > > const &velocity)=0 |
Set slice velocity boundary conditions. | |
virtual std::optional< Utils::Vector3d > | get_node_boundary_force (Utils::Vector3i const &node) const =0 |
Get (stored) force applied on node due to boundary condition. | |
virtual bool | remove_node_from_boundary (Utils::Vector3i const &node)=0 |
Remove a node from the boundaries. | |
virtual std::optional< bool > | get_node_is_boundary (Utils::Vector3i const &node, bool consider_ghosts=false) const =0 |
Check if node has velocity boundary conditions. | |
virtual std::vector< bool > | get_slice_is_boundary (Utils::Vector3i const &lower_corner, Utils::Vector3i const &upper_corner) const =0 |
Check if slice has velocity boundary conditions. | |
virtual void | reallocate_ubb_field ()=0 |
Rebuild the UBB field. | |
virtual void | clear_boundaries ()=0 |
Clear the boundary flag field and the UBB field. | |
virtual void | update_boundary_from_shape (std::vector< int > const &, std::vector< double > const &)=0 |
Update boundary conditions from a rasterized shape. | |
virtual void | set_collision_model (double kT, unsigned int seed)=0 |
Configure the default collision model. | |
virtual void | set_collision_model (std::unique_ptr< LeesEdwardsPack > &&lees_edwards_pack)=0 |
Configure a thermalized collision model for Lees-Edwards. | |
virtual void | check_lebc (unsigned int shear_direction, unsigned int shear_plane_normal) const =0 |
Check Lees-Edwards boundary conditions. | |
virtual std::optional< Utils::VectorXd< 9 > > | get_node_pressure_tensor (Utils::Vector3i const &node) const =0 |
Get node pressure tensor. | |
virtual std::vector< double > | get_slice_pressure_tensor (Utils::Vector3i const &lower_corner, Utils::Vector3i const &upper_corner) const =0 |
Get slice pressure tensor. | |
virtual Utils::VectorXd< 9 > | get_pressure_tensor () const =0 |
Calculate average pressure tensor of the local domain. | |
virtual Utils::Vector3d | get_momentum () const =0 |
Calculate momentum of the local domain. | |
virtual void | set_external_force (Utils::Vector3d const &ext_force)=0 |
Set a global external force. | |
virtual Utils::Vector3d | get_external_force () const noexcept=0 |
Get the global external force. | |
virtual void | set_viscosity (double viscosity)=0 |
Set the fluid viscosity. | |
virtual double | get_viscosity () const noexcept=0 |
Get the fluid viscosity. | |
virtual double | get_density () const noexcept=0 |
Get the fluid density. | |
virtual double | get_kT () const noexcept=0 |
Get the fluid temperature (if thermalized). | |
virtual unsigned int | get_seed () const noexcept=0 |
Get the RNG seed (if thermalized). | |
virtual std::optional< uint64_t > | get_rng_state () const =0 |
Set the RNG counter (if thermalized). | |
virtual void | set_rng_state (uint64_t counter)=0 |
Set the RNG counter (if thermalized). | |
virtual std::size_t | get_velocity_field_id () const noexcept=0 |
get the velocity field id | |
virtual std::size_t | get_force_field_id () const noexcept=0 |
get the force field id | |
virtual bool | is_gpu () const noexcept=0 |
Public Member Functions inherited from LatticeModel | |
virtual | ~LatticeModel ()=default |
virtual LatticeWalberla const & | get_lattice () const noexcept=0 |
Get the underlying lattice. | |
std::shared_ptr< VTKHandle > | create_vtk (int delta_N, int initial_count, int flag_observables, units_map const &units_conversion, std::string const &identifier, std::string const &base_folder, std::string const &prefix) |
Create a VTK observable. | |
void | write_vtk (std::string const &vtk_uid) |
Write a VTK observable to disk. | |
void | switch_vtk (std::string const &vtk_uid, bool status) |
Toggle a VTK observable on/off. | |
Additional Inherited Members | |
Public Types inherited from LatticeModel | |
using | units_map = std::unordered_map< std::string, double > |
Protected Member Functions inherited from LatticeModel | |
virtual void | register_vtk_field_writers (walberla::vtk::VTKOutput &vtk_obj, units_map const &units_conversion, int flag_observables)=0 |
Register VTK writers. | |
virtual void | register_vtk_field_filters (walberla::vtk::VTKOutput &vtk_obj)=0 |
virtual void | integrate_vtk_writers ()=0 |
Protected Attributes inherited from LatticeModel | |
std::map< std::string, std::shared_ptr< VTKHandle > > | m_vtk_auto |
VTK writers that are executed automatically. | |
std::map< std::string, std::shared_ptr< VTKHandle > > | m_vtk_manual |
VTK writers that are executed manually. | |
Interface of a lattice-based fluid model.
Definition at line 41 of file LBWalberlaBase.hpp.
|
overridedefault |
|
pure virtual |
Interpolate a force to the stored forces to be applied on nodes in the next time step.
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
|
pure virtual |
Interpolate forces to the stored forces to be applied on nodes in the next time step.
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
|
pure virtual |
Check Lees-Edwards boundary conditions.
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
|
pure virtual |
Clear the boundary flag field and the UBB field.
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
|
pure virtualnoexcept |
Get the fluid density.
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
|
pure virtual |
Get interpolated densities at a position.
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
|
pure virtualnoexcept |
Get the global external force.
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
|
pure virtualnoexcept |
get the force field id
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
|
pure virtualnoexcept |
Get the fluid temperature (if thermalized).
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
|
pure virtual |
Calculate momentum of the local domain.
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
|
pure virtual |
Get (stored) force applied on node due to boundary condition.
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
|
pure virtual |
Get node density.
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
|
pure virtual |
Get stored force to be applied on node in the next time step.
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
|
pure virtual |
Check if node has velocity boundary conditions.
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
|
pure virtual |
Get stored force that was applied on node in the last time step.
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
|
pure virtual |
Get node population.
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
|
pure virtual |
Get node pressure tensor.
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
|
pure virtual |
Get node velocity.
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
|
pure virtual |
Get node velocity boundary conditions.
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
|
pure virtual |
Calculate average pressure tensor of the local domain.
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
|
pure virtual |
Set the RNG counter (if thermalized).
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
|
pure virtualnoexcept |
Get the RNG seed (if thermalized).
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
|
pure virtual |
Get slice density.
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
Referenced by ScriptInterface::walberla::LBFluidSlice::do_call_method().
|
pure virtual |
Check if slice has velocity boundary conditions.
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
Referenced by ScriptInterface::walberla::LBFluidSlice::do_call_method().
|
pure virtual |
Get stored force that was applied on slice in the last time step.
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
Referenced by ScriptInterface::walberla::LBFluidSlice::do_call_method().
|
pure virtual |
Get slice population.
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
Referenced by ScriptInterface::walberla::LBFluidSlice::do_call_method().
|
pure virtual |
Get slice pressure tensor.
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
Referenced by ScriptInterface::walberla::LBFluidSlice::do_call_method().
|
pure virtual |
Get slice velocity.
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
Referenced by ScriptInterface::walberla::LBFluidSlice::do_call_method().
|
pure virtual |
Get slice velocity boundary conditions.
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
Referenced by ScriptInterface::walberla::LBFluidSlice::do_call_method().
|
pure virtual |
Get interpolated velocities at positions.
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
|
pure virtual |
Get interpolated velocities at a position.
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
|
pure virtualnoexcept |
get the velocity field id
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
|
pure virtualnoexcept |
Get the fluid viscosity.
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
|
pure virtual |
Perform a full ghost communication.
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
Referenced by LB::LBWalberla::update_collision_model().
|
pure virtual |
Perform a ghost communication of the PDF field.
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
|
pure virtual |
Perform a ghost communication of the velocity field.
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
|
pure virtual |
Integrate LB for one time step.
The ghost layer may be out-of-date after integration. Call ghost_communication() to refresh them before calling any getter function that reads from the halo region.
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
|
pure virtualnoexcept |
Whether kernels use double-precision floating point numbers.
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
|
pure virtualnoexcept |
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
|
pure virtual |
Rebuild the UBB field.
This is an expensive operation.
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
|
pure virtual |
Remove a node from the boundaries.
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
|
pure virtual |
Configure the default collision model.
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
Referenced by LB::LBWalberla::update_collision_model().
|
pure virtual |
Configure a thermalized collision model for Lees-Edwards.
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
|
pure virtual |
Set a global external force.
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
|
pure virtual |
Set node density.
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
|
pure virtual |
Set stored force that was applied on node in the last time step.
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
|
pure virtual |
Set node population.
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
|
pure virtual |
Set node velocity.
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
|
pure virtual |
Set node velocity boundary conditions.
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
|
pure virtual |
Set the RNG counter (if thermalized).
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
|
pure virtual |
Set slice density.
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
Referenced by ScriptInterface::walberla::LBFluidSlice::do_call_method().
|
pure virtual |
Set stored force that was applied on slice in the last time step.
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
Referenced by ScriptInterface::walberla::LBFluidSlice::do_call_method().
|
pure virtual |
Set slice population.
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
Referenced by ScriptInterface::walberla::LBFluidSlice::do_call_method().
|
pure virtual |
Set slice velocity.
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
Referenced by ScriptInterface::walberla::LBFluidSlice::do_call_method().
|
pure virtual |
Set slice velocity boundary conditions.
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
Referenced by ScriptInterface::walberla::LBFluidSlice::do_call_method().
|
pure virtual |
Set the fluid viscosity.
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
|
pure virtualnoexcept |
Number of discretized velocities in the PDF.
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.
|
pure virtual |
Update boundary conditions from a rasterized shape.
Implemented in walberla::LBWalberlaImpl< FloatType, Architecture >.