00001
00050 #ifndef _VCSM_H_
00051 #define _VCSM_H_
00052
00053
00054 #include "maloc/maloc.h"
00055 #include "apbs/vhal.h"
00056 #include "apbs/valist.h"
00057
00058
00059 #include "mc/mc.h"
00060
00065 void Gem_setExternalUpdateFunction(
00066 Gem *thee,
00067 void (*externalUpdate)(SS **simps, int num)
00070 );
00071
00076 struct sVcsm {
00077
00078 Valist *alist;
00079 int natom;
00081 Gem *gm;
00084 int **sqm;
00091 int *nsqm;
00092 int nsimp;
00094 int msimp;
00096 int **qsm;
00098 int *nqsm;
00099 int initFlag;
00101 Vmem *vmem;
00103 };
00104
00109 typedef struct sVcsm Vcsm;
00110
00111
00112
00114
00115
00116
00122
00123
00124
00125
00131
00132
00133
00134
00135
00141
00142
00143
00144
00145
00146
00152
00153
00154
00155
00156
00157
00163
00164
00165
00166
00167
00173
00174
00175
00176
00177
00178
00184
00185
00186
00187
00188
00189
00196
00197
00198
00199
00200
00201 # define Vcsm_getValist(thee) ((thee)->alist)
00202 # define Vcsm_getNumberAtoms(thee, isimp) ((thee)->nsqm[isimp])
00203 # define Vcsm_getAtom(thee, iatom, isimp) (Valist_getAtom((thee)->alist, ((thee)->sqm)[isimp][iatom]))
00204 # define Vcsm_getAtomIndex(thee, iatom, isimp) (((thee)->sqm)[isimp][iatom])
00205 # define Vcsm_getNumberSimplices(thee, iatom) (((thee)->nqsm)[iatom])
00206 # define Vcsm_getSimplex(thee, isimp, iatom) (Gem_SS((thee)->gm, ((thee)->qsm)[iatom][isimp]))
00207 # define Vcsm_getSimplexIndex(thee, isimp, iatom) (((thee)->qsm)[iatom][isimp])
00208 # define Vcsm_memChk(thee) (Vmem_bytes((thee)->vmem))
00209 #endif
00210
00211
00212
00214
00223
00224
00225
00226
00227
00236
00237
00238
00239
00240
00241
00246
00247
00248
00249
00254
00255
00256
00257
00264
00265
00266
00267
00274
00275
00276
00281
00282
00283
00284
00285