postProcess/getData_02.c
// get data
#include “axi.h” #include “navier-stokes/centered.h” #include “fractions.h”
char filename[80]; int nx, ny, len; double xmin, ymin, xmax, ymax, Deltax, Deltay, Oh = 0.; scalar f[], D2c[], vel[], rhov[]; scalar *list = NULL;
int main(int a, char const *arguments[]) { sprintf(filename, “%s”, arguments[1]); xmin = atof(arguments[2]); ymin = atof(arguments[3]); xmax = atof(arguments[4]); ymax = atof(arguments[5]); ny = atoi(arguments[6]); Oh = atof(arguments[7]);
list = list_add(list, D2c);
list = list_add(list, vel);
list = list_add(list, u.x);
list = list_add(list, u.y);
// boundary conditions
u.n[right] = neumann(0.);
p[right] = dirichlet(0.);
restore(file = filename);
f.prolongation = fraction_refine;
boundary((scalar *){f, u.x, u.y});
foreach ()
{
double D11 = (u.y[0, 1] - u.y[0, -1]) / (2 * Delta);
double D22 = (u.y[] / y);
double D33 = (u.x[1, 0] - u.x[-1, 0]) / (2 * Delta);
double D13 = 0.5 * ((u.y[1, 0] - u.y[-1, 0] + u.x[0, 1] - u.x[0, -1]) / (2 * Delta));
double D2 = (sq(D11) + sq(D22) + sq(D33) + 2.0 * sq(D13));
D2c[] = 2 * (clamp(f[], 0., 1.) * (Oh - 2e-2 * Oh) + 2e-2 * Oh) * D2;
D2c[] = (D2c[] > 0.) ? log(D2c[]) / log(10) : -10;
// vel[] = clamp(f[], 0., 1.)*(sqrt(sq(u.x[]) + sq(u.y[])));
vel[] = clamp(f[], 0., 1.-1e-6);
}
boundary((scalar *){D2c, vel});
FILE *fp = ferr;
Deltay = (double)(ymax - ymin) / (ny);
nx = (int)(xmax - xmin) / Deltay;
Deltax = (double)(xmax - xmin) / (nx);
len = list_len(list);
double **field = (double **)matrix_new(nx, ny + 1, len * sizeof(double));
for (int i = 0; i < nx; i++)
{
double x = Deltax * (i + 0.5) + xmin;
for (int j = 0; j < ny; j++)
{
double y = Deltay * (j + 0.5) + ymin;
int k = 0;
for (scalar s in list)
{
field[i][len * j + k++] = interpolate(s, x, y);
}
}
}
for (int i = 0; i < nx; i++)
{
double x = Deltax * (i + 0.5) + xmin;
for (int j = 0; j < ny; j++)
{
double y = Deltay * (j + 0.5) + ymin;
fprintf(fp, "%g %g", x, y);
int k = 0;
for (scalar s in list)
{
fprintf(fp, " %g", field[i][len * j + k++]);
}
fputc('\n', fp);
}
}
fflush(fp);
fclose(fp);
matrix_free(field);}