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/poiseuille2d') 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