summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/adrian/poiseuille2d/poiseuille2d.cpp34
1 files changed, 23 insertions, 11 deletions
diff --git a/apps/adrian/poiseuille2d/poiseuille2d.cpp b/apps/adrian/poiseuille2d/poiseuille2d.cpp
index b6c2f52..d92934b 100644
--- a/apps/adrian/poiseuille2d/poiseuille2d.cpp
+++ b/apps/adrian/poiseuille2d/poiseuille2d.cpp
@@ -1,8 +1,8 @@
-/* Lattice Boltzmann sample, written in C++, using the OpenLB
- * library
+/*
+ * Lattice Boltzmann grid refinement sample, written in C++,
+ * using the OpenLB library
*
- * Copyright (C) 2007, 2012 Jonas Latt, Mathias J. Krause
- * Vojtech Cvrcek, Peter Weisbrod
+ * Copyright (C) 2019 Adrian Kummerländer
* E-mail contact: info@openlb.net
* The most recent release of OpenLB can be downloaded at
* <http://www.openlb.net/>
@@ -31,15 +31,14 @@
#include <vector>
using namespace olb;
-using namespace olb::descriptors;
typedef double T;
-#define DESCRIPTOR D2Q9Descriptor
+#define DESCRIPTOR descriptors::D2Q9Descriptor
const T lx = 4.0; // length of the channel
const T ly = 1.0; // height of the channel
-const int N = 50; // resolution of the model
+const int N = 30; // resolution of the model
const T Re = 100.; // Reynolds number
const T baseTau = 0.8; // Relaxation time of coarsest grid
const T maxPhysT = 60.; // max. simulation time in s, SI unit
@@ -182,16 +181,29 @@ int main(int argc, char* argv[])
OstreamManager clout(std::cout,"main");
const Vector<T,2> coarseOrigin {0.0, 0.0};
- const Vector<T,2> coarseExtend {lx, ly};
+ const Vector<T,2> coarseExtend {lx/2, ly};
IndicatorCuboid2D<T> coarseCuboid(coarseExtend, coarseOrigin);
Grid2D<T,DESCRIPTOR> coarseGrid(coarseCuboid, N, baseTau, Re);
prepareGeometry(coarseGrid);
- const Vector<T,2> fineExtend {2.0, 0.5};
- const Vector<T,2> fineOrigin {1.0, (ly-fineExtend[1])/2};
+ const T coarseDeltaX = coarseGrid.getConverter().getPhysDeltaX();
+
+ const Vector<T,2> fineExtend {lx/2+coarseDeltaX, ly};
+ const Vector<T,2> fineOrigin {lx/2-coarseDeltaX, 0.0};
+
+ auto& fineGrid = coarseGrid.refine(fineOrigin, fineExtend, false);
+
+ {
+ const Vector<T,2> origin = fineGrid.getOrigin();
+ const Vector<T,2> extend = fineGrid.getExtend();
+
+ const Vector<T,2> extendY = {0,extend[1]};
+
+ coarseGrid.addFineCoupling(fineGrid, origin, extendY);
+ coarseGrid.addCoarseCoupling(fineGrid, origin + Vector<T,2>{coarseDeltaX,0}, extendY);
+ }
- auto& fineGrid = coarseGrid.refine(fineOrigin, fineExtend);
prepareGeometry(fineGrid);
auto refinedOverlap = fineGrid.getRefinedOverlap();