| 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) |