tAdded Courant criteria for ensuring numerical stability - lbm-d3q19 - 3D latti… | |
git clone git://src.adamsgaard.dk/lbm-d3q19 | |
Log | |
Files | |
Refs | |
LICENSE | |
--- | |
commit 1e0a6e6406bfb66a9c64fb94e8370ea2513ecea7 | |
parent 432185412169f2d169eaec398cfa9154642e4bd2 | |
Author: Anders Damsgaard <[email protected]> | |
Date: Tue, 25 Jun 2013 12:33:55 +0200 | |
Added Courant criteria for ensuring numerical stability | |
Diffstat: | |
M lbm.c | 16 +++++++++++++++- | |
1 file changed, 15 insertions(+), 1 deletion(-) | |
--- | |
diff --git a/lbm.c b/lbm.c | |
t@@ -3,7 +3,6 @@ | |
#include <math.h> | |
// Courant kriterie for tidsskridt | |
-// Check for LBM stability criteria | |
// No slip top og bund | |
// Periodiske sider | |
t@@ -64,6 +63,9 @@ const Float rho0 = 1.0; | |
// Inital cell fluid velocity (dimensionless) | |
const Float3 u0 = {0.0, 0.0, 0.0}; | |
+// Courant criteria limit | |
+const Float C_max = 1.0; | |
+ | |
//// FUNCTION DEFINITIONS | |
t@@ -254,6 +256,18 @@ Float3 find_u( | |
u.y += f_i*e[i].y/rho; | |
u.z += f_i*e[i].z/rho; | |
} | |
+ | |
+ // Check the Courant-Frederichs-Lewy condition | |
+ if ((u.x*dt/dx + u.y*dt/dx + u.z*dt/dx) > C_max) { | |
+ fprintf(stderr, "Error, the Courant-Friderichs-Lewy condition is not "… | |
+ fprintf(stderr, "satisfied.\nTry one or more of the following:\n"); | |
+ fprintf(stderr, "- Decrease the timestep (dt)\n"); | |
+ fprintf(stderr, "- Increase the cell size (dx)\n"); | |
+ fprintf(stderr, "- Decrease the fluid viscosity (nu)\n"); | |
+ fprintf(stderr, "- Decrease the fluid density (rho)\n"); | |
+ exit(EXIT_FAILURE); | |
+ } | |
+ | |
return u; | |
} | |