Main Page   Data Structures   File List   Data Fields   Globals  

printxplot.c File Reference

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "utilf.h"
#include "markers.h"
#include "xfig.h"
#include "printxplot.h"
#include "inout.h"

Include dependency graph for printxplot.c:

Include dependency graph

Go to the source code of this file.

Functions

void printxpl (real2D u, real2D v, real2D c, real2D p, int nx, int ny, real tau, real du, real dp, char *fname)
void datbarray (real2D a, int nx, int ny, char *name)
void datbvector (real2D u, real2D a, real2D v, real2D c, int nx, int ny, char *name)
void gnuvectors (real2D u, real2D a, real2D v, real2D c, int nx, int ny, char *name)


Function Documentation

void datbarray real2D    a,
int    nx,
int    ny,
char *    name
 

Definition at line 75 of file printxplot.c.

References real2D.

Referenced by adaptative_tau(), and pressure().

00076 {
00077   int i, j;
00078   FILE *fptr;
00079   char fname[256];
00080   float val;
00081 
00082   sprintf(fname, "%s.datb", name);
00083   fptr = fopen(fname, "wt");
00084   fwrite(&nx, sizeof(int), 1, fptr);
00085   fwrite(&ny, sizeof(int), 1, fptr);
00086   i = 1;
00087   fwrite(&i, sizeof(int), 1, fptr);
00088   fwrite(&i, sizeof(int), 1, fptr);
00089   strcpy(fname, "val");
00090   fwrite((char *) fname, sizeof(char), 256, fptr);
00091   for (i = 1; i <= nx; i++)
00092     for (j = 1; j <= ny; j++)
00093       {
00094         val = a[i][j];
00095         fwrite(&val, sizeof(float), 1, fptr);
00096       }
00097   fclose(fptr);
00098 }

void datbvector real2D    u,
real2D    a,
real2D    v,
real2D    c,
int    nx,
int    ny,
char *    name
 

Definition at line 101 of file printxplot.c.

References real, and real2D.

00103 {
00104   int i, j;
00105   FILE *fptr;
00106   char fname[256];
00107   real umax = 0.0;
00108   
00109   for (i = 2; i < nx; i++)
00110     for (j = 2; j < ny; j++) {
00111       if (a[i-1][j] == 1.0 && fabs(u[i][j]) > umax)
00112         umax = fabs(u[i][j]);
00113       if (c[i][j-1] == 1.0 && fabs(v[i][j]) > umax)
00114         umax = fabs(v[i][j]);
00115     }
00116  
00117   sprintf(fname, "%s.gnu", name);
00118   fptr = fopen(fname, "wt");
00119   for (i = 2; i < nx; i++)
00120     for (j = 2; j < ny; j++)
00121       if (umax > 0.0) {
00122         if (a[i-1][j] == 1.0)
00123           fprintf(fptr, "%g %g\n%g %g\n\n", 
00124                   (real)i, 0.5 + (real)j, 
00125                   u[i][j]/umax + (real)i, 0.5 + (real)j);
00126         if (c[i][j-1] == 1.0)
00127           fprintf(fptr, "%g %g\n%g %g\n\n", 
00128                   (real)i + 0.5, (real)j, 
00129                   (real)i + 0.5, (real)j + v[i][j]/umax);
00130       }
00131       else {
00132         fprintf(fptr, "%g %g\n%g %g\n\n", 
00133                 (real)i, 0.5 + (real)j, 
00134                 (real)i, 0.5 + (real)j);
00135         fprintf(fptr, "%g %g\n%g %g\n\n", 
00136                 (real)i + 0.5, (real)j, 
00137                 (real)i + 0.5, (real)j);
00138       }
00139   fclose(fptr);
00140 }

void gnuvectors real2D    u,
real2D    a,
real2D    v,
real2D    c,
int    nx,
int    ny,
char *    name
 

Definition at line 143 of file printxplot.c.

References real, and real2D.

Referenced by timestep().

00145 {
00146   int i, j;
00147   FILE *fptr;
00148   char fname[256];
00149   real umax = 0.0, u1, v1;
00150   
00151   for (i = 2; i < nx; i++)
00152     for (j = 2; j < ny; j++) {
00153       if (a[i-1][j] == 1.0 && fabs(u[i][j]) > umax)
00154         umax = fabs(u[i][j]);
00155       if (c[i][j-1] == 1.0 && fabs(v[i][j]) > umax)
00156         umax = fabs(v[i][j]);
00157     }
00158  
00159   sprintf(fname, "%s.gnu", name);
00160   fptr = fopen(fname, "wt");
00161   for (i = 2; i < nx; i++)
00162     for (j = 2; j < ny; j++)
00163       if (umax > 0.0) {
00164         if (a[i][j] <= 1.0) {
00165           if (a[i-1][j] <= 1.0)
00166             u1 = 0.5*(u[i][j] + u[i+1][j]);
00167           else
00168             u1 = u[i+1][j]; 
00169         }
00170         else if (a[i-1][j] == 1.0)
00171           u1 = u[i][j];
00172         else
00173           u1 = 1000.0;
00174         if (c[i][j] <= 1.0) {
00175           if (c[i][j-1] <= 1.0)
00176             v1 = 0.5*(v[i][j] + v[i][j+1]);
00177           else
00178             v1 = v[i][j+1];
00179         }
00180         else if (c[i][j-1] == 1.0)
00181           v1 = v[i][j];
00182         else
00183           v1 = 1000.0;
00184         if (u1 != 1000.0 && v1 != 1000.0)
00185           fprintf(fptr, "%g %g\n%g %g\n\n", 
00186                   0.5 + (real)i, 0.5 + (real)j, 
00187                   3.*u1/umax + 0.5 + (real)i, 3.*v1/umax + 0.5 + (real)j);
00188       }
00189       else {
00190         fprintf(fptr, "%g %g\n%g %g\n\n", 
00191                 0.5 + (real)i, 0.5 + (real)j, 
00192                 0.5 + (real)i, 0.5 + (real)j);
00193         fprintf(fptr, "%g %g\n%g %g\n\n", 
00194                 (real)i + 0.5, 0.5 + (real)j, 
00195                 (real)i + 0.5, 0.5 + (real)j);
00196       }
00197   fclose(fptr);
00198 }

void printxpl real2D    u,
real2D    v,
real2D    c,
real2D    p,
int    nx,
int    ny,
real    tau,
real    du,
real    dp,
char *    fname
 

Definition at line 14 of file printxplot.c.

References real, real2D, and UNDEFINED.

Referenced by initialize(), and timestep().

00017 {
00018   int i, j, n1, n2;
00019   float uu, vv, cc, pp, h;
00020   char s[256];
00021   FILE *fptr = fopen(fname, "wb");
00022   
00023   h = 1.0 / (nx - 2);
00024   
00025   n1 = nx - 2;
00026   n2 = ny - 2;
00027   fwrite(&n1, sizeof(int), 1, fptr);
00028   fwrite(&n2, sizeof(int), 1, fptr);
00029   i = 1;
00030   fwrite(&i, sizeof(int), 1, fptr);
00031   i = 4;        
00032   fwrite(&i, sizeof(int), 1, fptr);
00033   strcpy(s, "u");
00034   fwrite((char *) s, sizeof(char), 256, fptr);
00035   strcpy(s, "v");
00036   fwrite((char *) s, sizeof(char), 256, fptr);                
00037   strcpy(s, "c");
00038   fwrite((char *) s, sizeof(char), 256, fptr);
00039   strcpy(s, "p");
00040   fwrite((char *) s, sizeof(char), 256, fptr);
00041   du *= 0.5 * h / tau;
00042   dp *= h * h / (tau * tau);
00043 
00044   for (i = 2; i <= nx - 1; i++)
00045     for (j = 2; j <= ny - 1; j++) {
00046       if (u[i][j] != UNDEFINED && u[i+1][j] != UNDEFINED)
00047         uu = (u[i][j] + u[i+1][j]) * du;
00048       else uu = 0.0;
00049       fwrite(&uu, sizeof(float), 1, fptr);
00050     }
00051   for (i = 2; i <= nx - 1; i++)
00052     for (j = 2; j <= ny - 1; j++) {
00053       if (v[i][j] != UNDEFINED && v[i][j+1] != UNDEFINED)
00054         vv = (v[i][j] + v[i][j+1]) * du;
00055       else vv = 0.0;
00056       fwrite(&vv, sizeof(float), 1, fptr);
00057     }
00058   for (i = 2; i <= nx - 1; i++)
00059     for (j = 2; j <= ny - 1; j++) {
00060       cc = c[i][j];
00061       fwrite(&cc, sizeof(float), 1, fptr);
00062     }
00063   for (i = 2; i <= nx - 1; i++)
00064     for (j = 2; j <= ny - 1; j++) {
00065       pp = p[i][j] * dp;
00066       fwrite(&pp, sizeof(float), 1, fptr);
00067     }
00068   
00069   fclose(fptr);
00070   
00071   printf("popiplot file %s written\n", fname);
00072 }


Generated on Wed Feb 19 22:28:15 2003 for Markers by doxygen1.2.18