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

src/fem/apbs/vcsm.h

Go to the documentation of this file.
00001 
00055 #ifndef _VCSM_H_
00056 #define _VCSM_H_
00057 
00058 /* Generic headers */
00059 #include "maloc/maloc.h"
00060 #include "apbs/vhal.h"
00061 #include "apbs/valist.h"
00062 
00063 /* Specific headers */
00064 #include "mc/mc.h"
00065 
00070 VEXTERNC void Gem_setExternalUpdateFunction(
00071         Gem *thee, 
00072         void (*externalUpdate)(SS **simps, int num) 
00075         );
00076 
00081 struct sVcsm { 
00082 
00083   Valist *alist;      
00084   int natom;          
00086   Gem *gm;            
00089   int **sqm;          
00096   int *nsqm;          
00097   int nsimp;          
00099   int msimp;          
00101   int **qsm;          
00103   int *nqsm;          
00104   int initFlag;       
00106   Vmem *vmem;         
00108 };
00109 
00114 typedef struct sVcsm Vcsm;
00115 
00116 /* ///////////////////////////////////////////////////////////////////////////
00117 // Class Vcsm: Inlineable methods (vcsm.c)
00119 
00120 #if !defined(VINLINE_VCSM)
00121 
00127     VEXTERNC Valist* Vcsm_getValist(
00128             Vcsm *thee 
00129             );
00130 
00136     VEXTERNC int Vcsm_getNumberAtoms(
00137             Vcsm *thee,  
00138             int isimp  
00139             );
00140 
00146     VEXTERNC Vatom* Vcsm_getAtom(
00147             Vcsm *thee,  
00148             int iatom,  
00149             int isimp  
00150             );
00151 
00157     VEXTERNC int Vcsm_getAtomIndex(
00158             Vcsm *thee,  
00159             int iatom,  
00160             int isimp  
00161             );
00162 
00168     VEXTERNC int Vcsm_getNumberSimplices(
00169             Vcsm *thee,  
00170             int iatom  
00171             );
00172 
00178     VEXTERNC SS* Vcsm_getSimplex(
00179             Vcsm *thee,  
00180             int isimp,  
00181             int iatom  
00182             );
00183 
00189     VEXTERNC int Vcsm_getSimplexIndex(
00190             Vcsm *thee,  
00191             int isimp,  
00192             int iatom  
00193             );
00194 
00201     VEXTERNC unsigned long int Vcsm_memChk(
00202             Vcsm *thee 
00203             );
00204 
00205 #else /* if defined(VINLINE_VCSM) */
00206 #   define Vcsm_getValist(thee) ((thee)->alist)
00207 #   define Vcsm_getNumberAtoms(thee, isimp) ((thee)->nsqm[isimp])
00208 #   define Vcsm_getAtom(thee, iatom, isimp) (Valist_getAtom((thee)->alist, ((thee)->sqm)[isimp][iatom]))
00209 #   define Vcsm_getAtomIndex(thee, iatom, isimp) (((thee)->sqm)[isimp][iatom])
00210 #   define Vcsm_getNumberSimplices(thee, iatom) (((thee)->nqsm)[iatom])
00211 #   define Vcsm_getSimplex(thee, isimp, iatom) (Gem_SS((thee)->gm, ((thee)->qsm)[iatom][isimp]))
00212 #   define Vcsm_getSimplexIndex(thee, isimp, iatom) (((thee)->qsm)[iatom][isimp])
00213 #   define Vcsm_memChk(thee) (Vmem_bytes((thee)->vmem))
00214 #endif /* if !defined(VINLINE_VCSM) */
00215 
00216 /* ///////////////////////////////////////////////////////////////////////////
00217 // Class Vcsm: Non-Inlineable methods (vcsm.c)
00219 
00228 VEXTERNC Vcsm* Vcsm_ctor(
00229         Valist *alist,  
00230         Gem *gm  
00231         );
00232 
00241 VEXTERNC int Vcsm_ctor2(
00242         Vcsm *thee,  
00243         Valist *alist,  
00244         Gem *gm  
00245         );
00246 
00251 VEXTERNC void Vcsm_dtor(
00252         Vcsm **thee  
00253         );
00254 
00259 VEXTERNC void Vcsm_dtor2(
00260         Vcsm *thee 
00261         );
00262 
00269 VEXTERNC void Vcsm_init(
00270         Vcsm *thee 
00271         );
00272 
00279 VEXTERNC int Vcsm_update(
00280         Vcsm *thee, 
00281         SS **simps, 
00286         int num 
00287         );
00288 
00289 #endif /* ifndef _VCSM_H_ */

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