APBS  1.4.1
matvecd.h
1 
49 #ifndef _MATVECD_H_
50 #define _MATVECD_H_
51 
52 #include "apbscfg.h"
53 
54 #include "generic/vhal.h"
55 #include "generic/vmatrix.h"
56 #include "pmgc/mikpckd.h"
57 #include "pmgc/mypdec.h"
58 
66 VEXTERNC void Vmatvec(
67  int *nx,
68  int *ny,
69  int *nz,
70  int *ipc,
71  double *rpc,
72  double *ac,
73  double *cc,
74  double *x,
75  double *y
76  );
77 
78 VEXTERNC void Vmatvec7(
79  int *nx,
80  int *ny,
81  int *nz,
82  int *ipc,
83  double *rpc,
84  double *ac,
85  double *cc,
86  double *x,
87  double *y
88  );
89 
90 VEXTERNC void Vmatvec7_1s(
91  int *nx,
92  int *ny,
93  int *nz,
94  int *ipc,
95  double *rpc,
96  double *oC,
97  double *cc,
98  double *oE,
99  double *oN,
100  double *uC,
101  double *x,
102  double *y
103  );
104 
105 
106 
107 VEXTERNC void Vmatvec27(
108  int *nx,
109  int *ny,
110  int *nz,
111  int *ipc,
112  double *rpc,
113  double *ac,
114  double *cc,
115  double *x,
116  double *y
117  );
118 
119 VEXTERNC void Vmatvec27_1s(
120  int *nx,
121  int *ny,
122  int *nz,
123  int *ipc,
124  double *rpc,
125  double *oC,
126  double *cc,
127  double *oE,
128  double *oN,
129  double *uC,
130  double *oNE,
131  double *oNW,
132  double *uE,
133  double *uW,
134  double *uN,
135  double *uS,
136  double *uNE,
137  double *uNW,
138  double *uSE,
139  double *uSW,
140  double *x,
141  double *y
142  );
143 
144 
152 VEXTERNC void Vnmatvec(
153  int *nx,
154  int *ny,
155  int *nz,
156  int *ipc,
157  double *rpc,
158  double *ac,
159  double *cc,
160  double *x,
161  double *y,
162  double *w1
163  );
164 
165 VEXTERNC void Vnmatvec7(
166  int *nx,
167  int *ny,
168  int *nz,
169  int *ipc,
170  double *rpc,
171  double *ac,
172  double *cc,
173  double *x,
174  double *y,
175  double *w1
176  );
177 
178 VEXTERNC void Vnmatvecd7_1s(
179  int *nx,
180  int *ny,
181  int *nz,
182  int *ipc,
183  double *rpc,
184  double *oC,
185  double *cc,
186  double *oE,
187  double *oN,
188  double *uC,
189  double *x,
190  double *y,
191  double *w1
192  );
193 
194 VEXTERNC void Vnmatvec27(
195  int *nx,
196  int *ny,
197  int *nz,
198  int *ipc,
199  double *rpc,
200  double *ac,
201  double *cc,
202  double *x,
203  double *y,
204  double *w1
205  );
206 
207 VEXTERNC void Vnmatvecd27_1s(
208  int *nx,
209  int *ny,
210  int *nz,
211  int *ipc,
212  double *rpc,
213  double *oC,
214  double *cc,
215  double *oE,
216  double *oN,
217  double *uC,
218  double *oNE,
219  double *oNW,
220  double *uE,
221  double *uW,
222  double *uN,
223  double *uS,
224  double *uNE,
225  double *uNW,
226  double *uSE,
227  double *uSW,
228  double *x,
229  double *y,
230  double *w1
231  );
232 
233 
241 VEXTERNC void Vmresid(
242  int *nx,
243  int *ny,
244  int *nz,
245  int *ipc,
246  double *rpc,
247  double *ac,
248  double *cc,
249  double *fc,
250  double *x,
251  double *r
252  );
253 
254 VEXTERNC void Vmresid7(
255  int *nx,
256  int *ny,
257  int *nz,
258  int *ipc,
259  double *rpc,
260  double *ac,
261  double *cc,
262  double *fc,
263  double *x,
264  double *r
265  );
266 
267 VEXTERNC void Vmresid7_1s(
268  int *nx,
269  int *ny,
270  int *nz,
271  int *ipc,
272  double *rpc,
273  double *oC,
274  double *cc,
275  double *fc,
276  double *oE,
277  double *oN,
278  double *uC,
279  double *x,
280  double *r
281  );
282 
283 VEXTERNC void Vmresid27(
284  int *nx,
285  int *ny,
286  int *nz,
287  int *ipc,
288  double *rpc,
289  double *ac,
290  double *cc,
291  double *fc,
292  double *x,
293  double *r
294  );
295 
296 VEXTERNC void Vmresid27_1s(
297  int *nx,
298  int *ny,
299  int *nz,
300  int *ipc,
301  double *rpc,
302  double *oC,
303  double *cc,
304  double *fc,
305  double *oE,
306  double *oN,
307  double *uC,
308  double *oNE,
309  double *oNW,
310  double *uE,
311  double *uW,
312  double *uN,
313  double *uS,
314  double *uNE,
315  double *uNW,
316  double *uSE,
317  double *uSW,
318  double *x,
319  double *r
320  );
321 
322 
323 
331 VEXTERNC void Vnmresid(
332  int *nx,
333  int *ny,
334  int *nz,
335  int *ipc,
336  double *rpc,
337  double *ac,
338  double *cc,
339  double *fc,
340  double *x,
341  double *r,
342  double *w1
343  );
344 
345 VEXTERNC void Vnmresid7(
346  int *nx,
347  int *ny,
348  int *nz,
349  int *ipc,
350  double *rpc,
351  double *ac,
352  double *cc,
353  double *fc,
354  double *x,
355  double *r,
356  double *w1
357  );
358 
359 VEXTERNC void Vnmresid7_1s(
360  int *nx,
361  int *ny,
362  int *nz,
363  int *ipc,
364  double *rpc,
365  double *oC,
366  double *cc,
367  double *fc,
368  double *oE,
369  double *oN,
370  double *uC,
371  double *x,
372  double *r,
373  double *w1
374  );
375 
376 VEXTERNC void Vnmresid27(
377  int *nx,
378  int *ny,
379  int *nz,
380  int *ipc,
381  double *rpc,
382  double *ac,
383  double *cc,
384  double *fc,
385  double *x,
386  double *r,
387  double *w1
388  );
389 
390 VEXTERNC void Vnmresid27_1s(
391  int *nx,
392  int *ny,
393  int *nz,
394  int *ipc,
395  double *rpc,
396  double *oC,
397  double *cc,
398  double *fc,
399  double *oE,
400  double *oN,
401  double *uC,
402  double *oNE,
403  double *oNW,
404  double *uE,
405  double *uW,
406  double *uN,
407  double *uS,
408  double *uNE,
409  double *uNW,
410  double *uSE,
411  double *uSW,
412  double *x,
413  double *r,
414  double *w1
415  );
416 
417 
418 
425 VEXTERNC void Vrestrc(
426  int *nxf,
427  int *nyf,
428  int *nzf,
429  int *nxc,
430  int *nyc,
431  int *nzc,
432  double *xin,
433  double *xout,
434  double *pc
435  );
436 
437 VEXTERNC void Vrestrc2(
438  int *nxf,
439  int *nyf,
440  int *nzf,
441  int *nxc,
442  int *nyc,
443  int *nzc,
444  double *xin,
445  double *xout,
446  double *oPC,
447  double *oPN,
448  double *oPS,
449  double *oPE,
450  double *oPW,
451  double *oPNE,
452  double *oPNW,
453  double *oPSE,
454  double *oPSW,
455  double *uPC,
456  double *uPN,
457  double *uPS,
458  double *uPE,
459  double *uPW,
460  double *uPNE,
461  double *uPNW,
462  double *uPSE,
463  double *uPSW,
464  double *dPC,
465  double *dPN,
466  double *dPS,
467  double *dPE,
468  double *dPW,
469  double *dPNE,
470  double *dPNW,
471  double *dPSE,
472  double *dPSW
473  );
474 
481 VEXTERNC void VinterpPMG(
482  int *nxc,
483  int *nyc,
484  int *nzc,
485  int *nxf,
486  int *nyf,
487  int *nzf,
488  double *xin,
489  double *xout,
490  double *pc
491  );
492 
493 VEXTERNC void VinterpPMG2(
494  int *nxc,
495  int *nyc,
496  int *nzc,
497  int *nxf,
498  int *nyf,
499  int *nzf,
500  double *xin,
501  double *xout,
502  double *oPC,
503  double *oPN,
504  double *oPS,
505  double *oPE,
506  double *oPW,
507  double *oPNE,
508  double *oPNW,
509  double *oPSE,
510  double *oPSW,
511  double *uPC,
512  double *uPN,
513  double *uPS,
514  double *uPE,
515  double *uPW,
516  double *uPNE,
517  double *uPNW,
518  double *uPSE,
519  double *uPSW,
520  double *dPC,
521  double *dPN,
522  double *dPS,
523  double *dPE,
524  double *dPW,
525  double *dPNE,
526  double *dPNW,
527  double *dPSE,
528  double *dPSW
529  );
530 
537 VEXTERNC void Vextrac(
538  int *nxf,
539  int *nyf,
540  int *nzf,
541  int *nxc,
542  int *ny,
543  int *nzc,
544  double *xin,
545  double *xout
546  );
547 
548 #endif /* _MATVECD_H_ */
VEXTERNC void Vextrac(int *nxf, int *nyf, int *nzf, int *nxc, int *ny, int *nzc, double *xin, double *xout)
Simple injection of a fine grid function into coarse grid.
Definition: matvecd.c:1074
int nzc
Definition: vpmgp.h:98
int nxc
Definition: vpmgp.h:96
VEXTERNC void VinterpPMG(int *nxc, int *nyc, int *nzc, int *nxf, int *nyf, int *nzf, double *xin, double *xout, double *pc)
Apply the prolongation operator.
Definition: matvecd.c:911
VPUBLIC void Vmatvec(int *nx, int *ny, int *nz, int *ipc, double *rpc, double *ac, double *cc, double *x, double *y)
Matrix-vector multiplication routines.
Definition: matvecd.c:52
VEXTERNC void Vnmatvec(int *nx, int *ny, int *nz, int *ipc, double *rpc, double *ac, double *cc, double *x, double *y, double *w1)
Break the matrix data-structure into diagonals and then call the matrix-vector routine.
Definition: matvecd.c:228
Contains generic macro definitions for APBS.
int nyc
Definition: vpmgp.h:97
int ny
Definition: vpmgp.h:84
int nx
Definition: vpmgp.h:83
VEXTERNC void Vnmresid(int *nx, int *ny, int *nz, int *ipc, double *rpc, double *ac, double *cc, double *fc, double *x, double *r, double *w1)
Break the matrix data-structure into diagonals and then call the residual routine.
Definition: matvecd.c:594
VEXTERNC void Vmresid(int *nx, int *ny, int *nz, int *ipc, double *rpc, double *ac, double *cc, double *fc, double *x, double *r)
Break the matrix data-structure into diagonals and then call the residual routine.
Definition: matvecd.c:422
Contains inclusions for matrix data wrappers.
VEXTERNC void Vrestrc(int *nxf, int *nyf, int *nzf, int *nxc, int *nyc, int *nzc, double *xin, double *xout, double *pc)
Apply the restriction operator.
Definition: matvecd.c:778
int nz
Definition: vpmgp.h:85