00001
00074 #ifndef _MGPARM_H_
00075 #define _MGPARM_H_
00076
00077 #include "maloc/maloc.h"
00078 #include "apbs/vhal.h"
00079
00084 enum eMGparm_CalcType {
00085 MCT_MANUAL=0,
00086 MCT_AUTO=1,
00087 MCT_PARALLEL=2,
00088 MCT_DUMMY=3,
00089 MCT_NONE=4
00090 };
00091
00096 typedef enum eMGparm_CalcType MGparm_CalcType;
00097
00102 enum eMGparm_CentMeth {
00103 MCM_POINT=0,
00104 MCM_MOLECULE=1,
00105 MCM_FOCUS=2
00106 };
00107
00112 typedef enum eMGparm_CentMeth MGparm_CentMeth;
00121 struct sMGparm {
00122
00123 MGparm_CalcType type;
00124 int parsed;
00126
00127 int dime[3];
00128 int setdime;
00129 Vchrg_Meth chgm;
00130 int setchgm;
00131 Vchrg_Src chgs;
00134
00135 int nlev;
00137 int setnlev;
00138 double grid[3];
00139 int setgrid;
00140 double glen[3];
00141 int setglen;
00142 MGparm_CentMeth cmeth;
00143 double center[3];
00151 int centmol;
00154 int setgcent;
00156
00157 double cglen[3];
00158 int setcglen;
00159 double fglen[3];
00160 int setfglen;
00161 MGparm_CentMeth ccmeth;
00162 double ccenter[3];
00163 int ccentmol;
00166 int setcgcent;
00167 MGparm_CentMeth fcmeth;
00168 double fcenter[3];
00169 int fcentmol;
00172 int setfgcent;
00175
00176 double partDisjCenter[3];
00178 double partDisjLength[3];
00180 int partDisjOwnSide[6];
00183 int pdime[3];
00184 int setpdime;
00185 int proc_rank;
00186 int setrank;
00187 int proc_size;
00188 int setsize;
00189 double ofrac;
00190 int setofrac;
00191 int async;
00192 int setasync;
00193 };
00194
00199 typedef struct sMGparm MGparm;
00200
00207 int MGparm_getNx(MGparm *thee);
00208
00215 int MGparm_getNy(MGparm *thee);
00216
00223 int MGparm_getNz(MGparm *thee);
00224
00231 double MGparm_getHx(MGparm *thee);
00232
00239 double MGparm_getHy(MGparm *thee);
00240
00247 double MGparm_getHz(MGparm *thee);
00248
00255 void MGparm_setCenterX(MGparm *thee, double x);
00256
00263 void MGparm_setCenterY(MGparm *thee, double y);
00264
00271 void MGparm_setCenterZ(MGparm *thee, double z);
00272
00279 double MGparm_getCenterX(MGparm *thee);
00280
00287 double MGparm_getCenterY(MGparm *thee);
00288
00295 double MGparm_getCenterZ(MGparm *thee);
00296
00303 MGparm* MGparm_ctor(MGparm_CalcType type);
00304
00312 int MGparm_ctor2(MGparm *thee, MGparm_CalcType type);
00313
00319 void MGparm_dtor(MGparm **thee);
00320
00326 void MGparm_dtor2(MGparm *thee);
00327
00334 int MGparm_check(MGparm *thee);
00335
00342 void MGparm_copy(MGparm *thee, MGparm *parm);
00343
00353 int MGparm_parseToken(MGparm *thee, char tok[VMAX_BUFSIZE],
00354 Vio *sock);
00355
00356 #endif
00357
00358