28#ifndef LB_BACK_COUPLING_MODELS_H
29#define LB_BACK_COUPLING_MODELS_H
39template<
typename T,
template<
typename V>
class Particle>
45 virtual bool operator() (Particle<T>* p,
int globic,
int material,
int subCycles=1)=0;
54template<
typename T,
typename Lattice,
template<
typename V>
class Particle>
71 std::shared_ptr<AnalyticalConst3D<T, T> > _zeroAnalytical;
72 std::shared_ptr<AnalyticalComposed3D<T, T> > _zeroField;
78template<
typename T,
typename Lattice,
template<
typename V>
class Particle>
93template<
typename T,
typename Lattice,
template<
typename V>
class Particle>
110template<
typename T,
typename Lattice,
template<
typename V>
class Particle>
119 virtual bool operator() (Particle<T>* p,
int globic,
int material,
int subCycles=1)
override;
126template<
typename T,
typename Lattice,
template<
typename V>
class Particle>
135 virtual bool operator() (Particle<T>* p,
int globic,
int material,
int subCycles=1)
override;
147template<
typename T,
typename Lattice,
template<
typename V>
class Particle>
157 virtual bool operator() (Particle<T>* p,
int globic,
int material,
int subCycles=1)
override;
Abstact base class for BaseBackCouplingModel.
virtual void resetExternalField(int material)=0
Resets external field.
virtual void communicate()=0
Communicates POPULATION and FORCE fields if the model is non-local.
virtual bool operator()(Particle< T > *p, int globic, int material, int subCycles=1)=0
Class operator to apply the coupling, for overload.
Abstact class for all the back-coupling models, viz., momentum coupling from particle to fluid.
BaseBackCouplingModel(UnitConverter< T, Lattice > &converter, SuperLattice< T, Lattice > &sLattice, SuperGeometry< T, 3 > &sGeometry, int overlap)
Constructor.
UnitConverter< T, Lattice > & _converter
SuperLattice< T, Lattice > & _sLattice
virtual void resetExternalField(int material) override
Resets external field.
SuperGeometry< T, 3 > & _sGeometry
SuperCommunicator< T, SuperLattice< T, Lattice > > _commPopulation
Abstact class for all the local back-coupling models.
virtual void communicate() override
Communicates POPULATION and FORCE fields if the model is non-local.
BaseLocalBackCouplingModel(UnitConverter< T, Lattice > &converter, SuperLattice< T, Lattice > &sLattice, SuperGeometry< T, 3 > &sGeometry, int overlap)
Constructor.
Abstact class for all the non-local back-coupling models.
virtual void communicate() override
Communicates POPULATION and FORCE fields if the model is non-local.
BaseNonLocalBackCouplingModel(UnitConverter< T, Lattice > &converter, SuperLattice< T, Lattice > &sLattice, SuperGeometry< T, 3 > &sGeometry, int overlap)
Constructor.
Back-coupling is performed on the cell containing the particle and its neighbours within a cube of on...
CubicDeltaBackCouplingModel(UnitConverter< T, Lattice > &converter, SuperLattice< T, Lattice > &sLattice, SuperGeometry< T, 3 > &sGeometry, int overlap)
Constructor.
std::shared_ptr< SuperLatticeSmoothDiracDelta3D< T, Lattice > > _cubicDeltaFunctional
virtual bool operator()(Particle< T > *p, int globic, int material, int subCycles=1) override
Class operator to apply the coupling.
Back-coupling is performed only on the cell containing the particle.
LocalBackCouplingModel(UnitConverter< T, Lattice > &converter, SuperLattice< T, Lattice > &sLattice, SuperGeometry< T, 3 > &sGeometry, int overlap)
Constructor.
virtual bool operator()(Particle< T > *p, int globic, int material, int subCycles=1) override
Class operator to apply the coupling.
Class for a generic non-local back-coupling model (but this is NOT VIRTUAL!), viz....
NonLocalBaseBackCouplingModel(UnitConverter< T, Lattice > &converter, SuperLattice< T, Lattice > &sLattice, SuperGeometry< T, 3 > &sGeometry, std::shared_ptr< SmoothingFunctional< T, Lattice > > smoothingFunctional, int overlap)
Constructor.
virtual bool operator()(Particle< T > *p, int globic, int material, int subCycles=1) override
Class operator to apply the coupling.
std::shared_ptr< SmoothingFunctional< T, Lattice > > _smoothingFunctional
Abstact class for all the smoothing functionals.
Generic communicator for overlaps between blocks of SUPER.
Representation of a statistic for a parallel 2D geometry.
Super class maintaining block lattices for a cuboid decomposition.
Conversion between physical and lattice units, as well as discretization.
Top level namespace for all of OpenLB.