BELFEM 0.9.0
Berkeley Lab Finite Element Framework
Loading...
Searching...
No Matches
parpacktools.hpp
Go to the documentation of this file.
1/*
2 * BELFEM -- The Berkeley Lab Finite Element Framework
3 * Copyright (c) 2026, The Regents of the University of California,
4 * through Lawrence Berkeley National Laboratory (subject to receipt of any required
5 * approvals from the U.S. Dept. of Energy). All rights reserved.
6 *
7 * Developers: Christian Messe, Gregory Giard
8 *
9 * See the top-level LICENSE file for the complete license and disclaimer.
10 */
11
12#ifndef PARPACKTOOLS_HPP
13#define PARPACKTOOLS_HPP
14
15#include "typedefs.hpp"
16
17// the two drivers share the info layout and therefore the decoders. USE_PARPACK
18// hard-errors without USE_ARPACK ( config/linalg/config_parpack.cmake ), so
19// arpacktools is always available here
20#include "arpacktools.hpp"
21
22namespace belfem
23{
24 namespace parpack
25 {
26 // the info array layout is identical to the serial driver's -- use
27 // arpack::gInfoNaupd, arpack::gInfoNumConverged, ... to index it, and
28 // arpack::check_naupd() / arpack::check_neupd() to decode it
29
30#ifdef __cplusplus
31 extern"C" {
32#endif
33
69 void
71 const int_t * nloc, // rows owned by this rank
72 const int_t * nglobal, // rows of the whole matrix
73 const int_t * nnz, // nonzeros in the local block
74 const real * values, // local values
75 const int_t * indices, // GLOBAL column indices
76 const int_t * pointers, // LOCAL row pointers
77 const int_t * job,
78 const int_t * nev,
79 const int_t * ncvmin, // floor for the Krylov subspace
80 const real * tol,
81 const int_t * maxit,
82 const real * sigma, // 0 for OP = A, else OP = sigma*I - A
83 real * lambdareal,
84 real * lambdaimag,
85 int_t * info ) ;
86
96 void
98 const int_t * nloc, // rows owned by this rank
99 const int_t * nglobal, // rows of the whole matrix
100 const int_t * nnz, // nonzeros in the local block
101 const real * values, // local values
102 const int_t * indices, // GLOBAL column indices
103 const int_t * pointers, // LOCAL row pointers
104 const int_t * job,
105 const int_t * nev,
106 const int_t * ncvmin, // floor for the Krylov subspace
107 const real * tol,
108 const int_t * maxit,
109 const real * sigma, // 0 for OP = A, else OP = sigma*I - A
110 real * lambdareal,
111 real * lambdaimag,
112 int_t * info ) ;
113
114#ifdef __cplusplus
115 }
116#endif
117
118 }
119
120}
121#endif //PARPACKTOOLS_HPP
Definition parpacktools.hpp:25
void parpack_symmetric_eigen(const int_t *nloc, const int_t *nglobal, const int_t *nnz, const real *values, const int_t *indices, const int_t *pointers, const int_t *job, const int_t *nev, const int_t *ncvmin, const real *tol, const int_t *maxit, const real *sigma, real *lambdareal, real *lambdaimag, int_t *info)
symmetric counterpart of parpack_standard_eigen.
void parpack_standard_eigen(const int_t *nloc, const int_t *nglobal, const int_t *nnz, const real *values, const int_t *indices, const int_t *pointers, const int_t *job, const int_t *nev, const int_t *ncvmin, const real *tol, const int_t *maxit, const real *sigma, real *lambdareal, real *lambdaimag, int_t *info)
distributed reverse communication driver around pdnaupd / pdneupd.
USER GUIDES:
Definition cl_Capacitor.cpp:16
double real
Definition typedefs.hpp:36
int32_t int_t
Definition typedefs.hpp:51