00001
00002
00003
00004 #include <malloc.h>
00005 #include "utilf.h"
00006 #include "markers.h"
00007 #include "save.h"
00008 #include "inout.h"
00009
00010
00011 void iniget(real2D u, real2D v, real2D c, real2D p,
00012 interface **inter,
00013 int *nin,
00014 real *po, real *vo, real *t, real *pext,
00015 real *tau, int nx, int ny, char *fname)
00016 {
00017 int i;
00018 FILE *fptr;
00019
00020 if (!(fptr = fopen(fname, "rb"))) {
00021 printf("iniget: can not open file `%s'\n", fname);
00022 exit(1);
00023 }
00024 fread(&(u[1][1]), sizeof(real), (nx + 1) * ny, fptr);
00025 fread(&(v[1][1]), sizeof(real), nx * (ny + 1), fptr);
00026 fread(&(c[1][1]), sizeof(real), nx * ny, fptr);
00027 fread(&(p[1][1]), sizeof(real), nx * ny, fptr);
00028 fread(nin, sizeof(int), 1, fptr);
00029 *inter = (interface *)malloc(sizeof(interface) * *nin);
00030 for (i = 0; i < *nin; i++) {
00031 fread(&((*inter)[i].n), sizeof(int), 1, fptr);
00032 printf("%d: %d markers\n", i, (*inter)[i].n);
00033 (*inter)[i].x = (real *)malloc((*inter)[i].n * sizeof(real));
00034 (*inter)[i].y = (real *)malloc((*inter)[i].n * sizeof(real));
00035 (*inter)[i].t = (real *)malloc((*inter)[i].n * sizeof(real));
00036 (*inter)[i].spx = (polynom3 *)malloc(((*inter)[i].n - 1)
00037 * sizeof(polynom3));
00038 (*inter)[i].spy = (polynom3 *)malloc(((*inter)[i].n - 1)
00039 * sizeof(polynom3));
00040 fread((*inter)[i].x, sizeof(real), (*inter)[i].n, fptr);
00041 fread((*inter)[i].y, sizeof(real), (*inter)[i].n, fptr);
00042 fread(&((*inter[i]).bc), sizeof(char), 1, fptr);
00043 }
00044 fread(po, sizeof(real), 1, fptr);
00045 fread(vo, sizeof(real), 1, fptr);
00046 fread(t, sizeof(real), 1, fptr);
00047 fread(pext, sizeof(real), 1, fptr);
00048 fread(tau, sizeof(real), 1, fptr);
00049 fclose(fptr);
00050 }
00051
00052
00053 void save(real2D u, real2D v, real2D c, real2D p,
00054 interface *inter, int nin,
00055 real po, real vo, real t, real pext,
00056 real tau, int nx, int ny, char *fname)
00057 {
00058 int i;
00059 FILE *fptr;
00060
00061 if (!(fptr = fopen(fname, "wb"))) {
00062 printf("save: can not open file `%s'\n", fname);
00063 exit(1);
00064 }
00065 fwrite(&(u[1][1]), sizeof(real), (nx + 1) * ny, fptr);
00066 fwrite(&(v[1][1]), sizeof(real), nx * (ny + 1), fptr);
00067 fwrite(&(c[1][1]), sizeof(real), nx * ny, fptr);
00068 fwrite(&(p[1][1]), sizeof(real), nx * ny, fptr);
00069 fwrite(&nin, sizeof(int), 1, fptr);
00070 for (i = 0; i < nin; i++) {
00071 fwrite(&(inter[i].n), sizeof(int), 1, fptr);
00072 fwrite(inter[i].x, sizeof(real), inter[i].n, fptr);
00073 fwrite(inter[i].y, sizeof(real), inter[i].n, fptr);
00074 fwrite(&(inter[i].bc), sizeof(char), 1, fptr);
00075 }
00076 fwrite(&po, sizeof(real), 1, fptr);
00077 fwrite(&vo, sizeof(real), 1, fptr);
00078 fwrite(&t, sizeof(real), 1, fptr);
00079 fwrite(&pext, sizeof(real), 1, fptr);
00080 fwrite(&tau, sizeof(real), 1, fptr);
00081 fclose(fptr);
00082 }
00083
00084
00085
00086
00087
00088