00001
00051 #ifndef _MGPARM_H_
00052 #define _MGPARM_H_
00053
00054 #include "maloc/maloc.h"
00055 #include "apbs/vhal.h"
00056
00061 enum eMGparm_CalcType {
00062 MCT_MAN=0,
00063 MCT_AUT=1,
00064 MCT_PAR=2,
00065 MCT_DUM=3
00066 };
00067
00072 typedef enum eMGparm_CalcType MGparm_CalcType;
00073
00078 enum eMGparm_CentMeth {
00079 MCM_PNT=0,
00080 MCM_MOL=1
00081 };
00082
00087 typedef enum eMGparm_CentMeth MGparm_CentMeth;
00096 struct sMGparm {
00097
00098 MGparm_CalcType type;
00099 int parsed;
00101
00102 int dime[3];
00103 int setdime;
00104 Vchrg_Meth chgm;
00105 int setchgm;
00107
00108 int nlev;
00110 int setnlev;
00111 double grid[3];
00112 int setgrid;
00113 double glen[3];
00114 int setglen;
00115 MGparm_CentMeth cmeth;
00116 double center[3];
00124 int centmol;
00126 int setgcent;
00128
00129 double cglen[3];
00130 int setcglen;
00131 double fglen[3];
00132 int setfglen;
00133 MGparm_CentMeth ccmeth;
00134 double ccenter[3];
00135 int ccentmol;
00137 int setcgcent;
00138 MGparm_CentMeth fcmeth;
00139 double fcenter[3];
00140 int fcentmol;
00142 int setfgcent;
00145
00146 double partDisjCenterShift[3];
00149 double partDisjLength[3];
00151 int partDisjOwnSide[6];
00153 double partOlapCenterShift[3];
00156 double partOlapLength[3];
00159 int pdime[3];
00160 int setpdime;
00161 int proc_rank;
00162 int setrank;
00163 int proc_size;
00164 int setsize;
00165 double ofrac;
00166 int setofrac;
00167 int async;
00168 int setasync;
00169 };
00170
00175 typedef struct sMGparm MGparm;
00176
00183 int MGparm_getNx(MGparm *thee);
00184
00191 int MGparm_getNy(MGparm *thee);
00192
00199 int MGparm_getNz(MGparm *thee);
00200
00207 double MGparm_getHx(MGparm *thee);
00208
00215 double MGparm_getHy(MGparm *thee);
00216
00223 double MGparm_getHz(MGparm *thee);
00224
00231 void MGparm_setCenterX(MGparm *thee, double x);
00232
00239 void MGparm_setCenterY(MGparm *thee, double y);
00240
00247 void MGparm_setCenterZ(MGparm *thee, double z);
00248
00255 double MGparm_getCenterX(MGparm *thee);
00256
00263 double MGparm_getCenterY(MGparm *thee);
00264
00271 double MGparm_getCenterZ(MGparm *thee);
00272
00279 double MGparm_getPartOlapCenterShiftX(MGparm *thee);
00280
00287 double MGparm_getPartOlapCenterShiftY(MGparm *thee);
00288
00295 double MGparm_getPartOlapCenterShiftZ(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