From 69f40a510a39ba561d290ad07ccbd3f0c3786a7c Mon Sep 17 00:00:00 2001
From: Adrian Kummerlaender
Date: Wed, 16 Jan 2019 15:40:01 +0100
Subject: Restore original bisected poiseuille flow refinement test case
---
apps/adrian/poiseuille2d/poiseuille2d.cpp | 34 +++++++++++++++++++++----------
1 file changed, 23 insertions(+), 11 deletions(-)
(limited to 'apps/adrian')
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
*
@@ -31,15 +31,14 @@
#include
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 coarseOrigin {0.0, 0.0};
- const Vector coarseExtend {lx, ly};
+ const Vector coarseExtend {lx/2, ly};
IndicatorCuboid2D coarseCuboid(coarseExtend, coarseOrigin);
Grid2D coarseGrid(coarseCuboid, N, baseTau, Re);
prepareGeometry(coarseGrid);
- const Vector fineExtend {2.0, 0.5};
- const Vector fineOrigin {1.0, (ly-fineExtend[1])/2};
+ const T coarseDeltaX = coarseGrid.getConverter().getPhysDeltaX();
+
+ const Vector fineExtend {lx/2+coarseDeltaX, ly};
+ const Vector fineOrigin {lx/2-coarseDeltaX, 0.0};
+
+ auto& fineGrid = coarseGrid.refine(fineOrigin, fineExtend, false);
+
+ {
+ const Vector origin = fineGrid.getOrigin();
+ const Vector extend = fineGrid.getExtend();
+
+ const Vector extendY = {0,extend[1]};
+
+ coarseGrid.addFineCoupling(fineGrid, origin, extendY);
+ coarseGrid.addCoarseCoupling(fineGrid, origin + Vector{coarseDeltaX,0}, extendY);
+ }
- auto& fineGrid = coarseGrid.refine(fineOrigin, fineExtend);
prepareGeometry(fineGrid);
auto refinedOverlap = fineGrid.getRefinedOverlap();
--
cgit v1.2.3