27#ifndef BLOCK_LATTICE_STRUCTURE_2D_H
28#define BLOCK_LATTICE_STRUCTURE_2D_H
35#include "spatiallyExtendedObject2D.h"
36#include "geometry/blockGeometryStructure2D.h"
43template<
typename T,
typename DESCRIPTOR>
struct Dynamics;
49template<
typename T,
typename DESCRIPTOR>
59 virtual void defineRho(BlockGeometryStructure2D<T>& blockGeometry,
int material,
63 virtual void defineU(BlockGeometryStructure2D<T>& blockGeometry,
int material,
67 virtual void defineRhoU(BlockGeometryStructure2D<T>& blockGeometry,
int material,
74 template <
typename FIELD>
77 template <
typename FIELD>
78 void defineField(BlockGeometryStructure2D<T>& blockGeometry,
int material,
80 template <
typename FIELD>
84 template <
typename FIELD>
85 void addField(BlockGeometryStructure2D<T>& blockGeometry,
88 template <
typename FIELD>
89 void addField(BlockGeometryStructure2D<T>& blockGeometry,
92 template <
typename FIELD>
100 virtual void iniEquilibrium(BlockGeometryStructure2D<T>& blockGeometry,
int material,
104 virtual void iniRegularized(BlockGeometryStructure2D<T>& blockGeometry,
int material,
112 virtual T&
getPop(std::size_t iCell,
unsigned iPop) =0;
113 virtual T&
getPop(
int iX,
int iY,
unsigned iPop) =0;
121 virtual void collide(
int x0_,
int x1_,
int y0_,
int y1_) =0;
132 std::vector<SpatiallyExtendedObject2D*> partners ) =0;
150 T invDeltaX, std::vector<int>& start, std::vector<int>& end);
152template <
typename T,
typename DESCRIPTOR>
155 BlockLattice2D<T,DESCRIPTOR>& extendedBlockLattice );
157template <
typename T,
typename DESCRIPTOR>
160 BlockLattice2D<T,DESCRIPTOR>& extendedBlockLattice,
165template <
typename T,
typename DESCRIPTOR>
168 BlockLattice2D<T,DESCRIPTOR>& extendedBlockLattice );
Dynamics for a generic 2D block – header file.
Definition of a LB cell – header file.
AnalyticalF are applications from DD to XD, where X is set by the constructor.
Base block indicator functor (discrete)
An interface to all the variants of (more or less) regular lattices.
virtual void definePopulations(BlockIndicatorF2D< T > &indicator, AnalyticalF< 2, T, T > &Pop)
virtual LatticeStatistics< T > & getStatistics()=0
virtual void defineDynamics(int iX, int iY, Dynamics< T, DESCRIPTOR > *dynamics)=0
virtual void defineDynamics(int x0_, int x1_, int y0_, int y1_, Dynamics< T, DESCRIPTOR > *dynamics)=0
virtual void freeSurfaceInitialize()=0
virtual void initialize()=0
virtual void defineRho(BlockIndicatorF2D< T > &indicator, AnalyticalF< 2, T, T > &rho)
virtual Cell< T, DESCRIPTOR > get(int iX, int iY)=0
virtual void defineRho(BlockGeometryStructure2D< T > &blockGeometry, int material, AnalyticalF< 2, T, T > &rho)
void addField(BlockGeometryStructure2D< T > &blockGeometry, IndicatorF2D< T > &indicator, AnalyticalF< 2, T, T > &field, AnalyticalF< 2, T, T > &porous)
virtual void defineRhoU(BlockIndicatorF2D< T > &indicator, AnalyticalF< 2, T, T > &rho, AnalyticalF< 2, T, T > &u)
virtual void executeCoupling(int x0_, int x1_, int y0_, int y1_)=0
virtual void defineU(BlockIndicatorF2D< T > &indicator, AnalyticalF< 2, T, T > &u)
BlockLatticeStructure2D(int nx, int ny)
virtual ConstCell< T, DESCRIPTOR > get(int iX, int iY) const =0
virtual void stripeOffDensityOffset(int x0_, int x1_, int y0_, int y1_, T offset)=0
virtual void addPostProcessor(PostProcessorGenerator2D< T, DESCRIPTOR > const &ppGen)=0
virtual void executeCoupling()=0
void defineField(BlockIndicatorF2D< T > &indicator, AnalyticalF< 2, T, T > &field)
virtual void addLatticeCoupling(LatticeCouplingGenerator2D< T, DESCRIPTOR > const &lcGen, std::vector< SpatiallyExtendedObject2D * > partners)=0
virtual LatticeStatistics< T > const & getStatistics() const =0
virtual void defineRhoU(BlockGeometryStructure2D< T > &blockGeometry, int material, AnalyticalF< 2, T, T > &rho, AnalyticalF< 2, T, T > &u)
void defineField(BlockGeometryStructure2D< T > &blockGeometry, IndicatorF2D< T > &indicator, AnalyticalF< 2, T, T > &field)
virtual void iniEquilibrium(BlockGeometryStructure2D< T > &blockGeometry, int material, AnalyticalF< 2, T, T > &rho, AnalyticalF< 2, T, T > &u)
virtual Dynamics< T, DESCRIPTOR > * getDynamics(int iX, int iY)=0
virtual void freeSurfacePostProcess(size_t i, int x0_, int x1_, int y0_, int y1_)=0
virtual void defineU(BlockGeometryStructure2D< T > &blockGeometry, int material, AnalyticalF< 2, T, T > &u)
std::vector< Momenta< T, DESCRIPTOR > * > momentaVector
virtual void iniRegularized(BlockIndicatorF2D< T > &indicator, AnalyticalF< 2, T, T > &rho, AnalyticalF< 2, T, T > &u, AnalyticalF< 2, T, T > &pi)
virtual void stripeOffDensityOffset(T offset)=0
virtual Cell< T, DESCRIPTOR > get(int latticeR[])=0
void defineField(BlockGeometryStructure2D< T > &blockGeometry, int material, AnalyticalF< 2, T, T > &field)
virtual void freeSurfacePostProcess(size_t i)=0
virtual T & getPop(std::size_t iCell, unsigned iPop)=0
virtual void iniRegularized(BlockGeometryStructure2D< T > &blockGeometry, int material, AnalyticalF< 2, T, T > &rho, AnalyticalF< 2, T, T > &u, AnalyticalF< 2, T, T > &pi)
virtual void collide(int x0_, int x1_, int y0_, int y1_)=0
virtual T & getPop(int iX, int iY, unsigned iPop)=0
virtual void postProcess(int x0_, int x1_, int y0_, int y1_)=0
~BlockLatticeStructure2D() override
virtual void iniEquilibrium(BlockIndicatorF2D< T > &indicator, AnalyticalF< 2, T, T > &rho, AnalyticalF< 2, T, T > &u)
std::vector< Dynamics< T, DESCRIPTOR > * > dynamicsVector
virtual void definePopulations(BlockGeometryStructure2D< T > &blockGeometry, int material, AnalyticalF< 2, T, T > &Pop)
virtual void resetPostProcessors()=0
void multiplyField(BlockGeometryStructure2D< T > &blockGeometry, IndicatorF2D< T > &indicator, AnalyticalF< 2, T, T > &field)
void addField(BlockGeometryStructure2D< T > &blockGeometry, IndicatorF2D< T > &indicator, AnalyticalF< 2, T, T > &field)
virtual void postProcess()=0
Highest-level interface to Cell data.
Highest-level interface to read-only Cell data.
IndicatorF2D is an application from .
Interface for post-processing steps – header file.
Top level namespace for all of OpenLB.
void setBlockZetaParticleField(BlockGeometryStructure2D< T > &blockGeometry, AnalyticalF< 2, T, T > &velocity, SmoothIndicatorF2D< T, T, true > &sIndicator, BlockLattice2D< T, DESCRIPTOR > &extendedBlockLattice)
bool getRangeBlockGeometrySmoothIndicatorIntersection2D(BlockGeometryStructure2D< T > &blockGeometry, SmoothIndicatorF2D< T, T, true > &sIndicator, T invDeltaX, std::vector< int > &start, std::vector< int > &end)
void setBlockExternalParticleField(BlockGeometryStructure2D< T > &blockGeometry, AnalyticalF< 2, T, T > &velocity, SmoothIndicatorF2D< T, T, true > &sIndicator, BlockLattice2D< T, DESCRIPTOR > &extendedBlockLattice)
Interface for post-processing steps – header file.
Interface for per-cell dynamics.