00001 00057 #ifndef _VPMGP_H_ 00058 #define _VPMGP_H_ 00059 00060 #include "maloc/maloc.h" 00061 #include "apbs/vhal.h" 00062 #include "apbs/mgparm.h" 00063 00070 struct sVpmgp { 00071 00072 /* ********** USER-SPECIFIED PARAMETERS ********** */ 00073 int nx; 00074 int ny; 00075 int nz; 00076 int nlev; 00077 double hx; 00078 double hy; 00079 double hzed; 00080 int nonlin; 00085 /* ********** DERIVED PARAMETERS ********** */ 00086 int nxc; 00087 int nyc; 00088 int nzc; 00089 int nf; 00090 int nc; 00091 int narrc; 00092 int n_rpc; 00093 int n_iz; 00094 int n_ipc; 00096 int nrwk; 00097 int niwk; 00098 int narr; 00099 int ipkey; 00107 /* ********** PARAMETERS WITH DEFAULT VALUES ********** */ 00108 double xcent; 00109 double ycent; 00110 double zcent; 00111 double errtol; 00112 int itmax; 00113 int istop; 00120 int iinfo; 00125 Vbcfl bcfl; 00126 int key; 00129 int iperf; 00134 int meth; 00145 int mgkey; 00148 int nu1; 00149 int nu2; 00150 int mgsmoo; 00156 int mgprol; 00160 int mgcoar; 00164 int mgsolv; 00167 int mgdisc; 00170 double omegal; 00171 double omegan; 00172 int irite; 00173 int ipcon; 00179 double xlen; 00180 double ylen; 00181 double zlen; 00182 double xmin; 00183 double ymin; 00184 double zmin; 00185 double xmax; 00186 double ymax; 00187 double zmax; 00188 }; 00189 00194 typedef struct sVpmgp Vpmgp; 00195 00196 /* /////////////////////////////////////////////////////////////////////////// 00197 // Class Vpmgp: Inlineable methods (vpmgp.c) 00199 00200 #if !defined(VINLINE_VPMGP) 00201 #else /* if defined(VINLINE_VPMGP) */ 00202 #endif /* if !defined(VINLINE_VPMGP) */ 00203 00204 /* /////////////////////////////////////////////////////////////////////////// 00205 // Class Vpmgp: Non-Inlineable methods (vpmgp.c) 00207 00214 VEXTERNC Vpmgp* Vpmgp_ctor(MGparm *mgparm); 00215 00224 VEXTERNC int Vpmgp_ctor2(Vpmgp *thee, MGparm *mgparm); 00225 00231 VEXTERNC void Vpmgp_dtor(Vpmgp **thee); 00232 00238 VEXTERNC void Vpmgp_dtor2(Vpmgp *thee); 00239 00244 VEXTERNC void Vpmgp_size( 00245 Vpmgp *thee 00246 ); 00247 00252 VEXTERNC void Vpmgp_makeCoarse( 00253 int numLevel, 00254 int nxOld, 00255 int nyOld, 00256 int nzOld, 00257 int *nxNew, 00258 int *nyNew, 00259 int *nzNew 00260 ); 00261 00262 00263 00264 #endif /* ifndef _VPMGP_H_ */