00001 00060 #ifndef _PBEPARM_H_ 00061 #define _PBEPARM_H_ 00062 00063 /* Generic headers */ 00064 #include "maloc/maloc.h" 00065 00066 /* Headers specific to this file */ 00067 #include "apbs/vhal.h" 00068 00072 #define PBEPARM_MAXWRITE 10 00073 00078 enum ePBEparm_calcEnergy { 00079 PCE_NO=0, 00080 PCE_TOTAL=1, 00081 PCE_COMPS=2 00082 }; 00083 00088 typedef enum ePBEparm_calcEnergy PBEparm_calcEnergy; 00089 00094 enum ePBEparm_calcForce { 00095 PCF_NO=0, 00096 PCF_TOTAL=1, 00097 PCF_COMPS=2 00098 }; 00099 00104 typedef enum ePBEparm_calcForce PBEparm_calcForce; 00105 00114 struct sPBEparm { 00115 00116 int molid; 00117 int setmolid; 00118 int useDielMap; 00120 int dielMapID; 00121 int useKappaMap; 00123 int kappaMapID; 00124 int useChargeMap; 00126 int chargeMapID; 00127 Vhal_PBEType pbetype; 00128 int setpbetype; 00129 Vbcfl bcfl; 00130 int setbcfl; 00131 int nion; 00132 int setnion; 00133 double ionq[MAXION]; 00134 double ionc[MAXION]; 00135 double ionr[MAXION]; 00136 int setion[MAXION]; 00137 double pdie; 00138 int setpdie; 00139 double sdens; 00140 int setsdens; 00141 double sdie; 00142 int setsdie; 00143 Vsurf_Meth srfm; 00144 int setsrfm; 00145 double srad; 00146 int setsrad; 00147 double swin; 00148 int setswin; 00149 double temp; 00150 int settemp; 00152 double smsize; 00153 int setsmsize; 00155 double smvolume; 00156 int setsmvolume; 00158 PBEparm_calcEnergy calcenergy; 00159 int setcalcenergy; 00160 PBEparm_calcForce calcforce; 00161 int setcalcforce; 00162 int numwrite; 00163 char writestem[PBEPARM_MAXWRITE][VMAX_ARGLEN]; 00165 Vdata_Type writetype[PBEPARM_MAXWRITE]; 00166 Vdata_Format writefmt[PBEPARM_MAXWRITE]; 00168 int writemat; 00171 int setwritemat; 00172 char writematstem[VMAX_ARGLEN]; 00173 int writematflag; 00178 int parsed; 00180 }; 00181 00186 typedef struct sPBEparm PBEparm; 00187 00188 /* /////////////////////////////////////////////////////////////////////////// 00189 // Class NOsh: Non-inlineable methods (mcsh.c) 00191 00197 double PBEparm_getIonCharge( 00198 PBEparm *thee, 00199 int iion 00200 ); 00201 00207 double PBEparm_getIonConc( 00208 PBEparm *thee, 00209 int iion 00210 ); 00211 00217 double PBEparm_getIonRadius( 00218 PBEparm *thee, 00219 int iion 00220 ); 00221 00222 00228 PBEparm* PBEparm_ctor(); 00229 00235 int PBEparm_ctor2( 00236 PBEparm *thee 00237 ); 00238 00243 void PBEparm_dtor( 00244 PBEparm **thee 00245 ); 00246 00251 void PBEparm_dtor2( 00252 PBEparm *thee 00253 ); 00254 00260 int PBEparm_check( 00261 PBEparm *thee 00262 ); 00263 00268 void PBEparm_copy( 00269 PBEparm *thee, 00270 PBEparm *parm 00271 ); 00272 00279 int PBEparm_parseToken( 00280 PBEparm *thee, 00281 char tok[VMAX_BUFSIZE], 00282 Vio *sock 00283 ); 00284 00285 00286 #endif 00287 00288