Introduction
Introduction Statistics Contact Development Disclaimer Help
tIncreased size of pressure grid, solutions seem wrong - ns2dfd - 2D finite dif…
git clone git://src.adamsgaard.dk/ns2dfd
Log
Files
Refs
LICENSE
---
commit fb42d1dbafff951cfe8ca1a4dc6798e31b59b62b
parent eb664c2b1bdfae1ad3348fae95a81c0c5df27b2b
Author: Anders Damsgaard <[email protected]>
Date: Mon, 3 Mar 2014 18:49:37 +0100
Increased size of pressure grid, solutions seem wrong
Diffstat:
M ns2dfd.py | 10 +++++-----
M src/Makefile | 2 +-
M src/file_io.c | 8 ++++----
M src/main.c | 23 ++++++++++++-----------
M src/utility.c | 8 ++++----
5 files changed, 26 insertions(+), 25 deletions(-)
---
diff --git a/ns2dfd.py b/ns2dfd.py
t@@ -42,7 +42,7 @@ class fluid:
self.ny = numpy.asarray(ny)
self.dx = numpy.asarray(dx)
self.dy = numpy.asarray(dy)
- self.P = numpy.zeros((nx+1, ny+1))
+ self.P = numpy.zeros((nx+2, ny+2))
self.U = numpy.zeros((nx+2, ny+2))
self.V = numpy.zeros((nx+2, ny+2))
t@@ -186,8 +186,8 @@ class fluid:
self.init_grid(dx = self.dx, dy = self.dy,\
nx = self.nx, ny = self.ny)
- for i in range(self.nx+1):
- for j in range(self.ny+1):
+ for i in range(self.nx+2):
+ for j in range(self.ny+2):
self.P[i,j] = \
numpy.fromfile(fh, dtype=numpy.float64, count=1)
t@@ -241,8 +241,8 @@ class fluid:
fh.write(self.nx.astype(numpy.int32))
fh.write(self.ny.astype(numpy.int32))
- for i in range(self.nx+1):
- for j in range(self.ny+1):
+ for i in range(self.nx+2):
+ for j in range(self.ny+2):
fh.write(self.P[i,j].astype(numpy.float64))
for i in range(self.nx+2):
diff --git a/src/Makefile b/src/Makefile
t@@ -1,4 +1,4 @@
-CFLAGS=-Wall -pedantic -g
+CFLAGS=-Wall -pedantic -g -O2
LDLIBS=-lm
BIN=../ns2dfd
diff --git a/src/file_io.c b/src/file_io.c
t@@ -45,8 +45,8 @@ int read_file(char *path,
allocate_memory(P, U, V, *nx, *ny);
- for (i=0; i<*nx+1; i++) {
- for (j=0; j<*ny+1; j++) {
+ for (i=0; i<*nx+2; i++) {
+ for (j=0; j<*ny+2; j++) {
fread(&tmp, sizeof(double), 1, fp);
(*P)[i][j] = tmp;
}
t@@ -113,8 +113,8 @@ int write_file(char *path,
fwrite(nx, sizeof(int), 1, fp);
fwrite(ny, sizeof(int), 1, fp);
- for (i=0; i<*nx+1; i++) {
- for (j=0; j<*ny+1; j++) {
+ for (i=0; i<*nx+2; i++) {
+ for (j=0; j<*ny+2; j++) {
tmp = (*P)[i][j];
fwrite(&tmp, sizeof(double), 1, fp);
}
diff --git a/src/main.c b/src/main.c
t@@ -22,9 +22,10 @@ int main(int argc, char** argv)
double **P, **U, **V;
double **F, **G, **RHS, **RES;
- double dt, res;
+ double dt = 0.0;
+ double res;
long n = 0;
- int it;
+ int it = 0;
int nfile = 0;
double t_file_elapsed = 0.0;
char filename[50];
t@@ -75,10 +76,10 @@ int main(int argc, char** argv)
dot[0] = '\0';
printf("%s: simulation id: `%s`\n", argv[0], simulation_id);
- allocate_matrix(&F, nx+1, ny+1);
- allocate_matrix(&G, nx+1, ny+1);
- allocate_matrix(&RHS, nx+1, ny+1);
- allocate_matrix(&RES, nx+1, ny+1);
+ allocate_matrix(&F, nx+2, ny+2);
+ allocate_matrix(&G, nx+2, ny+2);
+ allocate_matrix(&RHS, nx+2, ny+2);
+ allocate_matrix(&RES, nx+2, ny+2);
while (t <= t_end+dt) {
t@@ -105,7 +106,7 @@ int main(int argc, char** argv)
compute_rhs(RHS, F, G, dt, dx, dy, nx, ny);
it = 0;
- res = 0.0;
+ res = 1.0e9;
while ((it <= itermax) && (res >= epsilon)) {
sor_cycle(P, RHS, omega, nx, ny, dx, dy);
t@@ -124,9 +125,9 @@ int main(int argc, char** argv)
puts("\n");
free_memory(P, U, V, nx);
- free_matrix(&F, nx);
- free_matrix(&G, nx);
- free_matrix(&RHS, nx);
- free_matrix(&RES, nx);
+ free_matrix(&F, nx+2);
+ free_matrix(&G, nx+2);
+ free_matrix(&RHS, nx+2);
+ free_matrix(&RES, nx+2);
return 0;
}
diff --git a/src/utility.c b/src/utility.c
t@@ -27,7 +27,7 @@ void free_matrix(double ***M, int nx)
int allocate_memory(double ***P, double ***U, double ***V, int nx, int ny)
{
- if (allocate_matrix(P, nx+1, ny+1) != 0) {
+ if (allocate_matrix(P, nx+2, ny+2) != 0) {
fprintf(stderr, "allocate_memory: Could not allocate memory for P\n");
return 1;
}
t@@ -44,9 +44,9 @@ int allocate_memory(double ***P, double ***U, double ***V, i…
void free_memory(double **P, double **U, double **V, int nx)
{
- free_matrix(&P, nx);
- free_matrix(&U, nx);
- free_matrix(&V, nx);
+ free_matrix(&P, nx+2);
+ free_matrix(&U, nx+2);
+ free_matrix(&V, nx+2);
}
double max_abs_value(double **M, int nx, int ny)
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.