00001
00060 #ifndef _VGRID_H_
00061 #define _VGRID_H_
00062
00063 #include "maloc/maloc.h"
00064 #include "apbs/vhal.h"
00065 #include "apbs/vstring.h"
00066
00067
00070 #define VGRID_DIGITS 6
00071
00077 struct sVgrid {
00078
00079 int nx;
00080 int ny;
00081 int nz;
00082 double hx;
00083 double hy;
00084 double hzed;
00085 double xmin;
00086 double ymin;
00087 double zmin;
00088 double xmax;
00089 double ymax;
00090 double zmax;
00091 double *data;
00092 int readdata;
00093 int ctordata;
00095 Vmem *mem;
00096 };
00097
00102 typedef struct sVgrid Vgrid;
00103
00104 #if !defined(VINLINE_VGRID)
00105
00113 unsigned long int Vgrid_memChk(Vgrid *thee);
00114
00115 #else
00116
00124 # define Vgrid_memChk(thee) (Vmem_bytes((thee)->vmem))
00125
00126 #endif
00127
00145 Vgrid* Vgrid_ctor(int nx, int ny, int nz,
00146 double hx, double hy, double hzed,
00147 double xmin, double ymin, double zmin,
00148 double *data);
00149
00168 int Vgrid_ctor2(Vgrid *thee, int nx, int ny, int nz,
00169 double hx, double hy, double hzed,
00170 double xmin, double ymin, double zmin,
00171 double *data);
00172
00181 int Vgrid_value(Vgrid *thee, double x[3], double *value);
00182
00188 void Vgrid_dtor(Vgrid **thee);
00189
00195 void Vgrid_dtor2(Vgrid *thee);
00196
00210 int Vgrid_curvature(Vgrid *thee, double pt[3], int cflag,
00211 double *curv);
00212
00221 int Vgrid_gradient(Vgrid *thee, double pt[3], double grad[3] );
00222
00240 void Vgrid_writeUHBD(Vgrid *thee, const char *iodev,
00241 const char *iofmt, const char *thost, const char *fname, char *title,
00242 double *pvec);
00243
00258 void Vgrid_writeDX(Vgrid *thee, const char *iodev,
00259 const char *iofmt, const char *thost, const char *fname, char *title,
00260 double *pvec);
00261
00273 int Vgrid_readDX(Vgrid *thee, const char *iodev, const char *iofmt,
00274 const char *thost, const char *fname);
00275
00282 double Vgrid_integrate(Vgrid *thee);
00283
00292 double Vgrid_normL1(Vgrid *thee);
00293
00302 double Vgrid_normL2(Vgrid *thee);
00303
00312 double Vgrid_normLinf(Vgrid *thee);
00313
00323 double Vgrid_seminormH1(Vgrid *thee);
00324
00335 double Vgrid_normH1(Vgrid *thee);
00336
00337 #endif
00338