@@ -131,13 +131,15 @@ function find_callback_time(integrator,callback)
131
131
end
132
132
133
133
function apply_callback! (integrator,callback:: ContinuousCallback ,cb_time,prev_sign)
134
+ saved_in_cb = false
134
135
if cb_time != zero (typeof (integrator. t))
135
136
change_t_via_interpolation! (integrator,integrator. tprev+ cb_time)
136
137
end
137
138
138
139
if callback. save_positions[1 ]
139
140
update_running_noise! (integrator)
140
- savevalues! (integrator)
141
+ savevalues! (integrator,true )
142
+ saved_in_cb = true
141
143
end
142
144
143
145
integrator. u_modified = true
@@ -162,40 +164,44 @@ function apply_callback!(integrator,callback::ContinuousCallback,cb_time,prev_si
162
164
if ! callback. save_positions[1 ]
163
165
update_running_noise! (integrator)
164
166
end
165
- savevalues! (integrator)
167
+ savevalues! (integrator,true )
168
+ saved_in_cb = true
166
169
end
167
- return true
170
+ return true ,saved_in_cb
168
171
end
169
- false
172
+ false ,saved_in_cb
170
173
end
171
174
172
175
# Base Case: Just one
173
176
function apply_discrete_callback! (integrator:: SDEIntegrator ,callback:: DiscreteCallback )
177
+ saved_in_cb = false
174
178
if callback. save_positions[1 ]
175
- savevalues! (integrator)
179
+ savevalues! (integrator,true )
180
+ saved_in_cb = true
176
181
end
177
182
178
183
integrator. u_modified = true
179
184
if callback. condition (integrator. t,integrator. u,integrator)
180
185
callback. affect! (integrator)
181
186
if callback. save_positions[2 ]
182
- savevalues! (integrator)
187
+ savevalues! (integrator,true )
188
+ saved_in_cb = true
183
189
end
184
190
end
185
- integrator. u_modified
191
+ integrator. u_modified,saved_in_cb
186
192
end
187
193
188
194
# Starting: Get bool from first and do next
189
195
function apply_discrete_callback! (integrator:: SDEIntegrator ,callback:: DiscreteCallback ,args... )
190
- apply_discrete_callback! (integrator,apply_discrete_callback! (integrator,callback),args... )
196
+ apply_discrete_callback! (integrator,apply_discrete_callback! (integrator,callback)... ,args... )
191
197
end
192
198
193
- function apply_discrete_callback! (integrator:: SDEIntegrator ,discrete_modified:: Bool ,callback:: DiscreteCallback ,args... )
194
- bool = apply_discrete_callback! (integrator,apply_discrete_callback! (integrator,callback),args... )
195
- discrete_modified || bool
199
+ function apply_discrete_callback! (integrator:: SDEIntegrator ,discrete_modified:: Bool ,saved_in_cb :: Bool , callback:: DiscreteCallback ,args... )
200
+ bool,saved_in_cb2 = apply_discrete_callback! (integrator,apply_discrete_callback! (integrator,callback)... ,args... )
201
+ discrete_modified || bool, saved_in_cb || saved_in_cb2
196
202
end
197
203
198
- function apply_discrete_callback! (integrator:: SDEIntegrator ,discrete_modified:: Bool ,callback:: DiscreteCallback )
199
- bool = apply_discrete_callback! (integrator,callback)
200
- discrete_modified || bool
204
+ function apply_discrete_callback! (integrator:: SDEIntegrator ,discrete_modified:: Bool ,saved_in_cb :: Bool , callback:: DiscreteCallback )
205
+ bool,saved_in_cb2 = apply_discrete_callback! (integrator,callback)
206
+ discrete_modified || bool, saved_in_cb || saved_in_cb2
201
207
end
0 commit comments