00001
00049 #ifndef _VGRID_H_
00050 #define _VGRID_H_
00051
00052 #include "maloc/maloc.h"
00053 #include "apbs/vhal.h"
00054 #include "apbs/vstring.h"
00055
00061 struct sVgrid {
00062
00063 int nx;
00064 int ny;
00065 int nz;
00066 double hx;
00067 double hy;
00068 double hzed;
00069 double xmin;
00070 double ymin;
00071 double zmin;
00072 double xmax;
00073 double ymax;
00074 double zmax;
00075 double *data;
00076 int readdata;
00077 int ctordata;
00079 Vmem *mem;
00080 };
00081
00086 typedef struct sVgrid Vgrid;
00087
00088 #if !defined(VINLINE_VGRID)
00089
00097 int Vgrid_memChk(Vgrid *thee);
00098
00099 #else
00100
00108 # define Vgrid_memChk(thee) (Vmem_bytes((thee)->vmem))
00109
00110 #endif
00111
00129 Vgrid* Vgrid_ctor(int nx, int ny, int nz,
00130 double hx, double hy, double hzed,
00131 double xmin, double ymin, double zmin,
00132 double *data);
00133
00152 int Vgrid_ctor2(Vgrid *thee, int nx, int ny, int nz,
00153 double hx, double hy, double hzed,
00154 double xmin, double ymin, double zmin,
00155 double *data);
00156
00165 int Vgrid_value(Vgrid *thee, double x[3], double *value);
00166
00172 void Vgrid_dtor(Vgrid **thee);
00173
00179 void Vgrid_dtor2(Vgrid *thee);
00180
00194 int Vgrid_curvature(Vgrid *thee, double pt[3], int cflag,
00195 double *curv);
00196
00205 int Vgrid_gradient(Vgrid *thee, double pt[3], double grad[3] );
00206
00222 void Vgrid_writeUHBD(Vgrid *thee, const char *iodev,
00223 const char *iofmt, const char *thost, const char *fname, char *title,
00224 int *pvec);
00225
00239 void Vgrid_writeDX(Vgrid *thee, const char *iodev,
00240 const char *iofmt, const char *thost, const char *fname, char *title,
00241 int *pvec);
00242
00254 int Vgrid_readDX(Vgrid *thee, const char *iodev, const char *iofmt,
00255 const char *thost, const char *fname);
00256
00263 double Vgrid_integrate(Vgrid *thee);
00264
00273 double Vgrid_normL1(Vgrid *thee);
00274
00283 double Vgrid_normL2(Vgrid *thee);
00284
00293 double Vgrid_normLinf(Vgrid *thee);
00294
00304 double Vgrid_seminormH1(Vgrid *thee);
00305
00316 double Vgrid_normH1(Vgrid *thee);
00317
00318 #endif
00319