summaryrefslogtreecommitdiff
path: root/src/refinement/grid2D.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/refinement/grid2D.h')
-rw-r--r--src/refinement/grid2D.h36
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();