Alien  1.3.0
User documentation
Loading...
Searching...
No Matches
IInternalEigenSolverT.h
Go to the documentation of this file.
1/*
2 * Copyright 2020 IFPEN-CEA
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 *
16 * SPDX-License-Identifier: Apache-2.0
17 */
18
19/*!
20 * \file IInternalEigenSolverT.h
21 * \brief IInternalEigenSolverT.h
22 */
23#pragma once
24
25#include <alien/utils/Precomp.h>
26#include <memory>
27
28/*---------------------------------------------------------------------------*/
29/*---------------------------------------------------------------------------*/
30
31namespace Alien
32{
33
34/*---------------------------------------------------------------------------*/
35/*---------------------------------------------------------------------------*/
36
37class EigenProblem;
38
39/*!
40 * \ingroup core
41 * \brief Eigen solver interface
42 *
43 * Interface for all eigen solver package
44 *
45 * \tparam Matrix The type of matrix used
46 * \tparam Vector The type of vector used
47 */
48template <class Matrix, class Vector>
50{
51 public:
52 //! Free resources
54
55 //! Initialize the eigen solver
56 virtual void init() = 0;
57
58 /*!
59 * \brief Solve the eigen problem
60 * \param[in,out] problem The eigen problem
61 * \returns Solver success status
62 */
63 virtual bool solve(const EigenProblem& problem) = 0;
64
65 /*!
66 * \brief Indicates if the kernel is parallel
67 * \returns Parallel support capability
68 */
69 virtual bool hasParallelSupport() const = 0;
70
71 /*!
72 * \brief Get solver resolution status
73 * \returns The solver status
74 */
75 virtual const IEigenSolver::Status& getStatus() const = 0;
76};
77
78/*---------------------------------------------------------------------------*/
79/*---------------------------------------------------------------------------*/
80
81/*!
82 * \ingroup core
83 * \brief Generalized eigen solver internal
84 *
85 * Interface for all generalized eigen solver package
86 *
87 * \tparam Matrix The type of matrix used
88 * \tparam Vector The type of vector used
89 */
90template <class Matrix, class Vector>
92{
93 public:
94 //! Free resources
96
97 //! Initialize the eigen solver
98 virtual void init() = 0;
99
100 /*!
101 * \brief Solve the eigen problem
102 * \param[in,out] problem The eigen problem
103 * \returns Solver success status
104 */
105 virtual bool solve(const GeneralizedEigenProblem& problem) = 0;
106
107 /*!
108 * \brief Indicates if the kernel is parallel
109 * \returns Parallel support capability
110 */
111 virtual bool hasParallelSupport() const = 0;
112
113 /*!
114 * \brief Get solver resolution status
115 * \returns The solver status
116 */
117 virtual const IEigenSolver::Status& getStatus() const = 0;
118};
119
120/*---------------------------------------------------------------------------*/
121/*---------------------------------------------------------------------------*/
122
123} // namespace Alien
124
125/*---------------------------------------------------------------------------*/
126/*---------------------------------------------------------------------------*/
Defines an eigen problem.
Defines a generalized eigen problem.
virtual bool solve(const EigenProblem &problem)=0
Solve the eigen problem.
virtual const IEigenSolver::Status & getStatus() const =0
Get solver resolution status.
virtual void init()=0
Initialize the eigen solver.
virtual ~IInternalEigenSolver()
Free resources.
virtual bool hasParallelSupport() const =0
Indicates if the kernel is parallel.
Generalized eigen solver internal.
virtual const IEigenSolver::Status & getStatus() const =0
Get solver resolution status.
virtual bool solve(const GeneralizedEigenProblem &problem)=0
Solve the eigen problem.
virtual void init()=0
Initialize the eigen solver.
virtual ~IInternalGeneralizedEigenSolver()
Free resources.
virtual bool hasParallelSupport() const =0
Indicates if the kernel is parallel.
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --
Definition BackEnd.h:17
Eigen solver status.