b2api
B2000++ API Reference Manual, VERSION 4.6
 
Loading...
Searching...
No Matches
b2arpack.H
1//------------------------------------------------------------------------
2// b2arpack.H --
3//
4//
5// written by Mathias Doreille
6//
7// Copyright (c) 2004-2012,2017
8// SMR Engineering & Development SA
9// 2502 Bienne, Switzerland
10//
11// All Rights Reserved. Proprietary source code. The contents of
12// this file may not be disclosed to third parties, copied or
13// duplicated in any form, in whole or in part, without the prior
14// written permission of SMR.
15//------------------------------------------------------------------------
16
17#ifndef __B2ARPACK_H__
18#define __B2ARPACK_H__
19
20#include <complex>
21
22#include "FCMangle.h" // Generated by cmake
23#include "utils/b2csda.H"
24
25extern "C" {
26extern struct {
27 int logfil;
28 int ndigit;
29 int mgetv0;
30 int msaupd;
31 int msaup2;
32 int msaitr;
33 int mseigt;
34 int msapps;
35 int msgets;
36 int mseupd;
37 int mnaupd;
38 int mnaup2;
39 int mnaitr;
40 int mneigh;
41 int mnapps;
42 int mngets;
43 int mneupd;
44 int mcaupd;
45 int mcaup2;
46 int mcaitr;
47 int mceigh;
48 int mcapps;
49 int mcgets;
50 int mceupd;
51} FC_GLOBAL(debug, DEBUG);
52}
53
54namespace b2000 { namespace arpack {
55
56inline void set_debug() {
57 FC_GLOBAL(debug, DEBUG).ndigit = -3;
58 FC_GLOBAL(debug, DEBUG).logfil = 2;
59 FC_GLOBAL(debug, DEBUG).msgets = 0;
60 FC_GLOBAL(debug, DEBUG).msaitr = 0;
61 FC_GLOBAL(debug, DEBUG).msapps = 0;
62 FC_GLOBAL(debug, DEBUG).msaupd = 1;
63 FC_GLOBAL(debug, DEBUG).msaup2 = 0;
64 FC_GLOBAL(debug, DEBUG).mseigt = 0;
65 FC_GLOBAL(debug, DEBUG).mseupd = 0;
66}
67
68extern "C" void FC_GLOBAL(dsaupd, DSAUPD)(
69 int& ido, const char* bmat, const int& n, const char* which, const int& nev, double& tol,
70 double* resid, const int& ncv, double* v, const int& ldv, int* iparam, int* ipntr,
71 double* workd, double* workl, const int& lworkl, int& info, long int, long int);
72inline void aupd(
73 int& ido, const char* bmat, const int& n, const char* which, const int& nev, double& tol,
74 double* resid, const int& ncv, double* v, const int& ldv, int* iparam, int* ipntr,
75 double* workd, double* workl, const int& lworkl, double* rwork, int& info) {
76 FC_GLOBAL(dsaupd, DSAUPD)
77 (ido, bmat, n, which, nev, tol, resid, ncv, v, ldv, iparam, ipntr, workd, workl, lworkl, info,
78 1L, 2L);
79}
80
81extern "C" void FC_GLOBAL(ssaupd, SSAUPD)(
82 int* ido, const char* bmat, const int* n, const char* which, const int* nev, float* tol,
83 float* resid, const int* ncv, float* v, const int* ldv, int* iparam, int* ipntr, float* workd,
84 float* workl, const int* lworkl, int* info, long int, long int);
85inline void aupd(
86 int& ido, const char bmat, const int n, const char which[2], const int nev, float& tol,
87 float* resid, const int ncv, float* v, const int ldv, int iparam[11], int ipntr[11],
88 float* workd, float* workl, const int lworkl, float* rwork, int& info) {
89 FC_GLOBAL(ssaupd, SSAUPD)
90 (&ido, &bmat, &n, which, &nev, &tol, resid, &ncv, v, &ldv, iparam, ipntr, workd, workl, &lworkl,
91 &info, 1L, 2L);
92}
93
94extern "C" void FC_GLOBAL(dseupd, DSEUPD)(
95 const int& rvec, const char* howmny, int* select, double* d, double* z, const int& ldz,
96 const double& sigma, const char* bmat, const int& n, const char* which, const int& nev,
97 double& tol, double* resid, const int& ncv, double* v, const int& ldv, int* iparam,
98 int* ipntr, double* workd, double* workl, const int& lworkl, int& info, long int, long int,
99 long int);
100inline void eupd(
101 const int& rvec, const char* howmny, int* select, double* d, double* z, const int& ldz,
102 const double& sigma, const char* bmat, const int& n, const char* which, const int& nev,
103 double& tol, double* resid, const int& ncv, double* v, const int& ldv, int* iparam,
104 int* ipntr, double* workd, double* workl, const int& lworkl, double* rwork, int& info) {
105 FC_GLOBAL(dseupd, DSEUPD)
106 (rvec, howmny, select, d, z, ldz, sigma, bmat, n, which, nev, tol, resid, ncv, v, ldv, iparam,
107 ipntr, workd, workl, lworkl, info, 1L, 1L, 2L);
108}
109
110extern "C" void FC_GLOBAL(sseupd, SSEUPD)(
111 const int* rvec, const char* howmny, int* select, float* d, float* z, const int* ldz,
112 const float& sigma, const char* bmat, const int* n, const char* which, const int* nev,
113 const float* tol, float* resid, const int* ncv, float* v, const int* ldv, int* iparam,
114 int* ipntr, float* workd, float* workl, const int* lworkl, int* info, long int, long int,
115 long int);
116inline void eupd(
117 const int rvec, const char howmny, int* select, float* d, float* z, const int ldz,
118 const float sigma, const char bmat, const int n, const char which[2], const int nev,
119 const float tol, float* resid, const int ncv, float* v, const int ldv, int iparam[11],
120 int ipntr[11], float* workd, float* workl, const int lworkl, float* rwork, int& info) {
121 FC_GLOBAL(sseupd, SSEUPD)
122 (&rvec, &howmny, select, d, z, &ldz, sigma, &bmat, &n, which, &nev, &tol, resid, &ncv, v, &ldv,
123 iparam, ipntr, workd, workl, &lworkl, &info, 1L, 1L, 2L);
124}
125
126extern "C" void FC_GLOBAL(dnaupd, DSAUPD)(
127 int& ido, const char* bmat, const int& n, const char* which, const int& nev, double& tol,
128 double* resid, const int& ncv, double* v, const int& ldv, int* iparam, int* ipntr,
129 double* workd, double* workl, const int& lworkl, int& info, long int, long int);
130inline void naupd(
131 int& ido, const char* bmat, const int& n, const char* which, const int& nev, double& tol,
132 double* resid, const int& ncv, double* v, const int& ldv, int* iparam, int* ipntr,
133 double* workd, double* workl, const int& lworkl, double* rwork, int& info) {
134 FC_GLOBAL(dnaupd, DNAUPD)
135 (ido, bmat, n, which, nev, tol, resid, ncv, v, ldv, iparam, ipntr, workd, workl, lworkl, info,
136 1L, 2L);
137}
138
139extern "C" void FC_GLOBAL(snaupd, SSAUPD)(
140 int* ido, const char* bmat, const int* n, const char* which, const int* nev, float* tol,
141 float* resid, const int* ncv, float* v, const int* ldv, int* iparam, int* ipntr, float* workd,
142 float* workl, const int* lworkl, int* info, long int, long int);
143inline void naupd(
144 int& ido, const char bmat, const int n, const char which[2], const int nev, float& tol,
145 float* resid, const int ncv, float* v, const int ldv, int iparam[11], int ipntr[11],
146 float* workd, float* workl, const int lworkl, float* rwork, int& info) {
147 FC_GLOBAL(snaupd, SNAUPD)
148 (&ido, &bmat, &n, which, &nev, &tol, resid, &ncv, v, &ldv, iparam, ipntr, workd, workl, &lworkl,
149 &info, 1L, 2L);
150}
151
152extern "C" void FC_GLOBAL(dneupd, DSEUPD)(
153 const int& rvec, const char* howmny, int* select, double* dr, double* di, double* z,
154 const int& ldz, const double& sigmar, const double& sigmai, double* workev, const char* bmat,
155 const int& n, const char* which, const int& nev, double& tol, double* resid, const int& ncv,
156 double* v, const int& ldv, int* iparam, int* ipntr, double* workd, double* workl,
157 const int& lworkl, int& info, long int, long int, long int);
158inline void eupd(
159 const int& rvec, const char* howmny, int* select, double* dr, double* di, double* z,
160 const int& ldz, const double& sigmar, const double& sigmai, double* workev, const char* bmat,
161 const int& n, const char* which, const int& nev, double& tol, double* resid, const int& ncv,
162 double* v, const int& ldv, int* iparam, int* ipntr, double* workd, double* workl,
163 const int& lworkl, double* rwork, int& info) {
164 FC_GLOBAL(dneupd, DNEUPD)
165 (rvec, howmny, select, dr, di, z, ldz, sigmar, sigmai, workev, bmat, n, which, nev, tol, resid,
166 ncv, v, ldv, iparam, ipntr, workd, workl, lworkl, info, 1L, 1L, 2L);
167}
168
169extern "C" void FC_GLOBAL(sneupd, SSEUPD)(
170 const int* rvec, const char* howmny, int* select, float* dr, float* di, float* z,
171 const int* ldz, const float& sigmar, const float& sigmai, double* workev, const char* bmat,
172 const int* n, const char* which, const int* nev, const float* tol, float* resid,
173 const int* ncv, float* v, const int* ldv, int* iparam, int* ipntr, float* workd, float* workl,
174 const int* lworkl, int* info, long int, long int, long int);
175inline void eupd(
176 const int rvec, const char howmny, int* select, float* dr, float* di, float* z, const int ldz,
177 const float sigmar, const float sigmai, double* workev, const char bmat, const int n,
178 const char which[2], const int nev, const float tol, float* resid, const int ncv, float* v,
179 const int ldv, int iparam[11], int ipntr[11], float* workd, float* workl, const int lworkl,
180 float* rwork, int& info) {
181 FC_GLOBAL(sneupd, SNEUPD)
182 (&rvec, &howmny, select, dr, di, z, &ldz, sigmar, sigmai, workev, &bmat, &n, which, &nev, &tol,
183 resid, &ncv, v, &ldv, iparam, ipntr, workd, workl, &lworkl, &info, 1L, 1L, 2L);
184}
185
186extern "C" void FC_GLOBAL(znaupd, ZNAUPD)(
187 int& ido, const char* bmat, const int& n, const char* which, const int& nev, double& tol,
188 double* resid, const int& ncv, double* v, const int& ldv, int* iparam, int* ipntr,
189 double* workd, double* workl, const int& lworkl, double* rwork, int& info, long int,
190 long int);
191inline void aupd(
192 int& ido, const char* bmat, const int& n, const char* which, const int& nev, double& tol,
193 b2000::csda<double>* resid, const int& ncv, b2000::csda<double>* v, const int& ldv,
194 int* iparam, int* ipntr, b2000::csda<double>* workd, b2000::csda<double>* workl,
195 const int& lworkl, b2000::csda<double>* rwork, int& info) {
196 FC_GLOBAL(znaupd, DZNAUPD)
197 (ido, bmat, n, which, nev, tol, reinterpret_cast<double*>(resid), ncv,
198 reinterpret_cast<double*>(v), ldv, iparam, ipntr, reinterpret_cast<double*>(workd),
199 reinterpret_cast<double*>(workl), lworkl, reinterpret_cast<double*>(rwork), info, 1L, 2L);
200}
201inline void aupd(
202 int& ido, const char* bmat, const int& n, const char* which, const int& nev, double& tol,
203 std::complex<double>* resid, const int& ncv, std::complex<double>* v, const int& ldv,
204 int* iparam, int* ipntr, std::complex<double>* workd, std::complex<double>* workl,
205 const int& lworkl, std::complex<double>* rwork, int& info) {
206 FC_GLOBAL(znaupd, DZNAUPD)
207 (ido, bmat, n, which, nev, tol, reinterpret_cast<double*>(resid), ncv,
208 reinterpret_cast<double*>(v), ldv, iparam, ipntr, reinterpret_cast<double*>(workd),
209 reinterpret_cast<double*>(workl), lworkl, reinterpret_cast<double*>(rwork), info, 1L, 2L);
210}
211inline void naupd(
212 int& ido, const char* bmat, const int& n, const char* which, const int& nev, double& tol,
213 b2000::csda<double>* resid, const int& ncv, b2000::csda<double>* v, const int& ldv,
214 int* iparam, int* ipntr, b2000::csda<double>* workd, b2000::csda<double>* workl,
215 const int& lworkl, b2000::csda<double>* rwork, int& info) {
216 FC_GLOBAL(znaupd, DZNAUPD)
217 (ido, bmat, n, which, nev, tol, reinterpret_cast<double*>(resid), ncv,
218 reinterpret_cast<double*>(v), ldv, iparam, ipntr, reinterpret_cast<double*>(workd),
219 reinterpret_cast<double*>(workl), lworkl, reinterpret_cast<double*>(rwork), info, 1L, 2L);
220}
221inline void naupd(
222 int& ido, const char* bmat, const int& n, const char* which, const int& nev, double& tol,
223 std::complex<double>* resid, const int& ncv, std::complex<double>* v, const int& ldv,
224 int* iparam, int* ipntr, std::complex<double>* workd, std::complex<double>* workl,
225 const int& lworkl, std::complex<double>* rwork, int& info) {
226 FC_GLOBAL(znaupd, DZNAUPD)
227 (ido, bmat, n, which, nev, tol, reinterpret_cast<double*>(resid), ncv,
228 reinterpret_cast<double*>(v), ldv, iparam, ipntr, reinterpret_cast<double*>(workd),
229 reinterpret_cast<double*>(workl), lworkl, reinterpret_cast<double*>(rwork), info, 1L, 2L);
230}
231
232extern "C" void FC_GLOBAL(cnaupd, CNAUPD)(
233 int* ido, const char* bmat, const int* n, const char* which, const int* nev, float* tol,
234 float* resid, const int* ncv, float* v, const int* ldv, int* iparam, int* ipntr, float* workd,
235 float* workl, const int* lworkl, float* rwork, int* info, long int, long int);
236inline void aupd(
237 int& ido, const char bmat, const int n, const char which[2], const int nev, float& tol,
238 std::complex<float>* resid, const int ncv, std::complex<float>* v, const int ldv,
239 int iparam[11], int ipntr[11], std::complex<float>* workd, std::complex<float>* workl,
240 const int lworkl, std::complex<float>* rwork, int& info) {
241 FC_GLOBAL(cnaupd, CNAUPD)
242 (&ido, &bmat, &n, which, &nev, &tol, reinterpret_cast<float*>(resid), &ncv,
243 reinterpret_cast<float*>(v), &ldv, iparam, ipntr, reinterpret_cast<float*>(workd),
244 reinterpret_cast<float*>(workl), &lworkl, reinterpret_cast<float*>(rwork), &info, 1L, 2L);
245}
246inline void naupd(
247 int& ido, const char bmat, const int n, const char which[2], const int nev, float& tol,
248 std::complex<float>* resid, const int ncv, std::complex<float>* v, const int ldv,
249 int iparam[11], int ipntr[11], std::complex<float>* workd, std::complex<float>* workl,
250 const int lworkl, std::complex<float>* rwork, int& info) {
251 FC_GLOBAL(cnaupd, CNAUPD)
252 (&ido, &bmat, &n, which, &nev, &tol, reinterpret_cast<float*>(resid), &ncv,
253 reinterpret_cast<float*>(v), &ldv, iparam, ipntr, reinterpret_cast<float*>(workd),
254 reinterpret_cast<float*>(workl), &lworkl, reinterpret_cast<float*>(rwork), &info, 1L, 2L);
255}
256
257extern "C" void FC_GLOBAL(zneupd, ZNEUPD)(
258 const int& rvec, const char* howmny, int* select, double* d, double* z, const int& ldz,
259 const double& sigma, double* workev, const char* bmat, const int& n, const char* which,
260 const int& nev, double& tol, double* resid, const int& ncv, double* v, const int& ldv,
261 int* iparam, int* ipntr, double* workd, double* workl, const int& lworkl, double* rwork,
262 int& info, long int, long int, long int);
263inline void eupd(
264 const int& rvec, const char* howmny, int* select, b2000::csda<double>* d,
265 b2000::csda<double>* z, const int& ldz, const b2000::csda<double>& sigma, const char* bmat,
266 const int& n, const char* which, const int& nev, double& tol, b2000::csda<double>* resid,
267 const int& ncv, b2000::csda<double>* v, const int& ldv, int* iparam, int* ipntr,
268 b2000::csda<double>* workd, b2000::csda<double>* workl, const int& lworkl,
269 b2000::csda<double>* rwork, int& info) {
270 double* workev = new double[4 * ncv];
271 FC_GLOBAL(zneupd, ZNEUPD)
272 (rvec, howmny, select, reinterpret_cast<double*>(d), reinterpret_cast<double*>(z), ldz,
273 reinterpret_cast<const double&>(sigma), workev, bmat, n, which, nev, tol,
274 reinterpret_cast<double*>(resid), ncv, reinterpret_cast<double*>(v), ldv, iparam, ipntr,
275 reinterpret_cast<double*>(workd), reinterpret_cast<double*>(workl), lworkl,
276 reinterpret_cast<double*>(rwork), info, 1L, 1L, 2L);
277 delete[] workev;
278}
279inline void eupd(
280 const int& rvec, const char* howmny, int* select, std::complex<double>* d,
281 std::complex<double>* z, const int& ldz, const std::complex<double>& sigma, const char* bmat,
282 const int& n, const char* which, const int& nev, double& tol, std::complex<double>* resid,
283 const int& ncv, std::complex<double>* v, const int& ldv, int* iparam, int* ipntr,
284 std::complex<double>* workd, std::complex<double>* workl, const int& lworkl,
285 std::complex<double>* rwork, int& info) {
286 double* workev = new double[4 * ncv];
287 FC_GLOBAL(zneupd, ZNEUPD)
288 (rvec, howmny, select, reinterpret_cast<double*>(d), reinterpret_cast<double*>(z), ldz,
289 reinterpret_cast<const double&>(sigma), workev, bmat, n, which, nev, tol,
290 reinterpret_cast<double*>(resid), ncv, reinterpret_cast<double*>(v), ldv, iparam, ipntr,
291 reinterpret_cast<double*>(workd), reinterpret_cast<double*>(workl), lworkl,
292 reinterpret_cast<double*>(rwork), info, 1L, 1L, 2L);
293 delete[] workev;
294}
295
296extern "C" void FC_GLOBAL(cneupd, CNEUPD)(
297 const int* rvec, const char* howmny, int* select, float* d, float* z, const int* ldz,
298 const float& sigma, float* workev, const char* bmat, const int* n, const char* which,
299 const int* nev, const float* tol, float* resid, const int* ncv, float* v, const int* ldv,
300 int* iparam, int* ipntr, float* workd, float* workl, const int* lworkl, float* rwork,
301 int* info, long int, long int, long int);
302inline void eupd(
303 const int rvec, const char howmny, int* select, std::complex<float>* d,
304 std::complex<float>* z, const int ldz, const std::complex<float>& sigma, const char bmat,
305 const int n, const char which[2], const int nev, const float tol, std::complex<float>* resid,
306 const int ncv, std::complex<float>* v, const int ldv, int iparam[11], int ipntr[11],
307 std::complex<float>* workd, std::complex<float>* workl, const int lworkl,
308 std::complex<float>* rwork, int& info) {
309 float* workev = new float[4 * ncv];
310 FC_GLOBAL(cneupd, CNEUPD)
311 (&rvec, &howmny, select, reinterpret_cast<float*>(d), reinterpret_cast<float*>(z), &ldz,
312 reinterpret_cast<const float&>(sigma), workev, &bmat, &n, which, &nev, &tol,
313 reinterpret_cast<float*>(resid), &ncv, reinterpret_cast<float*>(v), &ldv, iparam, ipntr,
314 reinterpret_cast<float*>(workd), reinterpret_cast<float*>(workl), &lworkl,
315 reinterpret_cast<float*>(rwork), &info, 1L, 1L, 2L);
316 delete[] workev;
317}
318
319}} // namespace b2000::arpack
320
321#endif
Contains the base classes for implementing Finite Elements.
Definition b2boundary_condition.H:32