deal.II version 9.8.0
\(\newcommand{\dealvcentcolon}{\mathrel{\mathop{:}}}\) \(\newcommand{\dealcoloneq}{\dealvcentcolon\mathrel{\mkern-1.2mu}=}\) \(\newcommand{\jump}[1]{\left[\!\left[ #1 \right]\!\right]}\) \(\newcommand{\average}[1]{\left\{\!\left\{ #1 \right\}\!\right\}}\)
Loading...
Searching...
No Matches
trilinos_xpetra_types.h
Go to the documentation of this file.
1// ------------------------------------------------------------------------
2//
3// SPDX-License-Identifier: LGPL-2.1-or-later
4// Copyright (C) 2018 - 2024 by the deal.II authors
5//
6// This file is part of the deal.II library.
7//
8// Part of the source code is dual licensed under Apache-2.0 WITH
9// LLVM-exception OR LGPL-2.1-or-later. Detailed license information
10// governing the source code and code contributions can be found in
11// LICENSE.md and CONTRIBUTING.md at the top level directory of deal.II.
12//
13// ------------------------------------------------------------------------
14
15#ifndef dealii_trilinos_xpetra_types_h
16#define dealii_trilinos_xpetra_types_h
17
18#include <deal.II/base/config.h>
19
20#include <deal.II/base/types.h>
21
23
24#ifdef DEAL_II_TRILINOS_WITH_XPETRA
25# ifndef DOXYGEN
26# include <Xpetra_CrsGraphFactory.hpp>
27# include <Xpetra_CrsMatrixWrap.hpp>
28# include <Xpetra_DefaultPlatform.hpp>
29# include <Xpetra_Map.hpp>
30# include <Xpetra_MapFactory.hpp>
31# include <Xpetra_MultiVectorFactory.hpp>
32# include <Xpetra_Parameters.hpp>
33
34# ifdef DEAL_II_TRILINOS_WITH_SHYLU_DDFROSCH
35// //FROSch
36# include <FROSch_OneLevelPreconditioner_def.hpp>
37# include <FROSch_SchwarzPreconditioners_fwd.hpp>
38# include <FROSch_Tools_def.hpp>
39# include <FROSch_TwoLevelPreconditioner_def.hpp>
40# include <ShyLU_DDFROSch_config.h>
41# endif // DEAL_II_TRILINOS_WITH_SHYLU_DDFROSCH
42# endif // DOXYGEN
43#endif // DEAL_II_TRILINOS_WITH_XPETRA
44
45
47#ifdef DEAL_II_TRILINOS_WITH_XPETRA
48
49namespace LinearAlgebra
50{
51 namespace TpetraWrappers
52 {
53 namespace XpetraTypes
54 {
58 using LO = int;
59
64
70
74 template <typename MemorySpace>
75 using MapType = Xpetra::Map<LO, GO, NodeType<MemorySpace>>;
76
80 template <typename MemorySpace>
81 using GraphType = Xpetra::CrsGraph<LO, GO, NodeType<MemorySpace>>;
82
86 template <typename Number, typename MemorySpace>
87 using MultiVectorType =
88 Xpetra::MultiVector<Number, LO, GO, NodeType<MemorySpace>>;
89
94 template <typename Number, typename MemorySpace>
95 using LinearOperator =
96 Xpetra::Operator<Number, LO, GO, NodeType<MemorySpace>>;
97
101 template <typename Number, typename MemorySpace>
102 using MatrixType = Xpetra::Matrix<Number, LO, GO, NodeType<MemorySpace>>;
103
107 template <typename Number, typename MemorySpace>
108 using CrsMatrixType =
109 Xpetra::CrsMatrix<Number, LO, GO, NodeType<MemorySpace>>;
110
114 template <typename MemorySpace>
115 using MapFactoryType = Xpetra::MapFactory<LO, GO, NodeType<MemorySpace>>;
116
120 template <typename MemorySpace>
121 using GraphFactoryType =
122 Xpetra::CrsGraphFactory<LO, GO, NodeType<MemorySpace>>;
123
127 template <typename Number, typename MemorySpace>
128 using MultiVectorFactoryType =
129 Xpetra::MultiVectorFactory<Number, LO, GO, NodeType<MemorySpace>>;
130
134 template <typename MemorySpace>
135 using TpetraMapType = Xpetra::TpetraMap<LO, GO, NodeType<MemorySpace>>;
136
140 template <typename MemorySpace>
141 using TpetraGraphType =
142 Xpetra::TpetraCrsGraph<LO, GO, NodeType<MemorySpace>>;
143
148 template <typename Number, typename MemorySpace>
149 using XTpetraMultiVectorType =
150 Xpetra::TpetraMultiVector<Number, LO, GO, NodeType<MemorySpace>>;
151
155 template <typename Number, typename MemorySpace>
156 using TpetraCrsMatrixType =
157 Xpetra::TpetraCrsMatrix<Number, LO, GO, NodeType<MemorySpace>>;
158
163 template <typename Number, typename MemorySpace>
164 using CrsMatrixWrapType =
165 Xpetra::CrsMatrixWrap<Number, LO, GO, NodeType<MemorySpace>>;
166
167# ifdef DEAL_II_TRILINOS_WITH_SHYLU_DDFROSCH
171 template <typename Number, typename MemorySpace>
172 using XpetraToTpetraLinearOperator =
173 FROSch::TpetraPreconditioner<Number, LO, GO, NodeType<MemorySpace>>;
174
178 template <typename Number, typename MemorySpace>
179 using FROSchOneLevelType =
180 FROSch::OneLevelPreconditioner<Number, LO, GO, NodeType<MemorySpace>>;
181
182 template <typename Number, typename MemorySpace>
183 using FROSchTwoLevelType =
184 FROSch::TwoLevelPreconditioner<Number, LO, GO, NodeType<MemorySpace>>;
185# endif // DEAL_II_TRILINOS_WITH_SHYLU_DDFROSCH
186
187 } // namespace XpetraTypes
188 } // namespace TpetraWrappers
189} // namespace LinearAlgebra
190
191#endif // DEAL_II_TRILINOS_WITH_XPETRA
192
194
195#endif // dealii_trilinos_xpetra_types_h
#define DEAL_II_NAMESPACE_OPEN
Definition config.h:38
#define DEAL_II_NAMESPACE_CLOSE
Definition config.h:39
Tpetra::KokkosCompat::KokkosDeviceWrapperNode< typename MemorySpace::kokkos_space::execution_space, typename MemorySpace::kokkos_space > NodeType
Tpetra::CrsGraph< LO, GO, NodeType< MemorySpace > > GraphType
Tpetra::Map< LO, GO, NodeType< MemorySpace > > MapType
Tpetra::Operator< Number, LO, GO, NodeType< MemorySpace > > LinearOperator
Tpetra::MultiVector< Number, LO, GO, NodeType< MemorySpace > > MultiVectorType
Tpetra::CrsMatrix< Number, LO, GO, NodeType< MemorySpace > > MatrixType
int signed_global_dof_index
Definition types.h:103