Introduction
Introduction Statistics Contact Development Disclaimer Help
tMerge branch 'master' of github.com:anders-dc/lbm-d3q19 - lbm-d3q19 - 3D latti…
git clone git://src.adamsgaard.dk/lbm-d3q19
Log
Files
Refs
LICENSE
---
commit bbd7958b3e9bca800e6af752613d2d2afe2e45e2
parent 7686c38cd9015de88f6cf34e01451cfe5884d341
Author: Anders Damsgaard <[email protected]>
Date: Sat, 7 Sep 2019 06:51:40 +0200
Merge branch 'master' of github.com:anders-dc/lbm-d3q19
Diffstat:
M Makefile | 2 +-
M lbm.c | 57 ++++++++++++++++-------------…
2 files changed, 31 insertions(+), 28 deletions(-)
---
diff --git a/Makefile b/Makefile
t@@ -1,4 +1,4 @@
-CFLAGS=-g -Wall -pg -O2 -fopenmp
+CFLAGS=-Wall -O2 -fopenmp -march=native -funroll-loops #-g -pg
LDLIBS=-lm
BIN=lbm
diff --git a/lbm.c b/lbm.c
t@@ -85,19 +85,19 @@ Float tau(void) {
// Get i-th value from cell x,y,z
unsigned int idx(
- unsigned int x,
- unsigned int y,
- unsigned int z)
+ const unsigned int x,
+ const unsigned int y,
+ const unsigned int z)
{
return x + nx*y + nx*ny*z;
}
// Get i-th value from cell x,y,z
unsigned int idxi(
- unsigned int x,
- unsigned int y,
- unsigned int z,
- unsigned int i)
+ const unsigned int x,
+ const unsigned int y,
+ const unsigned int z,
+ const unsigned int i)
{
return x + ((y + z*ny)*nx) + (nx*ny*nz*i);
}
t@@ -222,10 +222,10 @@ Float bgk(
// Cell fluid density
Float find_rho(
- Float* f,
- unsigned int x,
- unsigned int y,
- unsigned int z)
+ const Float* f,
+ const unsigned int x,
+ const unsigned int y,
+ const unsigned int z)
{
int i;
Float rho = 0.0;
t@@ -236,17 +236,16 @@ Float find_rho(
// Cell fluid velocity
Float3 find_u(
- Float* f,
- Float rho,
- Float3* e,
- unsigned int x,
- unsigned int y,
- unsigned int z)
+ const Float* f,
+ const Float rho,
+ const Float3* e,
+ const unsigned int x,
+ const unsigned int y,
+ const unsigned int z)
{
Float3 u = {0.0, 0.0, 0.0};
Float f_i;
unsigned int i;
-//#pragma omp parallel for private(f_i,u)
for (i=0; i<m; i++) {
f_i = f[idxi(x,y,z,i)];
u.x += f_i*e[i].x/rho;
t@@ -270,19 +269,23 @@ Float3 find_u(
// Lattice-Boltzmann collision step.
// Fluid distributions are modified towards the cell equilibrium.
-// Values are read from f, and written to rho and u.
+// Values are read from f, and written to f, rho, and u.
void collide(
Float* f,
Float* rho,
Float3* u,
- Float3* e)
+ const Float3* e)
{
unsigned int x, y, z, i;
Float rho_new;
Float3 u_new;
- // Parallelize this with OpenMP
// For each cell
+/*#pragma omp parallel for default(none) \
+ private(x, y, z, rho_new, u_new, i) \
+ firstprivate(e) \
+ shared(f, rho, u) \
+ schedule(dynamic)*/
for (z=0; z<nz; z++) {
for (y=0; y<ny; y++) {
for (x=0; x<nx; x++) {
t@@ -292,15 +295,15 @@ void collide(
u_new = find_u(f, rho_new, e, x, y, z);
// Store macroscopic parameters
- rho[idx(x,y,z)] = rho_new;
- u[idx(x,y,z)] = u_new;
+ int idx_ = idx(x,y,z);
+ rho[idx_] = rho_new;
+ u[idx_] = u_new;
// Find new f values by fluid particle collision
-//#pragma omp parallel for
for (i=0; i<m; i++) {
- f[idxi(x,y,z,i)] =
- bgk(f[idxi(x,y,z,i)], tau(), rho_new,
- w(i), e[i], u_new);
+ int idxi_ = idxi(x,y,z,i);
+ f[idxi_] = bgk(f[idxi_], tau(), rho_new,
+ w(i), e[i], u_new);
}
}
}
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.