• Main Page
  • Related Pages
  • Modules
  • Data Structures
  • Files
  • File List
  • Globals

src/generic/apbs/vpbe.h

Go to the documentation of this file.
00001 
00058 #ifndef _VPBE_H_
00059 #define _VPBE_H_
00060 
00061 /* Generic headers */
00062 #include "maloc/maloc.h"
00063 #include "apbs/vhal.h"
00064 
00065 /* Specific headers */
00066 #include "apbs/vunit.h"
00067 #include "apbs/vatom.h"
00068 #include "apbs/vacc.h"
00069 #include "apbs/vclist.h"
00070 
00076 struct sVpbe { 
00077  
00078  Vmem *vmem;         
00080  Valist *alist;      
00081  Vclist *clist;      
00082  Vacc *acc;          
00084  double T;           
00085  double soluteDiel;  
00086  double solventDiel; 
00087  double solventRadius;
00091  double bulkIonicStrength; 
00092  double maxIonRadius;      
00095  int    numIon;            
00096  double ionConc[MAXION];   
00097  double ionRadii[MAXION];  
00098  double ionQ[MAXION];      
00100  double xkappa;      
00101  double deblen;      
00102  double zkappa2;     
00103  double zmagic;      
00105  double soluteCenter[3]; 
00106  double soluteRadius; 
00107  double soluteXlen;  
00108  double soluteYlen;  
00109  double soluteZlen;  
00110  double soluteCharge; 
00112  double smvolume; 
00113  double smsize;  
00114  int ipkey;   
00117  int paramFlag;      
00119  /*-------------------------------------------------------*/
00120  /* Added by Michael Grabe                                */
00121  /*-------------------------------------------------------*/
00122  
00123  double z_mem;        
00124  double L;            
00125  double membraneDiel; 
00126  double V;            
00127  int param2Flag;     
00128  /*-------------------------------------------------------*/
00129  
00130 };
00131 
00136 typedef struct sVpbe Vpbe;
00137 
00138 /* ///////////////////////////////////////////////////////////////////////////
00139    // Class Vpbe: Inlineable methods (vpbe.c)
00141 
00142 #if !defined(VINLINE_VPBE)
00143 
00150 VEXTERNC Valist* Vpbe_getValist(Vpbe *thee);
00151 
00158 VEXTERNC Vacc*   Vpbe_getVacc(Vpbe *thee);
00159 
00166 VEXTERNC double  Vpbe_getBulkIonicStrength(Vpbe *thee);
00167 
00174 VEXTERNC double  Vpbe_getMaxIonRadius(Vpbe *thee);
00175 
00182 VEXTERNC double  Vpbe_getTemperature(Vpbe *thee);           
00183 
00190 VEXTERNC double  Vpbe_getSoluteDiel(Vpbe *thee); 
00191 
00198 VEXTERNC double  Vpbe_getGamma(Vpbe *thee);
00199 
00206 VEXTERNC double  Vpbe_getSoluteRadius(Vpbe *thee);
00207 
00214 VEXTERNC double  Vpbe_getSoluteXlen(Vpbe *thee);
00215 
00222 VEXTERNC double  Vpbe_getSoluteYlen(Vpbe *thee);
00223 
00230 VEXTERNC double  Vpbe_getSoluteZlen(Vpbe *thee);
00231 
00238 VEXTERNC double* Vpbe_getSoluteCenter(Vpbe *thee);
00239 
00246 VEXTERNC double  Vpbe_getSoluteCharge(Vpbe *thee);
00247 
00254 VEXTERNC double  Vpbe_getSolventDiel(Vpbe *thee);
00255 
00262 VEXTERNC double  Vpbe_getSolventRadius(Vpbe *thee);
00263 
00270 VEXTERNC double  Vpbe_getXkappa(Vpbe *thee);
00271 
00278 VEXTERNC double  Vpbe_getDeblen(Vpbe *thee);
00279 
00286 VEXTERNC double  Vpbe_getZkappa2(Vpbe *thee);
00287 
00294 VEXTERNC double  Vpbe_getZmagic(Vpbe *thee);
00295 
00296 /*--------------------------------------------------------------*/
00297 /* Added by Michael Grabe                                       */
00298 /*--------------------------------------------------------------*/
00299 
00306 VEXTERNC double  Vpbe_getzmem(Vpbe *thee);
00307 
00314 VEXTERNC double  Vpbe_getLmem(Vpbe *thee);
00315 
00322 VEXTERNC double  Vpbe_getmembraneDiel(Vpbe *thee);
00323 
00329 VEXTERNC double  Vpbe_getmemv(Vpbe *thee);
00330 
00331 /*--------------------------------------------------------------*/
00332 
00333 #else /* if defined(VINLINE_VPBE) */
00334 #   define Vpbe_getValist(thee) ((thee)->alist)
00335 #   define Vpbe_getVacc(thee) ((thee)->acc)
00336 #   define Vpbe_getBulkIonicStrength(thee) ((thee)->bulkIonicStrength)
00337 #   define Vpbe_getTemperature(thee) ((thee)->T)           
00338 #   define Vpbe_getSoluteDiel(thee) ((thee)->soluteDiel) 
00339 #   define Vpbe_getSoluteCenter(thee) ((thee)->soluteCenter)
00340 #   define Vpbe_getSoluteRadius(thee) ((thee)->soluteRadius)
00341 #   define Vpbe_getSoluteXlen(thee) ((thee)->soluteXlen)
00342 #   define Vpbe_getSoluteYlen(thee) ((thee)->soluteYlen)
00343 #   define Vpbe_getSoluteZlen(thee) ((thee)->soluteZlen)
00344 #   define Vpbe_getSoluteCharge(thee) ((thee)->soluteCharge)
00345 #   define Vpbe_getSolventDiel(thee) ((thee)->solventDiel)
00346 #   define Vpbe_getSolventRadius(thee) ((thee)->solventRadius)
00347 #   define Vpbe_getMaxIonRadius(thee) ((thee)->maxIonRadius)
00348 #   define Vpbe_getXkappa(thee) ((thee)->xkappa)
00349 #   define Vpbe_getDeblen(thee) ((thee)->deblen)
00350 #   define Vpbe_getZkappa2(thee) ((thee)->zkappa2)
00351 #   define Vpbe_getZmagic(thee) ((thee)->zmagic)
00352 
00353 /*------------------------------------------------------------*/
00354 /* Added by Michael Grabe                                     */
00355 /*------------------------------------------------------------*/
00356 
00357 #   define Vpbe_getzmem(thee) ((thee)->z_mem)
00358 #   define Vpbe_getLmem(thee) ((thee)->L)
00359 #   define Vpbe_getmembraneDiel(thee) ((thee)->membraneDiel)
00360 #   define Vpbe_getmemv(thee) ((thee)->V)
00361 
00362 /*------------------------------------------------------------*/
00363 
00364 
00365 #endif /* if !defined(VINLINE_VPBE) */
00366 
00367 /* ///////////////////////////////////////////////////////////////////////////
00368    // Class Vpbe: Non-Inlineable methods (vpbe.c)
00370 
00391 VEXTERNC Vpbe*   Vpbe_ctor(
00392        Valist *alist, 
00393        int ionNum, 
00394        double *ionConc, 
00395          double *ionRadii, 
00396        double *ionQ, 
00397        double T, 
00398        double soluteDiel, 
00399        double solventDiel,  
00400        double solventRadius, 
00401        int focusFlag, 
00402        double sdens,  
00403        double z_mem, 
00404        double L, 
00405        double membraneDiel, 
00406        double V 
00407        );
00408 
00429 VEXTERNC int    Vpbe_ctor2(
00430        Vpbe *thee, 
00431        Valist *alist, 
00432        int ionNum, 
00433        double *ionConc, 
00434        double *ionRadii, 
00435        double *ionQ, 
00436        double T, 
00437        double soluteDiel, 
00438        double solventDiel,  
00439        double solventRadius, 
00440        int focusFlag, 
00441        double sdens,  
00442        double z_mem, 
00443        double L, 
00444        double membraneDiel, 
00445        double V 
00446        );
00447 
00458 VEXTERNC int     Vpbe_getIons(Vpbe *thee, int *nion, double ionConc[MAXION],
00459          double ionRadii[MAXION], double ionQ[MAXION]);
00460 
00466 VEXTERNC void    Vpbe_dtor(Vpbe **thee);
00467 
00473 VEXTERNC void    Vpbe_dtor2(Vpbe *thee);
00474 
00489 VEXTERNC double  Vpbe_getCoulombEnergy1(Vpbe *thee);
00490 
00498 VEXTERNC unsigned long int Vpbe_memChk(Vpbe *thee);
00499 
00500 #endif /* ifndef _VPBE_H_ */

Generated on Wed Oct 20 2010 12:01:33 for APBS by  doxygen 1.7.2