00001
00061 #ifndef _VCSM_H_
00062 #define _VCSM_H_
00063
00064
00065 #include "maloc/maloc.h"
00066 #include "apbs/vhal.h"
00067 #include "apbs/valist.h"
00068
00069
00070 #include "mc/mc.h"
00071
00076 void Gem_setExternalUpdateFunction(
00077 Gem *thee,
00078 void (*externalUpdate)(SS **simps, int num)
00081 );
00082
00087 struct sVcsm {
00088
00089 Valist *alist;
00090 int natom;
00092 Gem *gm;
00095 int **sqm;
00102 int *nsqm;
00103 int nsimp;
00105 int msimp;
00107 int **qsm;
00109 int *nqsm;
00110 int initFlag;
00112 Vmem *vmem;
00114 };
00115
00120 typedef struct sVcsm Vcsm;
00121
00122
00123
00125
00126
00127
00133
00134
00135
00136
00142
00143
00144
00145
00146
00152
00153
00154
00155
00156
00157
00163
00164
00165
00166
00167
00168
00174
00175
00176
00177
00178
00184
00185
00186
00187
00188
00189
00195
00196
00197
00198
00199
00200
00207
00208
00209
00210
00211
00212 # define Vcsm_getValist(thee) ((thee)->alist)
00213 # define Vcsm_getNumberAtoms(thee, isimp) ((thee)->nsqm[isimp])
00214 # define Vcsm_getAtom(thee, iatom, isimp) (Valist_getAtom((thee)->alist, ((thee)->sqm)[isimp][iatom]))
00215 # define Vcsm_getAtomIndex(thee, iatom, isimp) (((thee)->sqm)[isimp][iatom])
00216 # define Vcsm_getNumberSimplices(thee, iatom) (((thee)->nqsm)[iatom])
00217 # define Vcsm_getSimplex(thee, isimp, iatom) (Gem_SS((thee)->gm, ((thee)->qsm)[iatom][isimp]))
00218 # define Vcsm_getSimplexIndex(thee, isimp, iatom) (((thee)->qsm)[iatom][isimp])
00219 # define Vcsm_memChk(thee) (Vmem_bytes((thee)->vmem))
00220 #endif
00221
00222
00223
00225
00234
00235
00236
00237
00238
00247
00248
00249
00250
00251
00252
00257
00258
00259
00260
00265
00266
00267
00268
00275
00276
00277
00278
00285
00286
00287
00292
00293
00294
00295
00296