Introduction
Introduction Statistics Contact Development Disclaimer Help
tmost file IO works, needs O from c - ns2dfd - 2D finite difference Navier Stok…
git clone git://src.adamsgaard.dk/ns2dfd
Log
Files
Refs
LICENSE
---
commit ec7d202b3fe33c4e0f9838b110c2f75f448837b7
parent 428ee066696d71e182801d30915c3ee16ea06e9b
Author: Anders Damsgaard <[email protected]>
Date: Sun, 2 Mar 2014 19:37:05 +0100
most file IO works, needs O from c
Diffstat:
M ns2dfd.py | 18 +++++++++---------
M src/file_io.c | 26 ++++++++++++++++----------
M src/file_io.h | 2 +-
M src/main.c | 6 ++++--
M src/utility.c | 12 ++++++------
M src/utility.h | 5 +----
6 files changed, 37 insertions(+), 32 deletions(-)
---
diff --git a/ns2dfd.py b/ns2dfd.py
t@@ -41,9 +41,9 @@ 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.u = numpy.zeros((nx+2, ny+2))
- self.v = numpy.zeros((nx+2, ny+2))
+ self.P = numpy.zeros((nx+1, ny+1))
+ self.U = numpy.zeros((nx+2, ny+2))
+ self.V = numpy.zeros((nx+2, ny+2))
def current_time(self, t = 0.0):
'''
t@@ -176,17 +176,17 @@ class fluid:
init_grid(dx = self.dx, dy = self.dy, nx = self.nx, ny = self.ny)
for j in range(self.ny+1):
for i in range(self.nx+1):
- self.p[i,j] = \
+ self.P[i,j] = \
numpy.fromfile(fh, dtype=numpy.float64, count=1)
for j in range(self.ny+2):
for i in range(self.nx+2):
- self.u[i,j] = \
+ self.U[i,j] = \
numpy.fromfile(fh, dtype=numpy.float64, count=1)
for j in range(self.ny+2):
for i in range(self.nx+2):
- self.v[i,j] = \
+ self.V[i,j] = \
numpy.fromfile(fh, dtype=numpy.float64, count=1)
finally:
t@@ -230,15 +230,15 @@ class fluid:
for j in range(self.ny+1):
for i in range(self.nx+1):
- fh.write(self.p[i,j].astype(numpy.float64))
+ fh.write(self.P[i,j].astype(numpy.float64))
for j in range(self.ny+2):
for i in range(self.nx+2):
- fh.write(self.u[i,j].astype(numpy.float64))
+ fh.write(self.U[i,j].astype(numpy.float64))
for j in range(self.ny+2):
for i in range(self.nx+2):
- fh.write(self.v[i,j].astype(numpy.float64))
+ fh.write(self.V[i,j].astype(numpy.float64))
finally:
if fh is not None:
diff --git a/src/file_io.c b/src/file_io.c
t@@ -9,7 +9,7 @@ int read_file(char *path,
int *w_left, int *w_right, int *w_top, int *w_bottom,
double *dx, double *dy,
int *nx, int *ny,
- double **P, double **U, double **V)
+ double ***P, double ***U, double ***V)
{
int i, j;
double tmp;
t@@ -43,20 +43,26 @@ int read_file(char *path,
allocate_memory(P, U, V, *nx, *ny);
- for (j=0; j<*ny+1; j++)
+ for (j=0; j<*ny+1; j++) {
for (i=0; i<*nx+1; i++) {
fread(&tmp, sizeof(double), 1, fp);
- P[i][j] = tmp;
+ (*P)[i][j] = tmp;
}
- /*fread(P[i][j], sizeof(double), 1, fp);*/
+ }
- for (j=0; j<*ny+2; j++)
- for (i=0; i<*nx+2; i++)
- fread(&U[i][j], sizeof(double), 1, fp);
+ for (j=0; j<*ny+2; j++) {
+ for (i=0; i<*nx+2; i++) {
+ fread(&tmp, sizeof(double), 1, fp);
+ (*U)[i][j] = tmp;
+ }
+ }
- for (j=0; j<*ny+2; j++)
- for (i=0; i<*nx+2; i++)
- fread(&V[i][j], sizeof(double), 1, fp);
+ for (j=0; j<*ny+2; j++) {
+ for (i=0; i<*nx+2; i++) {
+ fread(&tmp, sizeof(double), 1, fp);
+ (*V)[i][j] = tmp;
+ }
+ }
fclose(fp);
}
diff --git a/src/file_io.h b/src/file_io.h
t@@ -8,6 +8,6 @@ int read_file(char *path,
int *w_left, int *w_right, int *w_top, int *w_bottom,
double *dx, double *dy,
int *nx, int *ny,
- double **p, double **u, double **v);
+ double ***P, double ***U, double ***V);
#endif
diff --git a/src/main.c b/src/main.c
t@@ -12,11 +12,13 @@ int main(int argc, char** argv)
int w_left, w_right, w_top, w_bottom;
double dx, dy;
int nx, ny;
- double **P, **U, **V;
+ double **P = NULL;
+ double **U = NULL;
+ double **V = NULL;
read_file("unnamed.dat", &t, &t_end, &tau, &itermax, &epsilon, &omega, &ga…
&gx, &gy, &re, &w_left, &w_right, &w_top, &w_bottom,
- &dx, &dy, &nx, &ny, P, U, V);
+ &dx, &dy, &nx, &ny, &P, &U, &V);
printf("omega = %f\n", omega);
printf("P[0][0] = %f\n", P[0][0]);
diff --git a/src/utility.c b/src/utility.c
t@@ -4,12 +4,12 @@
int allocate_matrix(double ***M, int nx, int ny)
{
int i;
- *M = (double**)malloc(sizeof(double*)*nx);
+ (*M) = (double**) malloc(sizeof(double*)*nx);
if (*M == NULL)
return 1;
for (i=0; i<nx; i++) {
- (*M)[i] = (double*)malloc(sizeof(double)*ny);
+ (*M)[i] = (double*) malloc(sizeof(double)*ny);
if ((*M)[i] == NULL)
return 1;
}
t@@ -24,17 +24,17 @@ void free_matrix(double ***M, int nx)
free(*M);
}
-int allocate_memory(double **P, double **U, double **V, int nx, int ny)
+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+1, ny+1) != 0) {
fprintf(stderr, "allocate_memory: Could not allocate memory for P\n");
return 1;
}
- if (allocate_matrix(&U, nx+2, ny+2) != 0) {
+ if (allocate_matrix(U, nx+2, ny+2) != 0) {
fprintf(stderr, "allocate_memory: Could not allocate memory for U\n");
return 1;
}
- if (allocate_matrix(&V, nx+2, ny+2) != 0) {
+ if (allocate_matrix(V, nx+2, ny+2) != 0) {
fprintf(stderr, "allocate_memory: Could not allocate memory for V\n");
return 1;
}
diff --git a/src/utility.h b/src/utility.h
t@@ -1,10 +1,7 @@
#ifndef UTILITY_H_
#define UTILITY_H_
-int allocate_matrix(double ***M, int nx, int ny);
-void free_matrix(double ***M, int nx);
-
-int allocate_memory(double **P, double **U, double **V, int nx, int ny);
+int allocate_memory(double ***P, double ***U, double ***V, int nx, int ny);
void free_memory(double **P, double **U, double **V, int nx);
#endif
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.