ESPResSo
Extensible Simulation Package for Research on Soft Matter Systems
Loading...
Searching...
No Matches
walberla::PoissonSolverFFT< FloatType, Architecture > Class Template Reference

#include <PoissonSolverFFT.hpp>

+ Inheritance diagram for walberla::PoissonSolverFFT< FloatType, Architecture >:
+ Collaboration diagram for walberla::PoissonSolverFFT< FloatType, Architecture >:

Classes

struct  FieldTrait
 
struct  heffte_container
 
class  PotentialVTKWriter
 
class  VTKWriter
 

Public Types

using ComplexType = FieldTrait< FloatType, Architecture >::ComplexType
 
using PotentialField = FieldTrait< FloatType, Architecture >::PotentialField
 
using PotentialFieldVTK = FieldTrait< FloatType, Architecture >::PotentialFieldVTK
 
using FullCommunicator = FieldTrait< FloatType, Architecture >::template FullCommunicator< stencil::D3Q27 >
 
template<class Field >
using PackInfo = FieldTrait< FloatType, Architecture >::template PackInfo< Field >
 
- Public Types inherited from LatticeModel
using units_map = std::unordered_map< std::string, double >
 

Public Member Functions

 ~PoissonSolverFFT () override=default
 
 PoissonSolverFFT (std::shared_ptr< LatticeWalberla > lattice, double permittivity)
 
bool is_gpu () const noexcept override
 
bool is_double_precision () const noexcept override
 
std::size_t get_potential_field_id () const noexcept override
 
void setup_fft (bool use_gpu_aware) override
 
std::optional< doubleget_node_potential (Utils::Vector3i const &node, bool consider_ghosts=false) override
 
std::vector< doubleget_slice_potential (Utils::Vector3i const &lower_corner, Utils::Vector3i const &upper_corner) const override
 
void solve () override
 
void add_charge_to_field (std::size_t id, double valency) override
 
void reset_charge_field () override
 
void register_vtk_field_writers (walberla::vtk::VTKOutput &vtk_obj, LatticeModel::units_map const &units, int flag_observables) override
 
- Public Member Functions inherited from walberla::PoissonSolver
 PoissonSolver (std::shared_ptr< LatticeWalberla > lattice, double permittivity)
 
 ~PoissonSolver () override=default
 
virtual void set_permittivity (double permittivity) noexcept
 
virtual double get_permittivity () const noexcept
 
LatticeWalberla constget_lattice () const noexcept override
 
- Public Member Functions inherited from LatticeModel
virtual ~LatticeModel ()=default
 
std::shared_ptr< VTKHandlecreate_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, bool force_pvtu)
 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.
 

Protected Member Functions

void ghost_communication ()
 
void integrate_vtk_writers () override
 
- Protected Member Functions inherited from walberla::PoissonSolver
void register_vtk_field_filters (walberla::vtk::VTKOutput &) override
 

Additional Inherited Members

- 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.
 

Detailed Description

template<typename FloatType, lbmpy::Arch Architecture>
class walberla::PoissonSolverFFT< FloatType, Architecture >

Definition at line 101 of file PoissonSolverFFT.hpp.

Member Typedef Documentation

◆ ComplexType

template<typename FloatType , lbmpy::Arch Architecture>
using walberla::PoissonSolverFFT< FloatType, Architecture >::ComplexType = FieldTrait<FloatType, Architecture>::ComplexType

Definition at line 133 of file PoissonSolverFFT.hpp.

◆ FullCommunicator

template<typename FloatType , lbmpy::Arch Architecture>
using walberla::PoissonSolverFFT< FloatType, Architecture >::FullCommunicator = FieldTrait<FloatType, Architecture>::template FullCommunicator<stencil::D3Q27>

Definition at line 137 of file PoissonSolverFFT.hpp.

◆ PackInfo

template<typename FloatType , lbmpy::Arch Architecture>
template<class Field >
using walberla::PoissonSolverFFT< FloatType, Architecture >::PackInfo = FieldTrait<FloatType, Architecture>::template PackInfo<Field>

Definition at line 141 of file PoissonSolverFFT.hpp.

◆ PotentialField

template<typename FloatType , lbmpy::Arch Architecture>
using walberla::PoissonSolverFFT< FloatType, Architecture >::PotentialField = FieldTrait<FloatType, Architecture>::PotentialField

Definition at line 134 of file PoissonSolverFFT.hpp.

◆ PotentialFieldVTK

template<typename FloatType , lbmpy::Arch Architecture>
using walberla::PoissonSolverFFT< FloatType, Architecture >::PotentialFieldVTK = FieldTrait<FloatType, Architecture>::PotentialFieldVTK

Definition at line 135 of file PoissonSolverFFT.hpp.

Constructor & Destructor Documentation

◆ ~PoissonSolverFFT()

template<typename FloatType , lbmpy::Arch Architecture>
walberla::PoissonSolverFFT< FloatType, Architecture >::~PoissonSolverFFT ( )
overridedefault

◆ PoissonSolverFFT()

template<typename FloatType , lbmpy::Arch Architecture>
walberla::PoissonSolverFFT< FloatType, Architecture >::PoissonSolverFFT ( std::shared_ptr< LatticeWalberla lattice,
double  permittivity 
)
inline

Member Function Documentation

◆ add_charge_to_field()

◆ get_node_potential()

template<typename FloatType , lbmpy::Arch Architecture>
std::optional< double > walberla::PoissonSolverFFT< FloatType, Architecture >::get_node_potential ( Utils::Vector3i const node,
bool  consider_ghosts = false 
)
inlineoverridevirtual

◆ get_potential_field_id()

template<typename FloatType , lbmpy::Arch Architecture>
std::size_t walberla::PoissonSolverFFT< FloatType, Architecture >::get_potential_field_id ( ) const
inlineoverridevirtualnoexcept

◆ get_slice_potential()

template<typename FloatType , lbmpy::Arch Architecture>
std::vector< double > walberla::PoissonSolverFFT< FloatType, Architecture >::get_slice_potential ( Utils::Vector3i const lower_corner,
Utils::Vector3i const upper_corner 
) const
inlineoverridevirtual

◆ ghost_communication()

template<typename FloatType , lbmpy::Arch Architecture>
void walberla::PoissonSolverFFT< FloatType, Architecture >::ghost_communication ( )
inlineprotected

◆ integrate_vtk_writers()

template<typename FloatType , lbmpy::Arch Architecture>
void walberla::PoissonSolverFFT< FloatType, Architecture >::integrate_vtk_writers ( )
inlineoverrideprotectedvirtual

◆ is_double_precision()

template<typename FloatType , lbmpy::Arch Architecture>
bool walberla::PoissonSolverFFT< FloatType, Architecture >::is_double_precision ( ) const
inlineoverridevirtualnoexcept

Implements walberla::PoissonSolver.

Definition at line 290 of file PoissonSolverFFT.hpp.

◆ is_gpu()

template<typename FloatType , lbmpy::Arch Architecture>
bool walberla::PoissonSolverFFT< FloatType, Architecture >::is_gpu ( ) const
inlineoverridevirtualnoexcept

Implements walberla::PoissonSolver.

Definition at line 286 of file PoissonSolverFFT.hpp.

References lbmpy::GPU, and stream.

◆ register_vtk_field_writers()

template<typename FloatType , lbmpy::Arch Architecture>
void walberla::PoissonSolverFFT< FloatType, Architecture >::register_vtk_field_writers ( walberla::vtk::VTKOutput &  vtk_obj,
LatticeModel::units_map const units,
int  flag_observables 
)
inlineoverridevirtual

◆ reset_charge_field()

◆ setup_fft()

◆ solve()


The documentation for this class was generated from the following file: