1 /**
2  *  @ingroup PMGC
3  *  @author  Tucker Beck [fortran ->c translation], Michael Holst [original]
4  *  @brief Guass-Seidel solver
5  *
6  *  @attention
7  *  @verbatim
8  *
9  * APBS -- Adaptive Poisson-Boltzmann Solver
10  *
11  * Nathan A. Baker (nathan.baker@pnl.gov)
12  * Pacific Northwest National Laboratory
13  *
14  * Additional contributing authors listed in the code documentation.
15  *
16  * Copyright (c) 2010-2014 Battelle Memorial Institute. Developed at the Pacific Northwest National Laboratory, operated by Battelle Memorial Institute, Pacific Northwest Division for the U.S. Department Energy.  Portions Copyright (c) 2002-2010, Washington University in St. Louis.  Portions Copyright (c) 2002-2010, Nathan A. Baker.  Portions Copyright (c) 1999-2002, The Regents of the University of California. Portions Copyright (c) 1995, Michael Holst.
17  * All rights reserved.
18  *
19  *
20  * Redistribution and use in source and binary forms, with or without
21  * modification, are permitted provided that the following conditions are met:
22  *
23  * -  Redistributions of source code must retain the above copyright notice, this
24  * list of conditions and the following disclaimer.
25  *
26  * - Redistributions in binary form must reproduce the above copyright notice,
27  * this list of conditions and the following disclaimer in the documentation
28  * and/or other materials provided with the distribution.
29  *
30  * - Neither the name of Washington University in St. Louis nor the names of its
31  * contributors may be used to endorse or promote products derived from this
32  * software without specific prior written permission.
33  *
34  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
35  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
36  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
37  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
38  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
39  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
40  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
41  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
42  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
43  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
44  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
45  *
46  * @endverbatim
47  */
48 
49 #ifndef _GSD_H_
50 #define _GSD_H_
51 
52 #include "apbscfg.h"
53 
54 #include "maloc/maloc.h"
55 
56 #include "generic/vhal.h"
57 #include "generic/vmatrix.h"
58 #include "pmgc/matvecd.h"
59 
60 /** @brief   Call the fast diagonal iterative method.
61  *  @ingroup PMGC
62  *  @author  Tucker Beck [C Translation], Michael Holst [Original]
63  *
64  *  @note    Replaces gsrb from gsd.f
65  */
66 VEXTERNC void Vgsrb(
67         int    *nx,      ///< @todo:  Doc
68         int    *ny,      ///< @todo:  Doc
69         int    *nz,      ///< @todo:  Doc
70         int    *ipc,     ///< @todo:  Doc
71         double *rpc,     ///< @todo:  Doc
72         double *ac,      ///< @todo:  Doc
73         double *cc,      ///< @todo:  Doc
74         double *fc,      ///< @todo:  Doc
75         double *x,       ///< @todo:  Doc
76         double *w1,      ///< @todo:  Doc
77         double *w2,      ///< @todo:  Doc
78         double *r,       ///< @todo:  Doc
79         int    *itmax,   ///< @todo:  Doc
80         int    *iters,   ///< @todo:  Doc
81         double *errtol,  ///< @todo:  Doc
82         double *omega,   ///< @todo:  Doc
83         int    *iresid,  ///< @todo:  Doc
84         int    *iadjoint ///< @todo:  Doc
85         );
86 
87 VEXTERNC void Vgsrb7x(
88         int    *nx,      ///< @todo:  Doc
89         int    *ny,      ///< @todo:  Doc
90         int    *nz,      ///< @todo:  Doc
91         int    *ipc,     ///< @todo:  Doc
92         double *rpc,     ///< @todo:  Doc
93         double *oC,      ///< @todo:  Doc
94         double *cc,      ///< @todo:  Doc
95         double *fc,      ///< @todo:  Doc
96         double *oE,      ///< @todo:  Doc
97         double *oN,      ///< @todo:  Doc
98         double *uC,      ///< @todo:  Doc
99         double *x,       ///< @todo:  Doc
100         double *w1,      ///< @todo:  Doc
101         double *w2,      ///< @todo:  Doc
102         double *r,       ///< @todo:  Doc
103         int    *itmax,   ///< @todo:  Doc
104         int    *iters,   ///< @todo:  Doc
105         double *errtol,  ///< @todo:  Doc
106         double *omega,   ///< @todo:  Doc
107         int    *iresid,  ///< @todo:  Doc
108         int    *iadjoint ///< @todo:  Doc
109         );
110 
111 VEXTERNC void Vgsrb27x(
112         int *nx,        ///< @todo:  Doc
113         int *ny,        ///< @todo:  Doc
114         int *nz,        ///< @todo:  Doc
115         int *ipc,       ///< @todo:  Doc
116         double *rpc,    ///< @todo:  Doc
117         double  *oC,    ///< @todo:  Doc
118         double  *cc,    ///< @todo:  Doc
119         double  *fc,    ///< @todo:  Doc
120         double  *oE,    ///< @todo:  Doc
121         double  *oN,    ///< @todo:  Doc
122         double  *uC,    ///< @todo:  Doc
123         double *oNE,    ///< @todo:  Doc
124         double *oNW,    ///< @todo:  Doc
125         double  *uE,    ///< @todo:  Doc
126         double  *uW,    ///< @todo:  Doc
127         double  *uN,    ///< @todo:  Doc
128         double  *uS,    ///< @todo:  Doc
129         double *uNE,    ///< @todo:  Doc
130         double *uNW,    ///< @todo:  Doc
131         double *uSE,    ///< @todo:  Doc
132         double *uSW,    ///< @todo:  Doc
133         double *x,      ///< @todo:  Doc
134         double *w1,     ///< @todo:  Doc
135         double *w2,     ///< @todo:  Doc
136         double *r,      ///< @todo:  Doc
137         int *itmax,     ///< @todo:  Doc
138         int *iters,     ///< @todo:  Doc
139         double *errtol, ///< @todo:  Doc
140         double *omega,  ///< @todo:  Doc
141         int *iresid,    ///< @todo:  Doc
142         int *iadjoint   ///< @todo:  Doc
143         );
144 
145 
146 #endif /* _GSD_H_ */
147