00001
00073 #ifndef _VCSM_H_
00074 #define _VCSM_H_
00075
00076
00077 #include "maloc/maloc.h"
00078 #include "apbs/vhal.h"
00079 #include "apbs/valist.h"
00080
00081
00082 #include "mc/mc.h"
00083
00088 void Gem_setExternalUpdateFunction(
00089 Gem *thee,
00090 void (*externalUpdate)(SS **simps, int num)
00093 );
00094
00099 struct sVcsm {
00100
00101 Valist *alist;
00102 int natom;
00104 Gem *gm;
00107 int **sqm;
00114 int *nsqm;
00115 int nsimp;
00117 int msimp;
00119 int **qsm;
00121 int *nqsm;
00122 int initFlag;
00124 Vmem *vmem;
00126 };
00127
00132 typedef struct sVcsm Vcsm;
00133
00134
00135
00137
00138
00139
00145
00146
00147
00148
00154
00155
00156
00157
00158
00164
00165
00166
00167
00168
00169
00175
00176
00177
00178
00179
00180
00186
00187
00188
00189
00190
00196
00197
00198
00199
00200
00201
00207
00208
00209
00210
00211
00212
00219
00220
00221
00222
00223
00224 # define Vcsm_getValist(thee) ((thee)->alist)
00225 # define Vcsm_getNumberAtoms(thee, isimp) ((thee)->nsqm[isimp])
00226 # define Vcsm_getAtom(thee, iatom, isimp) (Valist_getAtom((thee)->alist, ((thee)->sqm)[isimp][iatom]))
00227 # define Vcsm_getAtomIndex(thee, iatom, isimp) (((thee)->sqm)[isimp][iatom])
00228 # define Vcsm_getNumberSimplices(thee, iatom) (((thee)->nqsm)[iatom])
00229 # define Vcsm_getSimplex(thee, isimp, iatom) (Gem_SS((thee)->gm, ((thee)->qsm)[iatom][isimp]))
00230 # define Vcsm_getSimplexIndex(thee, isimp, iatom) (((thee)->qsm)[iatom][isimp])
00231 # define Vcsm_memChk(thee) (Vmem_bytes((thee)->vmem))
00232 #endif
00233
00234
00235
00237
00246
00247
00248
00249
00250
00259
00260
00261
00262
00263
00264
00269
00270
00271
00272
00277
00278
00279
00280
00287
00288
00289
00290
00297
00298
00299
00304
00305
00306
00307
00308