Line |
Branch |
Exec |
Source |
1 |
|
|
// ______ ______ _ _ _____ ______ |
2 |
|
|
// | ____| ____| | (_)/ ____| | ____| |
3 |
|
|
// | |__ | |__ | | _| (___ ___| |__ |
4 |
|
|
// | __| | __| | | | |\___ \ / __| __| |
5 |
|
|
// | | | |____| |____| |____) | (__| |____ |
6 |
|
|
// |_| |______|______|_|_____/ \___|______| |
7 |
|
|
// Finite Elements for Life Sciences and Engineering |
8 |
|
|
// |
9 |
|
|
// License: LGL2.1 License |
10 |
|
|
// FELiScE default license: LICENSE in root folder |
11 |
|
|
// |
12 |
|
|
// Main authors: J-F. Gerbeau |
13 |
|
|
// |
14 |
|
|
|
15 |
|
|
#ifndef _FELISCE_TRANSIENT_HPP |
16 |
|
|
#define _FELISCE_TRANSIENT_HPP |
17 |
|
|
|
18 |
|
|
// System includes |
19 |
|
|
|
20 |
|
|
// External includes |
21 |
|
|
|
22 |
|
|
// Project includes |
23 |
|
|
#include "Core/shared_pointers.hpp" |
24 |
|
|
#include "Core/felisceParam.hpp" |
25 |
|
|
|
26 |
|
|
namespace felisce |
27 |
|
|
{ |
28 |
|
|
///@name felisce Globals |
29 |
|
|
///@{ |
30 |
|
|
|
31 |
|
|
///@} |
32 |
|
|
///@name Type Definitions |
33 |
|
|
///@{ |
34 |
|
|
|
35 |
|
|
///@} |
36 |
|
|
///@name Enum's |
37 |
|
|
///@{ |
38 |
|
|
|
39 |
|
|
///@} |
40 |
|
|
///@name Functions |
41 |
|
|
///@{ |
42 |
|
|
|
43 |
|
|
///@} |
44 |
|
|
///@name felisce Classes |
45 |
|
|
///@{ |
46 |
|
|
class FelisceTransient |
47 |
|
|
{ |
48 |
|
|
public: |
49 |
|
|
///@name Type Definitions |
50 |
|
|
///@{ |
51 |
|
|
|
52 |
|
|
/// Pointer definition of Point |
53 |
|
|
FELISCE_CLASS_POINTER_DEFINITION(FelisceTransient); |
54 |
|
|
|
55 |
|
|
///@} |
56 |
|
|
///@name Life Cycle |
57 |
|
|
///@{ |
58 |
|
|
|
59 |
|
|
/// default constructor |
60 |
|
|
FelisceTransient(); |
61 |
|
|
|
62 |
|
|
// copy constructor |
63 |
|
|
FelisceTransient(const FelisceTransient& rFelisceTransient); |
64 |
|
|
|
65 |
|
|
///@} |
66 |
|
|
///@name Operators |
67 |
|
|
///@{ |
68 |
|
|
|
69 |
|
|
///@} |
70 |
|
|
///@name Operations |
71 |
|
|
///@{ |
72 |
|
|
|
73 |
|
|
/** |
74 |
|
|
* @brief Increase the iterations counter |
75 |
|
|
*/ |
76 |
|
17471 |
void increaseCounter() {++non_linear_iteration;++total_number_iterations;} |
77 |
|
|
|
78 |
|
|
/** |
79 |
|
|
* @brief This method returns the iteration number as a string |
80 |
|
|
* @details Always returns 5 spaces |
81 |
|
|
* @note This can be optimized |
82 |
|
|
*/ |
83 |
|
|
std::string itStr() const; |
84 |
|
|
|
85 |
|
|
///@} |
86 |
|
|
///@name Access |
87 |
|
|
///@{ |
88 |
|
|
|
89 |
|
|
///@} |
90 |
|
|
///@name Inquiry |
91 |
|
|
///@{ |
92 |
|
|
|
93 |
|
|
///@} |
94 |
|
|
///@name Input and output |
95 |
|
|
///@{ |
96 |
|
|
|
97 |
|
|
/** |
98 |
|
|
* @brief This prints the information of the transient class |
99 |
|
|
*/ |
100 |
|
|
void print() const; |
101 |
|
|
|
102 |
|
|
///@} |
103 |
|
|
///@name Friends |
104 |
|
|
///@{ |
105 |
|
|
|
106 |
|
|
///@} |
107 |
|
|
///@name Member Variables |
108 |
|
|
///@{ |
109 |
|
|
|
110 |
|
|
double timeStep = 0.0; /// The increment of the time step |
111 |
|
|
double time = 0.0; /// The current time of the simulation |
112 |
|
|
int iteration = 0; /// The non-linear iteration number (NOTE: Should be unsigned) |
113 |
|
|
int non_linear_iteration = -1; /// The non-linear iteration number (NOTE: Should be unsigned, but interacts with PETSc) |
114 |
|
|
int total_number_iterations = 0; /// The total number of iterations |
115 |
|
|
|
116 |
|
|
///@} |
117 |
|
|
protected: |
118 |
|
|
///@name Protected static Member Variables |
119 |
|
|
///@{ |
120 |
|
|
|
121 |
|
|
///@} |
122 |
|
|
///@name Protected member Variables |
123 |
|
|
///@{ |
124 |
|
|
|
125 |
|
|
///@} |
126 |
|
|
///@name Protected Operators |
127 |
|
|
///@{ |
128 |
|
|
|
129 |
|
|
///@} |
130 |
|
|
///@name Protected Operations |
131 |
|
|
///@{ |
132 |
|
|
|
133 |
|
|
///@} |
134 |
|
|
///@name Protected Access |
135 |
|
|
///@{ |
136 |
|
|
|
137 |
|
|
///@} |
138 |
|
|
///@name Protected Inquiry |
139 |
|
|
///@{ |
140 |
|
|
|
141 |
|
|
///@} |
142 |
|
|
///@name Protected LifeCycle |
143 |
|
|
///@{ |
144 |
|
|
|
145 |
|
|
///@} |
146 |
|
|
private: |
147 |
|
|
///@name Private static Member Variables |
148 |
|
|
///@{ |
149 |
|
|
|
150 |
|
|
///@} |
151 |
|
|
///@name Private member Variables |
152 |
|
|
///@{ |
153 |
|
|
///@} |
154 |
|
|
///@name Private Operations |
155 |
|
|
///@{ |
156 |
|
|
|
157 |
|
|
///@} |
158 |
|
|
///@name Private Access |
159 |
|
|
///@{ |
160 |
|
|
|
161 |
|
|
///@} |
162 |
|
|
///@name Private Inquiry |
163 |
|
|
///@{ |
164 |
|
|
|
165 |
|
|
///@} |
166 |
|
|
///@name Private LifeCycle |
167 |
|
|
///@{ |
168 |
|
|
|
169 |
|
|
///@} |
170 |
|
|
}; |
171 |
|
|
///@} |
172 |
|
|
///@name Type Definitions |
173 |
|
|
///@{ |
174 |
|
|
|
175 |
|
|
///@} |
176 |
|
|
} /* namespace felisce.*/ |
177 |
|
|
|
178 |
|
|
#endif |
179 |
|
|
|