summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/adrian/poiseuille2d/poiseuille2d.cpp84
-rw-r--r--src/refinement/coupler2D.hh6
-rw-r--r--src/refinement/grid2D.h2
-rw-r--r--src/refinement/grid2D.hh16
4 files changed, 48 insertions, 60 deletions
diff --git a/apps/adrian/poiseuille2d/poiseuille2d.cpp b/apps/adrian/poiseuille2d/poiseuille2d.cpp
index 3d263fa..8b8640e 100644
--- a/apps/adrian/poiseuille2d/poiseuille2d.cpp
+++ b/apps/adrian/poiseuille2d/poiseuille2d.cpp
@@ -186,114 +186,114 @@ int main(int argc, char* argv[])
const Vector<T,2> coarseExtend {lx, ly};
IndicatorCuboid2D<T> coarseCuboid(coarseExtend, coarseOrigin);
- auto coarseGrid = Grid2D<T,DESCRIPTOR>::make(coarseCuboid, N, baseTau, Re);
- prepareGeometry(coarseGrid->getConverter(), coarseGrid->getSuperGeometry());
+ Grid2D<T,DESCRIPTOR> coarseGrid(coarseCuboid, N, baseTau, Re);
+ prepareGeometry(coarseGrid.getConverter(), coarseGrid.getSuperGeometry());
const Vector<T,2> fineExtend {3.0, 1.5};
const Vector<T,2> fineOrigin {0.8, (ly-fineExtend[1])/2};
- auto fineGrid = &coarseGrid->refine(fineOrigin, fineExtend);
- prepareGeometry(fineGrid->getConverter(), fineGrid->getSuperGeometry());
+ auto& fineGrid = coarseGrid.refine(fineOrigin, fineExtend);
+ prepareGeometry(fineGrid.getConverter(), fineGrid.getSuperGeometry());
- auto refinedOverlap = fineGrid->getRefinedOverlap();
- coarseGrid->getSuperGeometry().rename(1,0,*refinedOverlap);
- coarseGrid->getSuperGeometry().rename(2,0,*refinedOverlap);
+ auto refinedOverlap = fineGrid.getRefinedOverlap();
+ coarseGrid.getSuperGeometry().rename(1,0,*refinedOverlap);
+ coarseGrid.getSuperGeometry().rename(2,0,*refinedOverlap);
BGKdynamics<T, DESCRIPTOR> coarseBulkDynamics(
- coarseGrid->getConverter().getLatticeRelaxationFrequency(),
+ coarseGrid.getConverter().getLatticeRelaxationFrequency(),
instances::getBulkMomenta<T, DESCRIPTOR>());
- sOnLatticeBoundaryCondition2D<T, DESCRIPTOR> coarseSBoundaryCondition(coarseGrid->getSuperLattice());
+ sOnLatticeBoundaryCondition2D<T, DESCRIPTOR> coarseSBoundaryCondition(coarseGrid.getSuperLattice());
createLocalBoundaryCondition2D<T, DESCRIPTOR>(coarseSBoundaryCondition);
prepareLattice(
- coarseGrid->getConverter(),
- coarseGrid->getSuperLattice(),
+ coarseGrid.getConverter(),
+ coarseGrid.getSuperLattice(),
coarseBulkDynamics,
coarseSBoundaryCondition,
- coarseGrid->getSuperGeometry());
+ coarseGrid.getSuperGeometry());
BGKdynamics<T, DESCRIPTOR> fineBulkDynamics(
- fineGrid->getConverter().getLatticeRelaxationFrequency(),
+ fineGrid.getConverter().getLatticeRelaxationFrequency(),
instances::getBulkMomenta<T, DESCRIPTOR>());
- sOnLatticeBoundaryCondition2D<T, DESCRIPTOR> fineSBoundaryCondition(fineGrid->getSuperLattice());
+ sOnLatticeBoundaryCondition2D<T, DESCRIPTOR> fineSBoundaryCondition(fineGrid.getSuperLattice());
createLocalBoundaryCondition2D<T, DESCRIPTOR>(fineSBoundaryCondition);
const Vector<T,2> fineExtend2 {0.6, 0.4};
const Vector<T,2> fineOrigin2 {1.05, (ly-fineExtend2[1])/2};
- auto fineGrid2 = &fineGrid->refine(fineOrigin2, fineExtend2);
- prepareGeometry(fineGrid2->getConverter(), fineGrid2->getSuperGeometry());
+ auto& fineGrid2 = fineGrid.refine(fineOrigin2, fineExtend2);
+ prepareGeometry(fineGrid2.getConverter(), fineGrid2.getSuperGeometry());
- auto refinedOverlap2 = fineGrid2->getRefinedOverlap();
- fineGrid->getSuperGeometry().rename(1,0,*refinedOverlap2);
- fineGrid->getSuperGeometry().rename(2,0,*refinedOverlap2);
+ auto refinedOverlap2 = fineGrid2.getRefinedOverlap();
+ fineGrid.getSuperGeometry().rename(1,0,*refinedOverlap2);
+ fineGrid.getSuperGeometry().rename(2,0,*refinedOverlap2);
prepareLattice(
- fineGrid->getConverter(),
- fineGrid->getSuperLattice(),
+ fineGrid.getConverter(),
+ fineGrid.getSuperLattice(),
fineBulkDynamics,
fineSBoundaryCondition,
- fineGrid->getSuperGeometry());
+ fineGrid.getSuperGeometry());
BGKdynamics<T, DESCRIPTOR> fineBulkDynamics2(
- fineGrid2->getConverter().getLatticeRelaxationFrequency(),
+ fineGrid2.getConverter().getLatticeRelaxationFrequency(),
instances::getBulkMomenta<T, DESCRIPTOR>());
- sOnLatticeBoundaryCondition2D<T, DESCRIPTOR> fineSBoundaryCondition2(fineGrid2->getSuperLattice());
+ sOnLatticeBoundaryCondition2D<T, DESCRIPTOR> fineSBoundaryCondition2(fineGrid2.getSuperLattice());
createLocalBoundaryCondition2D<T, DESCRIPTOR>(fineSBoundaryCondition2);
prepareLattice(
- fineGrid2->getConverter(),
- fineGrid2->getSuperLattice(),
+ fineGrid2.getConverter(),
+ fineGrid2.getSuperLattice(),
fineBulkDynamics2,
fineSBoundaryCondition2,
- fineGrid2->getSuperGeometry());
+ fineGrid2.getSuperGeometry());
clout << "starting simulation..." << endl;
Timer<T> timer(
- coarseGrid->getConverter().getLatticeTime(maxPhysT),
- coarseGrid->getSuperGeometry().getStatistics().getNvoxel());
+ coarseGrid.getConverter().getLatticeTime(maxPhysT),
+ coarseGrid.getSuperGeometry().getStatistics().getNvoxel());
util::ValueTracer<T> converge(
- fineGrid2->getConverter().getLatticeTime(physInterval),
+ fineGrid2.getConverter().getLatticeTime(physInterval),
residuum);
timer.start();
- for (int iT = 0; iT < coarseGrid->getConverter().getLatticeTime(maxPhysT); ++iT) {
+ for (int iT = 0; iT < coarseGrid.getConverter().getLatticeTime(maxPhysT); ++iT) {
if (converge.hasConverged()) {
clout << "Simulation converged." << endl;
break;
}
- coarseGrid->collideAndStream();
+ coarseGrid.collideAndStream();
getResults(
"coarse_",
- coarseGrid->getSuperLattice(),
- coarseGrid->getConverter(),
+ coarseGrid.getSuperLattice(),
+ coarseGrid.getConverter(),
iT,
- coarseGrid->getSuperGeometry(),
+ coarseGrid.getSuperGeometry(),
timer,
converge.hasConverged());
getResults(
"fine_",
- fineGrid->getSuperLattice(),
- fineGrid->getConverter(),
+ fineGrid.getSuperLattice(),
+ fineGrid.getConverter(),
iT,
- fineGrid->getSuperGeometry(),
+ fineGrid.getSuperGeometry(),
timer,
converge.hasConverged());
getResults(
"fine2_",
- fineGrid2->getSuperLattice(),
- fineGrid2->getConverter(),
+ fineGrid2.getSuperLattice(),
+ fineGrid2.getConverter(),
iT,
- fineGrid2->getSuperGeometry(),
+ fineGrid2.getSuperGeometry(),
timer,
converge.hasConverged());
- converge.takeValue(fineGrid2->getSuperLattice().getStatistics().getAverageEnergy(), true);
+ converge.takeValue(fineGrid2.getSuperLattice().getStatistics().getAverageEnergy(), true);
}
timer.stop();
diff --git a/src/refinement/coupler2D.hh b/src/refinement/coupler2D.hh
index 1d773f3..3bd2b2f 100644
--- a/src/refinement/coupler2D.hh
+++ b/src/refinement/coupler2D.hh
@@ -75,7 +75,7 @@ Coupler2D<T,DESCRIPTOR>::Coupler2D(Grid2D<T,DESCRIPTOR>& coarse, Grid2D<T,DESCRI
_physOrigin = coarseGeometry.getPhysR(tmpLatticeOrigin.toStdVector());
const T deltaX = _fine.getConverter().getPhysDeltaX();
- const Vector<T,2> stepPhysR = _vertical ? Vector<T,2>{0, deltaX} : Vector<T,2>{deltaX, 0};
+ const Vector<T,2> stepPhysR = _vertical ? Vector<T,2> {0, deltaX} : Vector<T,2> {deltaX, 0};
for (int i=0; i < _fineSize; ++i) {
if (i % 2 == 0) {
@@ -186,7 +186,7 @@ void FineCoupler2D<T,DESCRIPTOR>::couple()
Cell<T,DESCRIPTOR> cell;
fineLattice.get(finePos, cell);
for (int iPop=0; iPop < DESCRIPTOR<T>::q; ++iPop) {
- cell[iPop] = fEq[iPop] + this->getScalingFactor() * _c2f_fneq[y][iPop];
+ cell[iPop] = fEq[iPop] + this->getScalingFactor() * _c2f_fneq[y][iPop];
}
fineLattice.set(finePos, cell);
}
@@ -309,7 +309,7 @@ void computeRestrictedFneq(const SuperLattice2D<T,DESCRIPTOR>& lattice,
T restrictedFneq[DESCRIPTOR<T>::q])
{
for (int iPop=0; iPop < DESCRIPTOR<T>::q; ++iPop) {
- const auto neighbor = latticeR + Vector<int,3>{0, DESCRIPTOR<T>::c[iPop][0], DESCRIPTOR<T>::c[iPop][1]};
+ const auto neighbor = latticeR + Vector<int,3> {0, DESCRIPTOR<T>::c[iPop][0], DESCRIPTOR<T>::c[iPop][1]};
Cell<T,DESCRIPTOR> cell;
lattice.get(neighbor, cell);
diff --git a/src/refinement/grid2D.h b/src/refinement/grid2D.h
index d782651..9a20544 100644
--- a/src/refinement/grid2D.h
+++ b/src/refinement/grid2D.h
@@ -60,8 +60,6 @@ protected:
std::vector<std::unique_ptr<CoarseCoupler2D<T,DESCRIPTOR>>> _coarseCouplers;
public:
- static std::unique_ptr<Grid2D<T,DESCRIPTOR>> make(IndicatorF2D<T>& domainF, int resolution, T tau, int re);
-
Grid2D(FunctorPtr<IndicatorF2D<T>>&& domainF, int resolution, T tau, int re);
UnitConverter<T,DESCRIPTOR>& getConverter();
diff --git a/src/refinement/grid2D.hh b/src/refinement/grid2D.hh
index aa82240..02fe351 100644
--- a/src/refinement/grid2D.hh
+++ b/src/refinement/grid2D.hh
@@ -34,16 +34,6 @@ namespace olb {
template <typename T, template<typename> class DESCRIPTOR>
-std::unique_ptr<Grid2D<T,DESCRIPTOR>> Grid2D<T,DESCRIPTOR>::make(
- IndicatorF2D<T>& domainF,
- int resolution, T tau, int re)
-{
- return std::unique_ptr<Grid2D<T,DESCRIPTOR>>(
- new Grid2D<T,DESCRIPTOR>(domainF, resolution, tau, re)
- );
-}
-
-template <typename T, template<typename> class DESCRIPTOR>
Grid2D<T,DESCRIPTOR>::Grid2D(FunctorPtr<IndicatorF2D<T>>&& domainF, int resolution, T tau, int re):
_domainF(std::move(domainF)),
_converter(new UnitConverterFromResolutionAndRelaxationTime<T,DESCRIPTOR>(
@@ -62,7 +52,7 @@ Grid2D<T,DESCRIPTOR>::Grid2D(FunctorPtr<IndicatorF2D<T>>&& domainF, int resoluti
#else
1
#endif
- )),
+ )),
_balancer(new HeuristicLoadBalancer<T>(
*_cuboids)),
_geometry(new SuperGeometry2D<T>(
@@ -191,7 +181,7 @@ RefiningGrid2D<T,DESCRIPTOR>& Grid2D<T,DESCRIPTOR>::refine(
addFineCoupling(fineGrid, origin, extendX);
const T coarseDeltaX = getConverter().getPhysDeltaX();
- const Vector<T,2> innerOrigin = origin + coarseDeltaX;
+ const Vector<T,2> innerOrigin = origin + coarseDeltaX;
const Vector<T,2> innerExtendX = extendX - Vector<T,2> {2*coarseDeltaX,0};
const Vector<T,2> innerExtendY = extendY - Vector<T,2> {0,2*coarseDeltaX};
@@ -244,7 +234,7 @@ std::unique_ptr<IndicatorF2D<T>> RefiningGrid2D<T,DESCRIPTOR>::getRefinedOverlap
const T coarseDeltaX = _parentGrid.getConverter().getPhysDeltaX();
return std::unique_ptr<IndicatorF2D<T>>(
- new IndicatorCuboid2D<T>(_extend - 4*coarseDeltaX, _origin + 2*coarseDeltaX));
+ new IndicatorCuboid2D<T>(_extend - 4*coarseDeltaX, _origin + 2*coarseDeltaX));
}
}