00001 00060 #ifndef _VCLIST_H_ 00061 #define _VCLIST_H_ 00062 00063 /* Generic headers */ 00064 #include "maloc/maloc.h" 00065 #include "apbs/vhal.h" 00066 00067 /* Headers specific to this file */ 00068 #include "apbs/valist.h" 00069 #include "apbs/vatom.h" 00070 #include "apbs/vunit.h" 00071 00077 enum eVclist_DomainMode { 00078 CLIST_AUTO_DOMAIN, 00080 CLIST_MANUAL_DOMAIN 00082 }; 00083 00089 typedef enum eVclist_DomainMode Vclist_DomainMode; 00090 00096 struct sVclistCell { 00097 Vatom **atoms; 00098 int natoms; 00099 }; 00100 00105 typedef struct sVclistCell VclistCell; 00106 00112 struct sVclist { 00113 00114 Vmem *vmem; 00115 Valist *alist; 00116 Vclist_DomainMode mode; 00117 int npts[VAPBS_DIM]; 00118 int n; 00119 double max_radius; 00120 VclistCell *cells; 00121 double lower_corner[VAPBS_DIM]; 00122 double upper_corner[VAPBS_DIM]; 00123 double spacs[VAPBS_DIM]; 00125 }; 00126 00131 typedef struct sVclist Vclist; 00132 00133 #if !defined(VINLINE_VCLIST) 00134 00140 unsigned long int Vclist_memChk( 00141 Vclist *thee 00142 ); 00143 00151 double Vclist_maxRadius( 00152 Vclist *thee 00153 ); 00154 00155 #else /* if defined(VINLINE_VCLIST) */ 00156 00157 # define Vclist_memChk(thee) (Vmem_bytes((thee)->vmem)) 00158 # define Vclist_maxRadius(thee) ((thee)->max_radius) 00159 00160 #endif /* if !defined(VINLINE_VCLIST) */ 00161 00162 /* /////////////////////////////////////////////////////////////////////////// 00163 // Class Vclist: Non-Inlineable methods (vclist.c) 00165 00170 Vclist* Vclist_ctor( 00171 Valist *alist, 00172 double max_radius, 00173 int npts[VAPBS_DIM], 00175 Vclist_DomainMode mode, 00176 double lower_corner[VAPBS_DIM], 00179 double upper_corner[VAPBS_DIM] 00182 ); 00183 00188 Vrc_Codes Vclist_ctor2( 00189 Vclist *thee, 00190 Valist *alist, 00191 double max_radius, 00192 int npts[VAPBS_DIM], 00194 Vclist_DomainMode mode, 00195 double lower_corner[VAPBS_DIM], 00198 double upper_corner[VAPBS_DIM] 00201 ); 00202 00207 void Vclist_dtor( 00208 Vclist **thee 00209 ); 00210 00215 void Vclist_dtor2( 00216 Vclist *thee 00217 ); 00218 00226 VclistCell* Vclist_getCell( 00227 Vclist *thee, 00228 double position[VAPBS_DIM] 00229 ); 00230 00237 VclistCell* VclistCell_ctor( 00238 int natoms 00239 ); 00240 00247 Vrc_Codes VclistCell_ctor2( 00248 VclistCell *thee, 00249 int natoms 00250 ); 00251 00256 void VclistCell_dtor( 00257 VclistCell **thee 00258 ); 00259 00264 void VclistCell_dtor2( 00265 VclistCell *thee 00266 ); 00267 00268 #endif /* ifndef _VCLIST_H_ */ 00269