@@ -17,24 +17,41 @@ PMAM4Stepper class >> order [
1717
1818{ #category : #stepping }
1919PMAM4Stepper >> doStep: aState prevState: prevState prevPrevState: prevPrevState time: t [
20+
2021 | approximateState1 approximateState2 |
21- self stepSize isNil
22- ifTrue: [ self error: ' step size required by stepper' ].
23- approximateState1 := aState + (self stepSize * (system state: aState time: t)).
24- approximateState2 := aState
25- +
26- (self stepSize
27- *
28- (3 / 8 * (system state: approximateState1 time: t + self stepSize) + (19 / 24 * (system state: aState time: t))
29- - (5 / 24 * (system state: prevState time: t - self stepSize))
30- + (1 / 24 * (system state: prevPrevState time: t - (2 * self stepSize))))).
31- ^ aState
32- +
33- (self stepSize
34- *
35- (3 / 8 * (system state: approximateState2 time: t + self stepSize) + (19 / 24 * (system state: aState time: t))
36- - (5 / 24 * (system state: prevState time: t - self stepSize))
37- + (1 / 24 * (system state: prevPrevState time: t - (2 * self stepSize)))))
22+ self stepSize ifNil: [ self error: ' step size required by stepper' ].
23+ approximateState1 := aState
24+ +
25+ (self stepSize * (system state: aState time: t)).
26+ approximateState2 := aState + (self stepSize
27+ *
28+ (3 / 8
29+ *
30+ (system
31+ state: approximateState1
32+ time: t + self stepSize)
33+ + (19 / 24 * (system state: aState time: t))
34+ -
35+ (5 / 24
36+ *
37+ (system
38+ state: prevState
39+ time: t - self stepSize))
40+ +
41+ (1 / 24
42+ *
43+ (system
44+ state: prevPrevState
45+ time: t - (2 * self stepSize))))).
46+ ^ aState + (self stepSize
47+ *
48+ (3 / 8
49+ * (system state: approximateState2 time: t + self stepSize)
50+ + (19 / 24 * (system state: aState time: t))
51+ - (5 / 24 * (system state: prevState time: t - self stepSize))
52+ +
53+ (1 / 24
54+ * (system state: prevPrevState time: t - (2 * self stepSize)))))
3855]
3956
4057{ #category : #stepping }
@@ -51,24 +68,39 @@ PMAM4Stepper >> doStep: aState prevState: prevState prevPrevState: prevPrevState
5168
5269{ #category : #stepping }
5370PMAM4Stepper >> lastStep: aState prevState: prevState prevPrevState: prevPrevState time: t deltaT: incrementOfTime [
71+
5472 | approximateState1 approximateState2 |
55- self stepSize isNil
56- ifTrue: [ self error: ' step size required by stepper' ].
57- approximateState1 := aState + (self stepSize * (system state: aState time: t)).
58- approximateState2 := aState
59- +
60- (self stepSize
61- *
62- (3 / 8 * (system state: approximateState1 time: t + incrementOfTime) + (19 / 24 * (system state: aState time: t))
63- - (5 / 24 * (system state: prevState time: t - incrementOfTime))
64- + (1 / 24 * (system state: prevPrevState time: t - (2 * incrementOfTime))))).
65- ^ aState
66- +
67- (self stepSize
68- *
69- (3 / 8 * (system state: approximateState2 time: t + incrementOfTime) + (19 / 24 * (system state: aState time: t))
70- - (5 / 24 * (system state: prevState time: t - incrementOfTime))
71- + (1 / 24 * (system state: prevPrevState time: t - (2 * incrementOfTime)))))
73+ self stepSize ifNil: [ self error: ' step size required by stepper' ].
74+ approximateState1 := aState
75+ +
76+ (self stepSize * (system state: aState time: t)).
77+ approximateState2 := aState + (self stepSize
78+ *
79+ (3 / 8
80+ *
81+ (system
82+ state: approximateState1
83+ time: t + incrementOfTime)
84+ + (19 / 24 * (system state: aState time: t))
85+ -
86+ (5 / 24
87+ *
88+ (system
89+ state: prevState
90+ time: t - incrementOfTime)) + (1 / 24
91+ *
92+ (system
93+ state: prevPrevState
94+ time: t - (2 * incrementOfTime))))).
95+ ^ aState + (self stepSize
96+ *
97+ (3 / 8
98+ * (system state: approximateState2 time: t + incrementOfTime)
99+ + (19 / 24 * (system state: aState time: t))
100+ - (5 / 24 * (system state: prevState time: t - incrementOfTime))
101+ + (1 / 24
102+ *
103+ (system state: prevPrevState time: t - (2 * incrementOfTime)))))
72104]
73105
74106{ #category : #stepping }
0 commit comments