Time Step Models
Fixed Step Loop
Repeated Updates
A fixed-step loop applies the same update rule for a known number of steps.
Program
Play the program to choose how many repeated updates advance the value.
fixed_step_loop.f90
Replay: real traced execution (multi-file project)
program fixed_step_loop_demo
implicit none
integer :: step
integer :: step_count
real :: dt
real :: rate
real :: value
step_count = 3
dt = 0.5
rate = 2.0
value = 10.0
do step = 1, step_count
value = value + rate * dt
end do
print '(I0, 1X, F0.1)', step_count, value
end program fixed_step_loop_demo
program fixed_step_loop_demo
implicit none
integer :: step
integer :: step_count
real :: dt
real :: rate
real :: value
step_count = 2
dt = 0.5
rate = 2.0
value = 10.0
do step = 1, step_count
value = value + rate * dt
end do
print '(I0, 1X, F0.1)', step_count, value
end program fixed_step_loop_demo
program fixed_step_loop_demo
implicit none
integer :: step
integer :: step_count
real :: dt
real :: rate
real :: value
step_count = 4
dt = 0.5
rate = 2.0
value = 10.0
do step = 1, step_count
value = value + rate * dt
end do
print '(I0, 1X, F0.1)', step_count, value
end program fixed_step_loop_demo
step_count ← 3
9step_count = 310dt = 0.5values this step3step_countdt ← 0.5
9step_count = 310dt = 0.511rate = 2.0values this step0.5dtrate ← 2.0
10dt = 0.511rate = 2.012value = 10.0values this step2.0ratevalue ← 10.0
11rate = 2.012value = 10.013do step = 1, step_countvalues this step10.0valuestep ← 1
12value = 10.013do step = 1, step_count14 value = value + rate * dtvalues this step1stepvalue ← 11.0
13do step = 1, step_count14 value = value + rate * dt15end dovalues this step10.0 → 11.0value1.0rate * dtstep ← 2
12value = 10.013do step = 1, step_count14 value = value + rate * dtvalues this step2stepvalue ← 12.0
13do step = 1, step_count14 value = value + rate * dt15end dovalues this step11.0 → 12.0value1.0rate * dtstep ← 3
12value = 10.013do step = 1, step_count14 value = value + rate * dtvalues this step3stepvalue ← 13.0
13do step = 1, step_count14 value = value + rate * dt15end dovalues this step12.0 → 13.0value1.0rate * dtprint '(I0, 1X, F0.1)', step_count, value
15 end do16 print '(I0, 1X, F0.1)', step_count, value17end program fixed_step_loop_demooutput3 13.0values this step3step_count13.0value
step_count ← 2
9step_count = 210dt = 0.5values this step2step_countdt ← 0.5
9step_count = 210dt = 0.511rate = 2.0values this step0.5dtrate ← 2.0
10dt = 0.511rate = 2.012value = 10.0values this step2.0ratevalue ← 10.0
11rate = 2.012value = 10.013do step = 1, step_countvalues this step10.0valuestep ← 1
12value = 10.013do step = 1, step_count14 value = value + rate * dtvalues this step1stepvalue ← 11.0
13do step = 1, step_count14 value = value + rate * dt15end dovalues this step10.0 → 11.0value1.0rate * dtstep ← 2
12value = 10.013do step = 1, step_count14 value = value + rate * dtvalues this step2stepvalue ← 12.0
13do step = 1, step_count14 value = value + rate * dt15end dovalues this step11.0 → 12.0value1.0rate * dtprint '(I0, 1X, F0.1)', step_count, value
15 end do16 print '(I0, 1X, F0.1)', step_count, value17end program fixed_step_loop_demooutput2 12.0values this step2step_count12.0value
step_count ← 4
9step_count = 410dt = 0.5values this step4step_countdt ← 0.5
9step_count = 410dt = 0.511rate = 2.0values this step0.5dtrate ← 2.0
10dt = 0.511rate = 2.012value = 10.0values this step2.0ratevalue ← 10.0
11rate = 2.012value = 10.013do step = 1, step_countvalues this step10.0valuestep ← 1
12value = 10.013do step = 1, step_count14 value = value + rate * dtvalues this step1stepvalue ← 11.0
13do step = 1, step_count14 value = value + rate * dt15end dovalues this step10.0 → 11.0value1.0rate * dtstep ← 2
12value = 10.013do step = 1, step_count14 value = value + rate * dtvalues this step2stepvalue ← 12.0
13do step = 1, step_count14 value = value + rate * dt15end dovalues this step11.0 → 12.0value1.0rate * dtstep ← 3
12value = 10.013do step = 1, step_count14 value = value + rate * dtvalues this step3stepvalue ← 13.0
13do step = 1, step_count14 value = value + rate * dt15end dovalues this step12.0 → 13.0value1.0rate * dtstep ← 4
12value = 10.013do step = 1, step_count14 value = value + rate * dtvalues this step4stepvalue ← 14.0
13do step = 1, step_count14 value = value + rate * dt15end dovalues this step13.0 → 14.0value1.0rate * dtprint '(I0, 1X, F0.1)', step_count, value
15 end do16 print '(I0, 1X, F0.1)', step_count, value17end program fixed_step_loop_demooutput4 14.0values this step4step_count14.0value
fixed step
A fixed-step model repeats the same update formula.
loop counter
`step` records which update is currently being applied.
accumulated state
`value` carries the result from one step into the next.