@@ -198,14 +198,14 @@ class HestonModel {
198198 int steps = static_cast <int >(T / dt);
199199
200200 // Use high-order SDE integrator for better accuracy
201- auto integrator = diffeq::sde::factory::make_sosra_integrator <std::vector<double >, double >(problem, wiener);
202- integrator-> set_time (0.0 );
201+ diffeq::sde::SOSRAIntegrator <std::vector<double >, double > integrator (problem, wiener);
202+ integrator. set_time (0.0 );
203203
204204 std::cout << " Initial state: S = " << x[0 ] << " , V = " << x[1 ] << std::endl;
205205
206206 // Integrate Heston model
207207 for (int i = 0 ; i < steps; ++i) {
208- integrator-> step (x, dt);
208+ integrator. step (x, dt);
209209
210210 // Output every 25 steps (quarterly)
211211 if (i % 25 == 0 ) {
@@ -270,14 +270,14 @@ class NoisyOscillator {
270270 drift_func, diffusion_func, diffeq::sde::NoiseType::DIAGONAL_NOISE);
271271
272272 auto wiener = diffeq::sde::factory::make_wiener_process<std::vector<double >, double >(1 , 67890 );
273- auto integrator = diffeq::sde::factory::make_milstein_integrator <std::vector<double >, double >(problem, wiener);
273+ diffeq::sde::MilsteinIntegrator <std::vector<double >, double > integrator (problem, wiener);
274274
275275 std::vector<double > state = {0.0 , 0.0 }; // Initial [x, xdot]
276276 double dt = 0.01 ;
277277 double T = 10.0 ;
278278 int steps = static_cast <int >(T / dt);
279279
280- integrator-> set_time (0.0 );
280+ integrator. set_time (0.0 );
281281
282282 std::cout << " Simulating controlled oscillator with noise..." << std::endl;
283283
@@ -293,7 +293,7 @@ class NoisyOscillator {
293293 total_error += error;
294294 max_error = std::max (max_error, error);
295295
296- integrator-> step (state, dt);
296+ integrator. step (state, dt);
297297
298298 // Output every 100 steps
299299 if (i % 100 == 0 ) {
@@ -356,14 +356,14 @@ class StochasticLotkaVolterra {
356356 drift_func, diffusion_func, diffeq::sde::NoiseType::DIAGONAL_NOISE);
357357
358358 auto wiener = diffeq::sde::factory::make_wiener_process<std::vector<double >, double >(2 , 11111 );
359- auto integrator = diffeq::sde::factory::make_sra1_integrator <std::vector<double >, double >(problem, wiener);
359+ diffeq::sde::SRA1Integrator <std::vector<double >, double > integrator (problem, wiener);
360360
361361 std::vector<double > population = {2.0 , 1.0 }; // Initial [prey, predator]
362362 double dt = 0.01 ;
363363 double T = 20.0 ;
364364 int steps = static_cast <int >(T / dt);
365365
366- integrator-> set_time (0.0 );
366+ integrator. set_time (0.0 );
367367
368368 std::cout << " Initial populations: prey = " << population[0 ] << " , predator = " << population[1 ] << std::endl;
369369
@@ -372,7 +372,7 @@ class StochasticLotkaVolterra {
372372 double min_pred = population[1 ], max_pred = population[1 ];
373373
374374 for (int i = 0 ; i < steps; ++i) {
375- integrator-> step (population, dt);
375+ integrator. step (population, dt);
376376
377377 // Update min/max
378378 min_prey = std::min (min_prey, population[0 ]);
@@ -423,10 +423,10 @@ void demonstrate_async_sde_integration() {
423423 drift_func, diffusion_func, diffeq::sde::NoiseType::DIAGONAL_NOISE);
424424
425425 auto wiener = diffeq::sde::factory::make_wiener_process<std::vector<double >, double >(2 , 22222 );
426- auto integrator = diffeq::sde::factory::make_euler_maruyama_integrator <std::vector<double >, double >(problem, wiener);
426+ diffeq::sde::EulerMaruyamaIntegrator <std::vector<double >, double > integrator (problem, wiener);
427427
428- // Create async integrator
429- auto async_integrator = diffeq::async::make_async_integrator ( integrator);
428+ // Note: Async integrator functionality is not currently available
429+ // For now, we'll use the regular integrator
430430
431431 std::vector<double > state = {1.0 , 0.0 };
432432 double dt = 0.01 ;
@@ -437,10 +437,9 @@ void demonstrate_async_sde_integration() {
437437
438438 auto start_time = std::chrono::high_resolution_clock::now ();
439439
440- // Async integration
440+ // Regular integration (async not available)
441441 for (int i = 0 ; i < steps; ++i) {
442- auto future = async_integrator->step_async (state, dt);
443- future.wait (); // Wait for completion
442+ integrator.step (state, dt);
444443
445444 if (i % 100 == 0 ) {
446445 std::cout << " Step " << i << " : [" << state[0 ] << " , " << state[1 ] << " ]" << std::endl;
@@ -450,7 +449,7 @@ void demonstrate_async_sde_integration() {
450449 auto end_time = std::chrono::high_resolution_clock::now ();
451450 auto duration = std::chrono::duration_cast<std::chrono::milliseconds>(end_time - start_time);
452451
453- std::cout << " Async integration completed in " << duration.count () << " ms" << std::endl;
452+ std::cout << " Integration completed in " << duration.count () << " ms" << std::endl;
454453 std::cout << " Final state: [" << state[0 ] << " , " << state[1 ] << " ]" << std::endl;
455454}
456455
0 commit comments