forked from Exawind/nalu-wind
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLinearSolverTypes.h
More file actions
105 lines (77 loc) · 3.59 KB
/
LinearSolverTypes.h
File metadata and controls
105 lines (77 loc) · 3.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
// Copyright 2017 National Technology & Engineering Solutions of Sandia, LLC
// (NTESS), National Renewable Energy Laboratory, University of Texas Austin,
// Northwest Research Associates. Under the terms of Contract DE-NA0003525
// with NTESS, the U.S. Government retains certain rights in this software.
//
// This software is released under the BSD 3-clause license. See LICENSE file
// for more details.
//
#ifndef LinearSolverTypes_h
#define LinearSolverTypes_h
#include <KokkosInterface.h>
#include <Tpetra_Details_DefaultTypes.hpp>
#include <Tpetra_CrsGraph.hpp>
#include <Tpetra_CrsMatrix.hpp>
#include <Tpetra_Vector.hpp>
#include <Tpetra_MultiVector.hpp>
#include <Tpetra_Operator.hpp>
// Forward declare templates
namespace Teuchos {
template <typename T>
class ArrayRCP;
template <typename T>
class MpiComm;
class ParameterList;
}
namespace Belos {
template <typename Scalar, typename MultiVector>
class MultiVecTraits;
template <typename Scalar, typename MultiVector, typename Operator>
class OperatorTraits;
template <typename Scalar, typename MultiVector, typename Operator>
class LinearProblem;
template <typename Scalar, typename MultiVector, typename Operator>
class SolverManager;
template <typename Scalar, typename MultiVector, typename Operator>
class TpetraSolverFactory;
}
namespace Ifpack2 {
template <typename Scalar, typename LocalOrdinal, typename GlobalOrdinal, typename Node>
class Preconditioner;
}
namespace sierra{
namespace nalu{
class TpetraLinearSolver;
struct LinSys {
using Scalar = Tpetra::Details::DefaultTypes::scalar_type;
using GlobalOrdinal = Tpetra::Details::DefaultTypes::global_ordinal_type;
using LocalOrdinal = Tpetra::Details::DefaultTypes::local_ordinal_type;
using RowLengths = Kokkos::DualView<size_t*, DeviceSpace>;
using DeviceRowLengths = RowLengths::t_dev;
using HostRowLengths = RowLengths::t_host;
using Node = Tpetra::Map<LocalOrdinal, GlobalOrdinal>::node_type;
using Graph = Tpetra::CrsGraph< LocalOrdinal, GlobalOrdinal, Node>;
using LocalGraph = typename Graph::local_graph_type;
using Comm = Teuchos::MpiComm<int>;
using Export = Tpetra::Export< LocalOrdinal, GlobalOrdinal, Node >;
using Import = Tpetra::Import< LocalOrdinal, GlobalOrdinal, Node >;
using Map = Tpetra::Map<LocalOrdinal,GlobalOrdinal,Node>;
using MultiVector = Tpetra::MultiVector<Scalar,LocalOrdinal,GlobalOrdinal,Node>;
using OneDVector = Teuchos::ArrayRCP<Scalar >;
using ConstOneDVector = Teuchos::ArrayRCP<const Scalar >;
using LocalVector = MultiVector::dual_view_type::t_host;
using Matrix = Tpetra::CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>;
using LocalMatrix = Matrix::local_matrix_type;
using Operator = Tpetra::Operator<Scalar, LocalOrdinal, GlobalOrdinal, Node>;
using MultiVectorTraits = Belos::MultiVecTraits<Scalar, MultiVector>;
using OperatorTraits = Belos::OperatorTraits<Scalar,MultiVector, Operator>;
using LinearProblem = Belos::LinearProblem<Scalar, MultiVector, Operator>;
using SolverManager = Belos::SolverManager<Scalar, MultiVector, Operator>;
using SolverFactory = Belos::TpetraSolverFactory<Scalar, MultiVector, Operator>;
using Preconditioner = Ifpack2::Preconditioner<Scalar, LocalOrdinal, GlobalOrdinal, Node>;
using EntityToLIDView = Kokkos::View<LocalOrdinal*, Kokkos::LayoutRight, LinSysMemSpace>;
using ConstEntityToLIDView = Kokkos::View<const LocalOrdinal*, Kokkos::LayoutRight, LinSysMemSpace>;
};
} // namespace nalu
} // namespace Sierra
#endif