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
00056
00059 #define VGRID_DIGITS 6
00060
00066 struct sVgrid {
00067
00068 int nx;
00069 int ny;
00070 int nz;
00071 double hx;
00072 double hy;
00073 double hzed;
00074 double xmin;
00075 double ymin;
00076 double zmin;
00077 double xmax;
00078 double ymax;
00079 double zmax;
00080 double *data;
00081 int readdata;
00082 int ctordata;
00084 Vmem *mem;
00085 };
00086
00091 typedef struct sVgrid Vgrid;
00092
00093 #if !defined(VINLINE_VGRID)
00094
00102 unsigned long int Vgrid_memChk(Vgrid *thee);
00103
00104 #else
00105
00113 # define Vgrid_memChk(thee) (Vmem_bytes((thee)->vmem))
00114
00115 #endif
00116
00134 Vgrid* Vgrid_ctor(int nx, int ny, int nz,
00135 double hx, double hy, double hzed,
00136 double xmin, double ymin, double zmin,
00137 double *data);
00138
00157 int Vgrid_ctor2(Vgrid *thee, int nx, int ny, int nz,
00158 double hx, double hy, double hzed,
00159 double xmin, double ymin, double zmin,
00160 double *data);
00161
00170 int Vgrid_value(Vgrid *thee, double x[3], double *value);
00171
00177 void Vgrid_dtor(Vgrid **thee);
00178
00184 void Vgrid_dtor2(Vgrid *thee);
00185
00199 int Vgrid_curvature(Vgrid *thee, double pt[3], int cflag,
00200 double *curv);
00201
00210 int Vgrid_gradient(Vgrid *thee, double pt[3], double grad[3] );
00211
00229 void Vgrid_writeUHBD(Vgrid *thee, const char *iodev,
00230 const char *iofmt, const char *thost, const char *fname, char *title,
00231 double *pvec);
00232
00247 void Vgrid_writeDX(Vgrid *thee, const char *iodev,
00248 const char *iofmt, const char *thost, const char *fname, char *title,
00249 double *pvec);
00250
00262 int Vgrid_readDX(Vgrid *thee, const char *iodev, const char *iofmt,
00263 const char *thost, const char *fname);
00264
00271 double Vgrid_integrate(Vgrid *thee);
00272
00281 double Vgrid_normL1(Vgrid *thee);
00282
00291 double Vgrid_normL2(Vgrid *thee);
00292
00301 double Vgrid_normLinf(Vgrid *thee);
00302
00312 double Vgrid_seminormH1(Vgrid *thee);
00313
00324 double Vgrid_normH1(Vgrid *thee);
00325
00326 #endif
00327