00001
00064 #ifndef _VPBE_H_
00065 #define _VPBE_H_
00066
00067
00068 #include "maloc/maloc.h"
00069 #include "apbs/vhal.h"
00070
00071
00072 #include "apbs/vunit.h"
00073 #include "apbs/vatom.h"
00074 #include "apbs/vacc.h"
00075 #include "apbs/vclist.h"
00076
00082 struct sVpbe {
00083
00084 Vmem *vmem;
00086 Valist *alist;
00087 Vclist *clist;
00088 Vacc *acc;
00090 double T;
00091 double soluteDiel;
00092 double solventDiel;
00093 double solventRadius;
00097 double bulkIonicStrength;
00098 double maxIonRadius;
00101 int numIon;
00102 double ionConc[MAXION];
00103 double ionRadii[MAXION];
00104 double ionQ[MAXION];
00106 double xkappa;
00107 double deblen;
00108 double zkappa2;
00109 double zmagic;
00111 double soluteCenter[3];
00112 double soluteRadius;
00113 double soluteXlen;
00114 double soluteYlen;
00115 double soluteZlen;
00116 double soluteCharge;
00118 double smvolume;
00119 double smsize;
00120 int ipkey;
00123 int paramFlag;
00125
00126
00127
00128
00129 double z_mem;
00130 double L;
00131 double membraneDiel;
00132 double V;
00133 int param2Flag;
00134
00135
00136 };
00137
00142 typedef struct sVpbe Vpbe;
00143
00144
00145
00147
00148
00149
00156
00157
00164
00165
00172
00173
00180
00181
00188
00189
00196
00197
00204
00205
00212
00213
00220
00221
00228
00229
00236
00237
00244
00245
00252
00253
00260
00261
00268
00269
00276
00277
00284
00285
00292
00293
00300
00301
00302
00303
00304
00305
00312 double Vpbe_getzmem(Vpbe *thee);
00313
00320 double Vpbe_getLmem(Vpbe *thee);
00321
00328 double Vpbe_getmembraneDiel(Vpbe *thee);
00329
00335 double Vpbe_getmemv(Vpbe *thee);
00336
00337
00338
00339 #else
00340 # define Vpbe_getValist(thee) ((thee)->alist)
00341 # define Vpbe_getVacc(thee) ((thee)->acc)
00342 # define Vpbe_getBulkIonicStrength(thee) ((thee)->bulkIonicStrength)
00343 # define Vpbe_getTemperature(thee) ((thee)->T)
00344 # define Vpbe_getSoluteDiel(thee) ((thee)->soluteDiel)
00345 # define Vpbe_getSoluteCenter(thee) ((thee)->soluteCenter)
00346 # define Vpbe_getSoluteRadius(thee) ((thee)->soluteRadius)
00347 # define Vpbe_getSoluteXlen(thee) ((thee)->soluteXlen)
00348 # define Vpbe_getSoluteYlen(thee) ((thee)->soluteYlen)
00349 # define Vpbe_getSoluteZlen(thee) ((thee)->soluteZlen)
00350 # define Vpbe_getSoluteCharge(thee) ((thee)->soluteCharge)
00351 # define Vpbe_getSolventDiel(thee) ((thee)->solventDiel)
00352 # define Vpbe_getSolventRadius(thee) ((thee)->solventRadius)
00353 # define Vpbe_getMaxIonRadius(thee) ((thee)->maxIonRadius)
00354 # define Vpbe_getXkappa(thee) ((thee)->xkappa)
00355 # define Vpbe_getDeblen(thee) ((thee)->deblen)
00356 # define Vpbe_getZkappa2(thee) ((thee)->zkappa2)
00357 # define Vpbe_getZmagic(thee) ((thee)->zmagic)
00358
00359
00360
00361
00362
00363 # define Vpbe_getzmem(thee) ((thee)->z_mem)
00364 # define Vpbe_getLmem(thee) ((thee)->L)
00365 # define Vpbe_getmembraneDiel(thee) ((thee)->membraneDiel)
00366 # define Vpbe_getmemv(thee) ((thee)->V)
00367
00368
00369
00370
00371 #endif
00372
00373
00374
00376
00409
00410
00411
00412
00413 Vpbe* Vpbe_ctor(Valist *alist, int ionNum, double *ionConc,
00414 double *ionRadii, double *ionQ, double T,
00415 double soluteDiel, double solventDiel,
00416 double solventRadius, int focusFlag, double sdens,
00417 double z_mem, double L, double membraneDiel, double V);
00418
00451 int Vpbe_ctor2(Vpbe *thee, Valist *alist, int ionNum,
00452 double *ionConc, double *ionRadii, double *ionQ,
00453 double T, double soluteDiel,
00454 double solventDiel, double solventRadius, int focusFlag,
00455 double sdens, double z_mem, double L, double membraneDiel,
00456 double V);
00457
00468 int Vpbe_getIons(Vpbe *thee, int *nion, double ionConc[MAXION],
00469 double ionRadii[MAXION], double ionQ[MAXION]);
00470
00476 void Vpbe_dtor(Vpbe **thee);
00477
00483 void Vpbe_dtor2(Vpbe *thee);
00484
00499 double Vpbe_getCoulombEnergy1(Vpbe *thee);
00500
00508 unsigned long int Vpbe_memChk(Vpbe *thee);
00509
00510 #endif
00511