00001 00049 #ifndef _PBEPARM_H_ 00050 #define _PBEPARM_H_ 00051 00052 /* Generic headers */ 00053 #include "maloc/maloc.h" 00054 00055 /* Headers specific to this file */ 00056 #include "apbs/vhal.h" 00057 00061 #define PBEPARM_MAXWRITE 10 00062 00067 enum ePBEparm_calcEnergy { 00068 PCE_NO=0, 00069 PCE_TOTAL=1, 00070 PCE_COMPS=2 00071 }; 00072 00077 typedef enum ePBEparm_calcEnergy PBEparm_calcEnergy; 00078 00083 enum ePBEparm_calcForce { 00084 PCF_NO=0, 00085 PCF_TOTAL=1, 00086 PCF_COMPS=2 00087 }; 00088 00093 typedef enum ePBEparm_calcForce PBEparm_calcForce; 00094 00103 struct sPBEparm { 00104 00105 int molid; 00106 int setmolid; 00107 int useDielMap; 00109 int dielMapID; 00110 int useKappaMap; 00112 int kappaMapID; 00113 int useChargeMap; 00115 int chargeMapID; 00116 Vhal_PBEType pbetype; 00117 int setpbetype; 00118 Vbcfl bcfl; 00119 int setbcfl; 00120 int nion; 00121 int setnion; 00122 double ionq[MAXION]; 00123 double ionc[MAXION]; 00124 double ionr[MAXION]; 00125 int setion[MAXION]; 00126 double pdie; 00127 int setpdie; 00128 double sdens; 00129 int setsdens; 00130 double sdie; 00131 int setsdie; 00132 Vsurf_Meth srfm; 00133 int setsrfm; 00134 double srad; 00135 int setsrad; 00136 double swin; 00137 int setswin; 00138 double temp; 00139 int settemp; 00140 double gamma; 00142 int setgamma; 00143 PBEparm_calcEnergy calcenergy; 00144 int setcalcenergy; 00145 PBEparm_calcForce calcforce; 00146 int setcalcforce; 00147 int numwrite; 00148 char writestem[PBEPARM_MAXWRITE][VMAX_ARGLEN]; 00150 Vdata_Type writetype[PBEPARM_MAXWRITE]; 00151 Vdata_Format writefmt[PBEPARM_MAXWRITE]; 00153 int writemat; 00156 int setwritemat; 00157 char writematstem[VMAX_ARGLEN]; 00158 int writematflag; 00163 int parsed; 00165 }; 00166 00171 typedef struct sPBEparm PBEparm; 00172 00173 /* /////////////////////////////////////////////////////////////////////////// 00174 // Class NOsh: Non-inlineable methods (mcsh.c) 00176 00182 double PBEparm_getIonCharge( 00183 PBEparm *thee, 00184 int iion 00185 ); 00186 00192 double PBEparm_getIonConc( 00193 PBEparm *thee, 00194 int iion 00195 ); 00196 00202 double PBEparm_getIonRadius( 00203 PBEparm *thee, 00204 int iion 00205 ); 00206 00207 00213 PBEparm* PBEparm_ctor(); 00214 00220 int PBEparm_ctor2( 00221 PBEparm *thee 00222 ); 00223 00228 void PBEparm_dtor( 00229 PBEparm **thee 00230 ); 00231 00236 void PBEparm_dtor2( 00237 PBEparm *thee 00238 ); 00239 00245 int PBEparm_check( 00246 PBEparm *thee 00247 ); 00248 00253 void PBEparm_copy( 00254 PBEparm *thee, 00255 PBEparm *parm 00256 ); 00257 00264 int PBEparm_parseToken( 00265 PBEparm *thee, 00266 char tok[VMAX_BUFSIZE], 00267 Vio *sock 00268 ); 00269 00270 00271 #endif 00272 00273