summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Kummerlaender2019-01-08 20:58:26 +0100
committerAdrian Kummerlaender2019-06-24 15:16:01 +0200
commit55d840574e71dc4a56a406a71d00b19698ad2791 (patch)
tree30798540295f79a4d4ea1192e31f2c95152dd148
parent4b4887769564bff24783eceaaa69a1d72ebcde32 (diff)
downloadgrid_refinement_openlb-55d840574e71dc4a56a406a71d00b19698ad2791.tar
grid_refinement_openlb-55d840574e71dc4a56a406a71d00b19698ad2791.tar.gz
grid_refinement_openlb-55d840574e71dc4a56a406a71d00b19698ad2791.tar.bz2
grid_refinement_openlb-55d840574e71dc4a56a406a71d00b19698ad2791.tar.lz
grid_refinement_openlb-55d840574e71dc4a56a406a71d00b19698ad2791.tar.xz
grid_refinement_openlb-55d840574e71dc4a56a406a71d00b19698ad2791.tar.zst
grid_refinement_openlb-55d840574e71dc4a56a406a71d00b19698ad2791.zip
Fix, test recursive grid refinement
-rw-r--r--apps/adrian/poiseuille2d/poiseuille2d.cpp41
-rw-r--r--src/refinement/grid2D.hh4
2 files changed, 40 insertions, 5 deletions
diff --git a/apps/adrian/poiseuille2d/poiseuille2d.cpp b/apps/adrian/poiseuille2d/poiseuille2d.cpp
index 20d2585..a6d7bd1 100644
--- a/apps/adrian/poiseuille2d/poiseuille2d.cpp
+++ b/apps/adrian/poiseuille2d/poiseuille2d.cpp
@@ -161,7 +161,7 @@ void getResults(const std::string& prefix,
vtmWriter.createMasterFile();
}
- if (iT%10==0) {
+ if (iT%20==0) {
vtmWriter.write(iT);
}
@@ -220,6 +220,19 @@ int main(int argc, char* argv[])
sOnLatticeBoundaryCondition2D<T, DESCRIPTOR> fineSBoundaryCondition(fineGrid->getSuperLattice());
createLocalBoundaryCondition2D<T, DESCRIPTOR>(fineSBoundaryCondition);
+ const Vector<T,2> wantedFineExtend2 {0.4, 0.4};
+ const Vector<T,2> fineOrigin2 = fineGrid->alignToGrid({1.05, (ly-wantedFineExtend2[1])/2});
+ const Vector<T,2> fineExtend2 = fineGrid->alignToGrid(fineOrigin2 + wantedFineExtend2) - fineOrigin2;
+
+ auto fineGrid2 = &fineGrid->refine(fineOrigin2, fineExtend2);
+ prepareGeometry(fineGrid2->getConverter(), fineGrid2->getSuperGeometry());
+
+ const T fine2DeltaX = fineGrid->getConverter().getPhysDeltaX();
+
+ IndicatorCuboid2D<T> refinedOverlap2(fineExtend2 - 4*fine2DeltaX, fineOrigin2 + 2*fine2DeltaX);
+ fineGrid->getSuperGeometry().rename(1,0,refinedOverlap2);
+ fineGrid->getSuperGeometry().rename(2,0,refinedOverlap2);
+
prepareLattice(
fineGrid->getConverter(),
fineGrid->getSuperLattice(),
@@ -227,12 +240,26 @@ int main(int argc, char* argv[])
fineSBoundaryCondition,
fineGrid->getSuperGeometry());
+ BGKdynamics<T, DESCRIPTOR> fineBulkDynamics2(
+ fineGrid2->getConverter().getLatticeRelaxationFrequency(),
+ instances::getBulkMomenta<T, DESCRIPTOR>());
+
+ sOnLatticeBoundaryCondition2D<T, DESCRIPTOR> fineSBoundaryCondition2(fineGrid2->getSuperLattice());
+ createLocalBoundaryCondition2D<T, DESCRIPTOR>(fineSBoundaryCondition2);
+
+ prepareLattice(
+ fineGrid2->getConverter(),
+ fineGrid2->getSuperLattice(),
+ fineBulkDynamics2,
+ fineSBoundaryCondition2,
+ fineGrid2->getSuperGeometry());
+
clout << "starting simulation..." << endl;
Timer<T> timer(
coarseGrid->getConverter().getLatticeTime(maxPhysT),
coarseGrid->getSuperGeometry().getStatistics().getNvoxel());
util::ValueTracer<T> converge(
- fineGrid->getConverter().getLatticeTime(physInterval),
+ fineGrid2->getConverter().getLatticeTime(physInterval),
residuum);
timer.start();
@@ -260,8 +287,16 @@ int main(int argc, char* argv[])
fineGrid->getSuperGeometry(),
timer,
converge.hasConverged());
+ getResults(
+ "fine2_",
+ fineGrid2->getSuperLattice(),
+ fineGrid2->getConverter(),
+ iT,
+ fineGrid2->getSuperGeometry(),
+ timer,
+ converge.hasConverged());
- converge.takeValue(fineGrid->getSuperLattice().getStatistics().getAverageEnergy(), true);
+ converge.takeValue(fineGrid2->getSuperLattice().getStatistics().getAverageEnergy(), true);
}
timer.stop();
diff --git a/src/refinement/grid2D.hh b/src/refinement/grid2D.hh
index d609746..71b943e 100644
--- a/src/refinement/grid2D.hh
+++ b/src/refinement/grid2D.hh
@@ -120,7 +120,7 @@ void Grid2D<T,DESCRIPTOR>::collideAndStream()
this->getSuperLattice().collideAndStream();
for ( auto& fineGrid : _fineGrids ) {
- fineGrid->getSuperLattice().collideAndStream();
+ fineGrid->collideAndStream();
}
for ( auto& fineCoupler : _fineCouplers ) {
@@ -129,7 +129,7 @@ void Grid2D<T,DESCRIPTOR>::collideAndStream()
}
for ( auto& fineGrid : _fineGrids ) {
- fineGrid->getSuperLattice().collideAndStream();
+ fineGrid->collideAndStream();
}
for ( auto& fineCoupler : _fineCouplers ) {