You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: components/omega/doc/design/TimeStepping.md
+79-3Lines changed: 79 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -91,13 +91,89 @@ If time permits, other schemes will be added and tested. This includes the four-
91
91
92
92
## 4 Design
93
93
94
-
Design specifics will be added at a later time.
94
+
To ensure modularity, each time stepper is implemented as a separate class. Since there will be common functionality and common interface between different time steppers, every time stepper inherits from an abstract `TimeStepper` base class.
95
+
96
+
### 4.1 Data types and parameters
97
+
98
+
#### 4.1.1 Parameters
99
+
100
+
The time stepper can be specified in the input configuration file:
101
+
```yaml
102
+
TimeIntegration:
103
+
TimeStepper: Forward-Backward
104
+
```
105
+
In the code, the time stepper type is represented by an enum:
106
+
```c++
107
+
enum TimeStepperType {
108
+
ForwardBackward,
109
+
AdamsBashforth2,
110
+
RungeKutta4,
111
+
...
112
+
}
113
+
```
114
+
115
+
#### 4.1.2 Class/structs/data types
116
+
117
+
#### 4.1.2.1 TimeStepper
118
+
119
+
The abstract `TimeStepper` class defines the interface that every time stepper needs to implement, and provides common data members and functionality.
As an example, the fourth order Runge-Kutta stepper extends the base class by storing the scheme weights and provides a concrete implementation of the `doStep` method.
0 commit comments