-
Notifications
You must be signed in to change notification settings - Fork 305
Expand file tree
/
Copy pathtrilinos_application.h
More file actions
219 lines (168 loc) · 5.73 KB
/
Copy pathtrilinos_application.h
File metadata and controls
219 lines (168 loc) · 5.73 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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
// KRATOS _____ _ _ _
// |_ _| __(_) (_)_ __ ___ ___
// | || '__| | | | '_ \ / _ \/ __|
// | || | | | | | | | | (_) \__
// |_||_| |_|_|_|_| |_|\___/|___/ APPLICATION
//
// License: BSD License
// Kratos default license: kratos/license.txt
//
// Main authors: Riccardo Rossi
//
#pragma once
// System includes
// External includes
// Project includes
#include "includes/kratos_application.h"
namespace Kratos
{
///@name Kratos Globals
///@{
///@}
///@name Type Definitions
///@{
///@}
///@name Enum's
///@{
/**
* @brief Enum to select the linear algebra library used in Trilinos
* @details This enum is used to select the linear algebra library used in Trilinos. The options are Epetra and Tpetra. Epetra is the default linear algebra library used in Trilinos, while Tpetra is a newer linear algebra library that is designed to be more scalable and efficient for large problems. The choice of linear algebra library can have a significant impact on the performance of the linear solvers and preconditioners used in Trilinos, so it is important to select the appropriate library for the problem at hand.
*/
enum class TrilinosLinearAlgebraLibrary
{
EPETRA, /// Epetra linear algebra library
TPETRA /// Tpetra linear algebra library
};
///@}
///@name Functions
///@{
///@}
///@name Kratos Classes
///@{
/**
* @class KratosTrilinosApplication
* @ingroup TrilinosApplication
* @brief This Application is used to interface with Trilinos
* @details The TrilinosApplication is the application used to interface with Trilinos. It is used to create the linear solvers and preconditioners that are available in Trilinos. The application is designed to be as general as possible, so that it can be used with any of the Trilinos packages. The application is designed to be used with the TrilinosApplicationFactory, which is used to create the linear solvers and preconditioners that are available in Trilinos. The application is designed to be used with the TrilinosApplicationFactory, which is used to create the linear solvers and preconditioners that are available in Trilinos. The application is designed to be used with the TrilinosApplicationFactory, which is used to create the linear solvers and preconditioners that are available in Trilinos. The application is designed to be used with the TrilinosApplicationFactory, which is used to create the linear solvers and preconditioners that are available in Trilinos.
*/
class KRATOS_API(TRILINOS_APPLICATION) KratosTrilinosApplication : public KratosApplication {
public:
///@name Type Definitions
///@{
/// Pointer definition of KratosTrilinosApplication
KRATOS_CLASS_POINTER_DEFINITION(KratosTrilinosApplication);
///@}
///@name Life Cycle
///@{
/// Default constructor.
KratosTrilinosApplication() : KratosApplication("TrilinosApplication") {}
/// Destructor.
~KratosTrilinosApplication() override {}
///@}
///@name Operators
///@{
///@}
///@name Operations
///@{
/**
* @brief This method is used to register specific application components.
* @details This method is used to register the Trilinos linear solvers.
*/
void Register() override;
/**
* @brief This method is used to unregister specific application components.
* @details This method is used to unregister specific application components.
*/
void DeregisterApplication() override;
///@}
///@name Access
///@{
///@}
///@name Inquiry
///@{
///@}
///@name Input and output
///@{
/// Turn back information as a string.
std::string Info() const override { return "KratosTrilinosApplication"; }
/// Print information about this object.
void PrintInfo(std::ostream& rOStream) const override {
rOStream << Info();
PrintData(rOStream);
}
///// Print object's data.
void PrintData(std::ostream& rOStream) const override {
KRATOS_WATCH("in KratosMeshMovingApplication application");
KRATOS_WATCH(KratosComponents<VariableData>::GetComponents().size());
rOStream << "Variables:" << std::endl;
KratosComponents<VariableData>().PrintData(rOStream);
rOStream << std::endl;
rOStream << "Elements:" << std::endl;
KratosComponents<Element>().PrintData(rOStream);
rOStream << std::endl;
rOStream << "Conditions:" << std::endl;
KratosComponents<Condition>().PrintData(rOStream);
}
///@}
///@name Friends
///@{
///@}
protected:
///@name Protected static Member Variables
///@{
///@}
///@name Protected member Variables
///@{
///@}
///@name Protected Operators
///@{
///@}
///@name Protected Operations
///@{
///@}
///@name Protected Access
///@{
///@}
///@name Protected Inquiry
///@{
///@}
///@name Protected LifeCycle
///@{
///@}
private:
///@name Static Member Variables
///@{
// static const ApplicationCondition msApplicationCondition;
///@}
///@name Member Variables
///@{
///@}
///@name Private Operators
///@{
///@}
///@name Private Operations
///@{
///@}
///@name Private Access
///@{
///@}
///@name Private Inquiry
///@{
///@}
///@name Un accessible methods
///@{
/// Assignment operator.
KratosTrilinosApplication& operator=(
KratosTrilinosApplication const& rOther);
/// Copy constructor.
KratosTrilinosApplication(KratosTrilinosApplication const& rOther);
///@}
}; // Class KratosTrilinosApplication
///@}
///@name Type Definitions
///@{
///@}
///@name Input and output
///@{
///@}
} // namespace Kratos.