1 /******************************************************************************
2  * Copyright 1998-2019 Lawrence Livermore National Security, LLC and other
3  * HYPRE Project Developers. See the top-level COPYRIGHT file for details.
4  *
5  * SPDX-License-Identifier: (Apache-2.0 OR MIT)
6  ******************************************************************************/
7 
8 #ifndef hypre_AME_HEADER
9 #define hypre_AME_HEADER
10 
11 /*--------------------------------------------------------------------------
12  * Auxiliary space Maxwell Eigensolver
13  *--------------------------------------------------------------------------*/
14 typedef struct
15 {
16    /* The AMS preconditioner */
17    hypre_AMSData *precond;
18 
19    /* The edge element mass matrix */
20    hypre_ParCSRMatrix *M;
21 
22    /* Discrete gradient matrix with eliminated boundary */
23    hypre_ParCSRMatrix *G;
24    /* The Laplacian matrix G^t M G */
25    hypre_ParCSRMatrix *A_G;
26    /* AMG preconditioner for A_G */
27    HYPRE_Solver B1_G;
28    /* PCG-AMG solver for A_G */
29    HYPRE_Solver B2_G;
30 
31    /* Eigensystem for A x = lambda M x, G^t x = 0 */
32    HYPRE_Int block_size;
33    void *eigenvectors;
34    HYPRE_Real *eigenvalues;
35 
36    /* Eigensolver (LOBPCG) options */
37    HYPRE_Int maxit;
38    HYPRE_Real atol;
39    HYPRE_Real rtol;
40    HYPRE_Int print_level;
41 
42    /* Matrix-vector interface interpreter */
43    void *interpreter;
44 
45    /* Temporary vectors */
46    hypre_ParVector *t1, *t2, *t3;
47 
48 } hypre_AMEData;
49 
50 #include "_hypre_lapack.h"
51 
52 #endif
53