APBS  1.5
vcsm.h
Go to the documentation of this file.
1 
63 #ifndef _VCSM_H_
64 #define _VCSM_H_
65 
66 #include "apbscfg.h"
67 
68 #include "maloc/maloc.h"
69 #include "mc/mc.h"
70 
71 #include "generic/vhal.h"
72 #include "generic/valist.h"
73 
78 VEXTERNC void Gem_setExternalUpdateFunction(
79  Gem *thee,
80  void (*externalUpdate)(SS **simps, int num)
83  );
84 
89 struct sVcsm {
90 
92  int natom;
94  Gem *gm;
97  int **sqm;
104  int *nsqm;
105  int nsimp;
107  int msimp;
109  int **qsm;
111  int *nqsm;
112  int initFlag;
114  Vmem *vmem;
116 };
117 
122 typedef struct sVcsm Vcsm;
123 
124 /* ///////////////////////////////////////////////////////////////////////////
125 // Class Vcsm: Inlineable methods (vcsm.c)
127 
128 #if !defined(VINLINE_VCSM)
129 
135  VEXTERNC Valist* Vcsm_getValist(
136  Vcsm *thee /**< The Vcsm object */
137  );
138 
144  VEXTERNC int Vcsm_getNumberAtoms(
145  Vcsm *thee,
146  int isimp
147  );
148 
154  VEXTERNC Vatom* Vcsm_getAtom(
155  Vcsm *thee,
156  int iatom,
157  int isimp
158  );
159 
165  VEXTERNC int Vcsm_getAtomIndex(
166  Vcsm *thee,
167  int iatom,
168  int isimp
169  );
170 
176  VEXTERNC int Vcsm_getNumberSimplices(
177  Vcsm *thee,
178  int iatom
179  );
180 
186  VEXTERNC SS* Vcsm_getSimplex(
187  Vcsm *thee,
188  int isimp,
189  int iatom
190  );
191 
197  VEXTERNC int Vcsm_getSimplexIndex(
198  Vcsm *thee,
199  int isimp,
200  int iatom
201  );
202 
209  VEXTERNC unsigned long int Vcsm_memChk(
210  Vcsm *thee
211  );
212 
213 #else /* if defined(VINLINE_VCSM) */
214 # define Vcsm_getValist(thee) ((thee)->alist)
215 # define Vcsm_getNumberAtoms(thee, isimp) ((thee)->nsqm[isimp])
216 # define Vcsm_getAtom(thee, iatom, isimp) (Valist_getAtom((thee)->alist, ((thee)->sqm)[isimp][iatom]))
217 # define Vcsm_getAtomIndex(thee, iatom, isimp) (((thee)->sqm)[isimp][iatom])
218 # define Vcsm_getNumberSimplices(thee, iatom) (((thee)->nqsm)[iatom])
219 # define Vcsm_getSimplex(thee, isimp, iatom) (Gem_SS((thee)->gm, ((thee)->qsm)[iatom][isimp]))
220 # define Vcsm_getSimplexIndex(thee, isimp, iatom) (((thee)->qsm)[iatom][isimp])
221 # define Vcsm_memChk(thee) (Vmem_bytes((thee)->vmem))
222 #endif /* if !defined(VINLINE_VCSM) */
223 
224 /* ///////////////////////////////////////////////////////////////////////////
225 // Class Vcsm: Non-Inlineable methods (vcsm.c)
227 
236 VEXTERNC Vcsm* Vcsm_ctor(
237  Valist *alist, /**< List of atoms */
238  Gem *gm
239  );
240 
249 VEXTERNC int Vcsm_ctor2(
250  Vcsm *thee,
251  Valist *alist,
252  Gem *gm
253  );
254 
259 VEXTERNC void Vcsm_dtor(
260  Vcsm **thee
261  );
262 
267 VEXTERNC void Vcsm_dtor2(
268  Vcsm *thee
269  );
270 
277 VEXTERNC void Vcsm_init(
278  Vcsm *thee
279  );
280 
287 VEXTERNC int Vcsm_update(
288  Vcsm *thee,
289  SS **simps,
294  int num
295  );
296 
297 #endif /* ifndef _VCSM_H_ */
Contains declarations for class Valist.
int * nqsm
Definition: vcsm.h:111
VEXTERNC int Vcsm_getSimplexIndex(Vcsm *thee, int isimp, int iatom)
Get index particular simplex associated with an atom.
Definition: vcsm.c:119
VEXTERNC int Vcsm_update(Vcsm *thee, SS **simps, int num)
Update the charge-simplex and simplex-charge maps after refinement.
Definition: vcsm.c:326
Valist * alist
Definition: vcsm.h:91
VEXTERNC int Vcsm_ctor2(Vcsm *thee, Valist *alist, Gem *gm)
FORTRAN stub to construct Vcsm object.
Definition: vcsm.c:147
VEXTERNC int Vcsm_getNumberSimplices(Vcsm *thee, int iatom)
Get number of simplices associated with an atom.
Definition: vcsm.c:99
int initFlag
Definition: vcsm.h:112
int ** qsm
Definition: vcsm.h:109
VEXTERNC SS * Vcsm_getSimplex(Vcsm *thee, int isimp, int iatom)
Get particular simplex associated with an atom.
Definition: vcsm.c:109
VEXTERNC Vatom * Vcsm_getAtom(Vcsm *thee, int iatom, int isimp)
Get particular atom associated with a simplex.
Definition: vcsm.c:77
VEXTERNC void Gem_setExternalUpdateFunction(Gem *thee, void(*externalUpdate)(SS **simps, int num))
External function for FEtk Gem class to use during mesh refinement.
VEXTERNC void Vcsm_dtor(Vcsm **thee)
Destroy Vcsm object.
Definition: vcsm.c:292
Charge-simplex map class.
Definition: vcsm.h:89
int natom
Definition: vcsm.h:92
int ** sqm
Definition: vcsm.h:97
int msimp
Definition: vcsm.h:107
Contains generic macro definitions for APBS.
VEXTERNC int Vcsm_getAtomIndex(Vcsm *thee, int iatom, int isimp)
Get ID of particular atom in a simplex.
Definition: vcsm.c:88
int * nsqm
Definition: vcsm.h:104
VEXTERNC unsigned long int Vcsm_memChk(Vcsm *thee)
Return the memory used by this structure (and its contents) in bytes.
Definition: vcsm.c:129
Contains public data members for Vatom class/module.
Definition: vatom.h:84
Container class for list of atom objects.
Definition: valist.h:78
int nsimp
Definition: vcsm.h:105
VEXTERNC int Vcsm_getNumberAtoms(Vcsm *thee, int isimp)
Get number of atoms associated with a simplex.
Definition: vcsm.c:69
Vmem * vmem
Definition: vcsm.h:114
VEXTERNC void Vcsm_init(Vcsm *thee)
Initialize charge-simplex map with mesh and atom data.
Definition: vcsm.c:170
VEXTERNC void Vcsm_dtor2(Vcsm *thee)
FORTRAN stub to destroy Vcsm object.
Definition: vcsm.c:300
Gem * gm
Definition: vcsm.h:94