From 5a0e359141b214faf15f5057e64e8529f535c5c1 Mon Sep 17 00:00:00 2001 From: Adrian Kummerlaender Date: Sun, 3 Feb 2019 19:45:36 +0100 Subject: Allow customization of Grid2D's physical dimensionalization --- src/refinement/grid2D.h | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) (limited to 'src/refinement/grid2D.h') 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; template using LatticeVelocity = NamedType; +template +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 class DESCRIPTOR> class Grid2D { protected: FunctorPtr> _domainF; + const Characteristics _characteristics; std::unique_ptr> _converter; std::unique_ptr> _cuboids; @@ -79,6 +98,7 @@ protected: std::vector>> _dynamics; std::vector>> _onLatticeBoundaryConditions; + std::vector>> _offLatticeBoundaryConditions; std::vector>> _fineGrids; @@ -86,8 +106,19 @@ protected: std::vector>> _coarseCouplers; public: - Grid2D(FunctorPtr>&& domainF, int resolution, RelaxationTime tau, int re); - Grid2D(FunctorPtr>&& domainF, int resolution, LatticeVelocity uMax, int re); + Grid2D(FunctorPtr>&& domainF, + RelaxationTime tau, + int resolution, + Characteristics characteristics); + Grid2D(FunctorPtr>&& domainF, + LatticeVelocity latticeVelocity, + int resolution, + Characteristics characteristics); + + Grid2D(FunctorPtr>&& domainF, RelaxationTime tau, int resolution, int re); + Grid2D(FunctorPtr>&& domainF, LatticeVelocity uMax, int resolution, int re); + + Characteristics getCharacteristics() const; UnitConverter& getConverter(); CuboidGeometry2D& getCuboidGeometry(); @@ -97,6 +128,7 @@ public: Dynamics& addDynamics(std::unique_ptr>&& dynamics); sOnLatticeBoundaryCondition2D& getOnLatticeBoundaryCondition(); + sOffLatticeBoundaryCondition2D& getOffLatticeBoundaryCondition(); void collideAndStream(); -- cgit v1.2.3