diff options
Diffstat (limited to 'src/refinement/grid2D.h')
-rw-r--r-- | src/refinement/grid2D.h | 36 |
1 files changed, 34 insertions, 2 deletions
diff --git a/src/refinement/grid2D.h b/src/refinement/grid2D.h index 95324f7..c90078b 100644 --- a/src/refinement/grid2D.h +++ b/src/refinement/grid2D.h @@ -66,10 +66,29 @@ using RelaxationTime = NamedType<T,struct NamedRelaxationTime>; template <typename T> using LatticeVelocity = NamedType<T,struct NamedLatticeVelocity>; +template <typename T> +struct Characteristics { + Characteristics(T l, T u, T nu, T rho): + length(l), + velocity(u), + viscosity(nu), + density(rho) { } + + Characteristics(int Re): + Characteristics(1.0, 1.0, 1.0/Re, 1.0) { } + + const T length; + const T velocity; + const T viscosity; + const T density; +}; + + template <typename T, template<typename> class DESCRIPTOR> class Grid2D { protected: FunctorPtr<IndicatorF2D<T>> _domainF; + const Characteristics<T> _characteristics; std::unique_ptr<UnitConverter<T,DESCRIPTOR>> _converter; std::unique_ptr<CuboidGeometry2D<T>> _cuboids; @@ -79,6 +98,7 @@ protected: std::vector<std::unique_ptr<Dynamics<T,DESCRIPTOR>>> _dynamics; std::vector<std::unique_ptr<sOnLatticeBoundaryCondition2D<T,DESCRIPTOR>>> _onLatticeBoundaryConditions; + std::vector<std::unique_ptr<sOffLatticeBoundaryCondition2D<T,DESCRIPTOR>>> _offLatticeBoundaryConditions; std::vector<std::unique_ptr<RefiningGrid2D<T,DESCRIPTOR>>> _fineGrids; @@ -86,8 +106,19 @@ protected: std::vector<std::unique_ptr<CoarseCoupler2D<T,DESCRIPTOR>>> _coarseCouplers; public: - Grid2D(FunctorPtr<IndicatorF2D<T>>&& domainF, int resolution, RelaxationTime<T> tau, int re); - Grid2D(FunctorPtr<IndicatorF2D<T>>&& domainF, int resolution, LatticeVelocity<T> uMax, int re); + Grid2D(FunctorPtr<IndicatorF2D<T>>&& domainF, + RelaxationTime<T> tau, + int resolution, + Characteristics<T> characteristics); + Grid2D(FunctorPtr<IndicatorF2D<T>>&& domainF, + LatticeVelocity<T> latticeVelocity, + int resolution, + Characteristics<T> characteristics); + + Grid2D(FunctorPtr<IndicatorF2D<T>>&& domainF, RelaxationTime<T> tau, int resolution, int re); + Grid2D(FunctorPtr<IndicatorF2D<T>>&& domainF, LatticeVelocity<T> uMax, int resolution, int re); + + Characteristics<T> getCharacteristics() const; UnitConverter<T,DESCRIPTOR>& getConverter(); CuboidGeometry2D<T>& getCuboidGeometry(); @@ -97,6 +128,7 @@ public: Dynamics<T,DESCRIPTOR>& addDynamics(std::unique_ptr<Dynamics<T,DESCRIPTOR>>&& dynamics); sOnLatticeBoundaryCondition2D<T,DESCRIPTOR>& getOnLatticeBoundaryCondition(); + sOffLatticeBoundaryCondition2D<T,DESCRIPTOR>& getOffLatticeBoundaryCondition(); void collideAndStream(); |