APBS 3.0.0
Loading...
Searching...
No Matches
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
79 Gem *thee,
80 void (*externalUpdate)(SS **simps, int num)
83 );
84
89struct 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;
114 Vmem *vmem;
116};
117
122typedef 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
236VEXTERNC Vcsm* Vcsm_ctor(
237 Valist *alist, /**< List of atoms */
238 Gem *gm
239 );
240
249VEXTERNC int Vcsm_ctor2(
250 Vcsm *thee,
251 Valist *alist,
252 Gem *gm
253 );
254
259VEXTERNC void Vcsm_dtor(
260 Vcsm **thee
261 );
262
267VEXTERNC void Vcsm_dtor2(
268 Vcsm *thee
269 );
270
277VEXTERNC void Vcsm_init(
278 Vcsm *thee
279 );
280
287VEXTERNC int Vcsm_update(
288 Vcsm *thee,
289 SS **simps,
294 int num
295 );
296
297#endif /* ifndef _VCSM_H_ */
VEXTERNC int Vcsm_getNumberAtoms(Vcsm *thee, int isimp)
Get number of atoms associated with a simplex.
Definition vcsm.c:69
VEXTERNC int Vcsm_getAtomIndex(Vcsm *thee, int iatom, int isimp)
Get ID of particular atom in a simplex.
Definition vcsm.c:88
VEXTERNC void Vcsm_dtor2(Vcsm *thee)
FORTRAN stub to destroy Vcsm object.
Definition vcsm.c:300
VEXTERNC SS * Vcsm_getSimplex(Vcsm *thee, int isimp, int iatom)
Get particular simplex associated with an atom.
Definition vcsm.c:109
VEXTERNC int Vcsm_update(Vcsm *thee, SS **simps, int num)
Update the charge-simplex and simplex-charge maps after refinement.
Definition vcsm.c:326
VEXTERNC Vatom * Vcsm_getAtom(Vcsm *thee, int iatom, int isimp)
Get particular atom associated with a simplex.
Definition vcsm.c:77
VEXTERNC int Vcsm_ctor2(Vcsm *thee, Valist *alist, Gem *gm)
FORTRAN stub to construct Vcsm object.
Definition vcsm.c:147
VEXTERNC void Vcsm_init(Vcsm *thee)
Initialize charge-simplex map with mesh and atom data.
Definition vcsm.c:170
VEXTERNC int Vcsm_getNumberSimplices(Vcsm *thee, int iatom)
Get number of simplices associated with an atom.
Definition vcsm.c:99
VEXTERNC void Gem_setExternalUpdateFunction(Gem *thee, void(*externalUpdate)(SS **simps, int num))
External function for FEtk Gem class to use during mesh refinement.
VEXTERNC unsigned long int Vcsm_memChk(Vcsm *thee)
Return the memory used by this structure (and its contents) in bytes.
Definition vcsm.c:129
VEXTERNC void Vcsm_dtor(Vcsm **thee)
Destroy Vcsm object.
Definition vcsm.c:292
VEXTERNC int Vcsm_getSimplexIndex(Vcsm *thee, int isimp, int iatom)
Get index particular simplex associated with an atom.
Definition vcsm.c:119
Container class for list of atom objects.
Definition valist.h:78
Contains public data members for Vatom class/module.
Definition vatom.h:84
Charge-simplex map class.
Definition vcsm.h:89
int ** sqm
Definition vcsm.h:97
int initFlag
Definition vcsm.h:112
Gem * gm
Definition vcsm.h:94
int nsimp
Definition vcsm.h:105
int * nqsm
Definition vcsm.h:111
int natom
Definition vcsm.h:92
int msimp
Definition vcsm.h:107
int * nsqm
Definition vcsm.h:104
int ** qsm
Definition vcsm.h:109
Vmem * vmem
Definition vcsm.h:114
Valist * alist
Definition vcsm.h:91
Contains declarations for class Valist.
Contains generic macro definitions for APBS.