1 // The libMesh Finite Element Library. 2 // Copyright (C) 2002-2020 Benjamin S. Kirk, John W. Peterson, Roy H. Stogner 3 4 // This library is free software; you can redistribute it and/or 5 // modify it under the terms of the GNU Lesser General Public 6 // License as published by the Free Software Foundation; either 7 // version 2.1 of the License, or (at your option) any later version. 8 9 // This library is distributed in the hope that it will be useful, 10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 // Lesser General Public License for more details. 13 14 // You should have received a copy of the GNU Lesser General Public 15 // License along with this library; if not, write to the Free Software 16 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 17 18 19 20 #ifndef LIBMESH_ENUM_EIGENSOLVER_TYPE_H 21 #define LIBMESH_ENUM_EIGENSOLVER_TYPE_H 22 23 namespace libMesh { 24 25 /** 26 * Defines an \p enum for iterative eigenproblem solver types 27 * 28 * The fixed type, i.e. ": int", enumeration syntax used here allows 29 * this enum to be forward declared as 30 * enum EigenSolverType : int; 31 * reducing header file dependencies. 32 */ 33 enum EigenSolverType : int { 34 POWER=0, 35 LAPACK, 36 SUBSPACE, 37 ARNOLDI, 38 LANCZOS, 39 KRYLOVSCHUR, 40 // Invalid 41 INVALID_EIGENSOLVER}; 42 43 /** 44 * Defines an \p enum for eigenproblem types. 45 * This can be Hermitian (HEP), generalized Hermitian (GHEP), 46 * non-Hermitian (NHEP), generalized non-Hermitian (GNHEP), or 47 * generalized indefinite Hermitian (GHIEP). 48 * 49 * The fixed type, i.e. ": int", enumeration syntax used here allows 50 * this enum to be forward declared as 51 * enum EigenProblemType : int; 52 * reducing header file dependencies. 53 */ 54 enum EigenProblemType : int { 55 NHEP=0, 56 HEP, 57 GNHEP, 58 GHEP, 59 GHIEP, 60 // Invalid 61 INVALID_EIGENPROBLEMTYPE}; 62 63 64 65 /** 66 * Defines an \p enum for the position of 67 * the spectrum, i.e. the eigenvalues to be computed. 68 * 69 * The fixed type, i.e. ": int", enumeration syntax used here allows 70 * this enum to be forward declared as 71 * enum PositionOfSpectrum : int; 72 * reducing header file dependencies. 73 */ 74 enum PositionOfSpectrum : int { 75 LARGEST_MAGNITUDE=0, 76 SMALLEST_MAGNITUDE, 77 TARGET_MAGNITUDE, 78 LARGEST_REAL, 79 SMALLEST_REAL, 80 TARGET_REAL, 81 LARGEST_IMAGINARY, 82 SMALLEST_IMAGINARY, 83 TARGET_IMAGINARY, 84 // Invalid 85 INVALID_Postion_of_Spectrum, 86 INVALID_POSITION_OF_SPECTRUM}; 87 } 88 89 #endif 90