@@ -402,7 +402,7 @@ numerically-defined functions.
402
402
"""
403
403
struct ODEFunction{iip, specialize, F, TMM, Ta, Tt, TJ, JVP, VJP, JP, SP, TW, TWt, WP, TPJ,
404
404
O, TCV,
405
- SYS, IProb, IProbMap, IProbPmap} <: AbstractODEFunction{iip}
405
+ SYS, IProb, UIProb, IProbMap, IProbPmap} <: AbstractODEFunction{iip}
406
406
f:: F
407
407
mass_matrix:: TMM
408
408
analytic:: Ta
@@ -420,6 +420,7 @@ struct ODEFunction{iip, specialize, F, TMM, Ta, Tt, TJ, JVP, VJP, JP, SP, TW, TW
420
420
colorvec:: TCV
421
421
sys:: SYS
422
422
initializeprob:: IProb
423
+ update_initializeprob!:: UIProb
423
424
initializeprobmap:: IProbMap
424
425
initializeprobpmap:: IProbPmap
425
426
end
@@ -519,7 +520,7 @@ information on generating the SplitFunction from this symbolic engine.
519
520
struct SplitFunction{
520
521
iip, specialize, F1, F2, TMM, C, Ta, Tt, TJ, JVP, VJP, JP, SP, TW, TWt,
521
522
TPJ, O,
522
- TCV, SYS, IProb, IProbMap, IProbPmap} <: AbstractODEFunction{iip}
523
+ TCV, SYS, IProb, UIProb, IProbMap, IProbPmap} <: AbstractODEFunction{iip}
523
524
f1:: F1
524
525
f2:: F2
525
526
mass_matrix:: TMM
@@ -538,6 +539,7 @@ struct SplitFunction{
538
539
colorvec:: TCV
539
540
sys:: SYS
540
541
initializeprob:: IProb
542
+ update_initializeprob!:: UIProb
541
543
initializeprobmap:: IProbMap
542
544
initializeprobpmap:: IProbPmap
543
545
end
@@ -1508,7 +1510,7 @@ automatically symbolically generating the Jacobian and more from the
1508
1510
numerically-defined functions.
1509
1511
"""
1510
1512
struct DAEFunction{iip, specialize, F, Ta, Tt, TJ, JVP, VJP, JP, SP, TW, TWt, TPJ, O, TCV,
1511
- SYS, IProb, IProbMap, IProbPmap} < :
1513
+ SYS, IProb, UIProb, IProbMap, IProbPmap} < :
1512
1514
AbstractDAEFunction{iip}
1513
1515
f:: F
1514
1516
analytic:: Ta
@@ -1525,6 +1527,7 @@ struct DAEFunction{iip, specialize, F, Ta, Tt, TJ, JVP, VJP, JP, SP, TW, TWt, TP
1525
1527
colorvec:: TCV
1526
1528
sys:: SYS
1527
1529
initializeprob:: IProb
1530
+ update_initializeprob!:: UIProb
1528
1531
initializeprobmap:: IProbMap
1529
1532
initializeprobpmap:: IProbPmap
1530
1533
end
@@ -2413,6 +2416,8 @@ function ODEFunction{iip, specialize}(f;
2413
2416
colorvec = __has_colorvec (f) ? f. colorvec : nothing ,
2414
2417
sys = __has_sys (f) ? f. sys : nothing ,
2415
2418
initializeprob = __has_initializeprob (f) ? f. initializeprob : nothing ,
2419
+ update_initializeprob! = __has_update_initializeprob! (f) ?
2420
+ f. update_initializeprob! : nothing ,
2416
2421
initializeprobmap = __has_initializeprobmap (f) ? f. initializeprobmap : nothing ,
2417
2422
initializeprobpmap = __has_initializeprobpmap (f) ? f. initializeprobpmap : nothing
2418
2423
) where {iip,
@@ -2472,10 +2477,10 @@ function ODEFunction{iip, specialize}(f;
2472
2477
typeof (sparsity), Any, Any, typeof (W_prototype), Any,
2473
2478
Any,
2474
2479
typeof (_colorvec),
2475
- typeof (sys), Any, Any, Any}(_f, mass_matrix, analytic, tgrad, jac,
2480
+ typeof (sys), Any, Any, Any, Any }(_f, mass_matrix, analytic, tgrad, jac,
2476
2481
jvp, vjp, jac_prototype, sparsity, Wfact,
2477
2482
Wfact_t, W_prototype, paramjac,
2478
- observed, _colorvec, sys, initializeprob, initializeprobmap,
2483
+ observed, _colorvec, sys, initializeprob, update_initializeprob!, initializeprobmap,
2479
2484
initializeprobpmap)
2480
2485
elseif specialize === false
2481
2486
ODEFunction{iip, FunctionWrapperSpecialize,
@@ -2485,12 +2490,12 @@ function ODEFunction{iip, specialize}(f;
2485
2490
typeof (paramjac),
2486
2491
typeof (observed),
2487
2492
typeof (_colorvec),
2488
- typeof (sys), typeof (initializeprob),
2493
+ typeof (sys), typeof (initializeprob), typeof (update_initializeprob!),
2489
2494
typeof (initializeprobmap), typeof (initializeprobpmap)}(_f, mass_matrix,
2490
2495
analytic, tgrad, jac,
2491
2496
jvp, vjp, jac_prototype, sparsity, Wfact,
2492
2497
Wfact_t, W_prototype, paramjac,
2493
- observed, _colorvec, sys, initializeprob, initializeprobmap,
2498
+ observed, _colorvec, sys, initializeprob, update_initializeprob!, initializeprobmap,
2494
2499
initializeprobpmap)
2495
2500
else
2496
2501
ODEFunction{iip, specialize,
@@ -2500,11 +2505,12 @@ function ODEFunction{iip, specialize}(f;
2500
2505
typeof (paramjac),
2501
2506
typeof (observed),
2502
2507
typeof (_colorvec),
2503
- typeof (sys), typeof (initializeprob), typeof (initializeprobmap),
2508
+ typeof (sys), typeof (initializeprob), typeof (update_initializeprob!),
2509
+ typeof (initializeprobmap),
2504
2510
typeof (initializeprobpmap)}(_f, mass_matrix, analytic, tgrad, jac,
2505
2511
jvp, vjp, jac_prototype, sparsity, Wfact,
2506
2512
Wfact_t, W_prototype, paramjac,
2507
- observed, _colorvec, sys, initializeprob, initializeprobmap,
2513
+ observed, _colorvec, sys, initializeprob, update_initializeprob!, initializeprobmap,
2508
2514
initializeprobpmap)
2509
2515
end
2510
2516
end
@@ -2522,10 +2528,12 @@ function unwrapped_f(f::ODEFunction, newf = unwrapped_f(f.f))
2522
2528
Any, Any, Any, Any, typeof (f. jac_prototype),
2523
2529
typeof (f. sparsity), Any, Any, Any,
2524
2530
Any, typeof (f. colorvec),
2525
- typeof (f. sys), Any, Any, Any}(newf, f. mass_matrix, f. analytic, f. tgrad, f. jac,
2531
+ typeof (f. sys), Any, Any, Any, Any}(
2532
+ newf, f. mass_matrix, f. analytic, f. tgrad, f. jac,
2526
2533
f. jvp, f. vjp, f. jac_prototype, f. sparsity, f. Wfact,
2527
2534
f. Wfact_t, f. W_prototype, f. paramjac,
2528
- f. observed, f. colorvec, f. sys, f. initializeprob, f. initializeprobmap,
2535
+ f. observed, f. colorvec, f. sys, f. initializeprob,
2536
+ f. update_initializeprob!, f. initializeprobmap,
2529
2537
f. initializeprobpmap)
2530
2538
else
2531
2539
ODEFunction{isinplace (f), specialization (f), typeof (newf), typeof (f. mass_matrix),
@@ -2534,11 +2542,12 @@ function unwrapped_f(f::ODEFunction, newf = unwrapped_f(f.f))
2534
2542
typeof (f. sparsity), typeof (f. Wfact), typeof (f. Wfact_t), typeof (f. W_prototype),
2535
2543
typeof (f. paramjac),
2536
2544
typeof (f. observed), typeof (f. colorvec),
2537
- typeof (f. sys), typeof (f. initializeprob), typeof (f. initializeprobmap),
2545
+ typeof (f. sys), typeof (f. initializeprob), typeof (f. update_initializeprob!),
2546
+ typeof (f. initializeprobmap),
2538
2547
typeof (f. initializeprobpmap)}(newf, f. mass_matrix, f. analytic, f. tgrad, f. jac,
2539
2548
f. jvp, f. vjp, f. jac_prototype, f. sparsity, f. Wfact,
2540
2549
f. Wfact_t, f. W_prototype, f. paramjac,
2541
- f. observed, f. colorvec, f. sys, f. initializeprob,
2550
+ f. observed, f. colorvec, f. sys, f. initializeprob, f . update_initializeprob!,
2542
2551
f. initializeprobmap, f. initializeprobpmap)
2543
2552
end
2544
2553
end
@@ -2641,7 +2650,8 @@ end
2641
2650
2642
2651
@add_kwonly function SplitFunction (f1, f2, mass_matrix, cache, analytic, tgrad, jac, jvp,
2643
2652
vjp, jac_prototype, sparsity, Wfact, Wfact_t, paramjac,
2644
- observed, colorvec, sys, initializeprob, initializeprobmap, initializeprobpmap)
2653
+ observed, colorvec, sys, initializeprob, update_initializeprob!,
2654
+ initializeprobmap, initializeprobpmap)
2645
2655
f1 = ODEFunction (f1)
2646
2656
f2 = ODEFunction (f2)
2647
2657
@@ -2655,12 +2665,12 @@ end
2655
2665
typeof (cache), typeof (analytic), typeof (tgrad), typeof (jac), typeof (jvp),
2656
2666
typeof (vjp), typeof (jac_prototype), typeof (sparsity),
2657
2667
typeof (Wfact), typeof (Wfact_t), typeof (paramjac), typeof (observed), typeof (colorvec),
2658
- typeof (sys), typeof (initializeprob), typeof (initializeprobmap),
2668
+ typeof (sys), typeof (initializeprob), typeof (update_initializeprob!), typeof ( initializeprobmap),
2659
2669
typeof (initializeprobpmap)}(
2660
2670
f1, f2, mass_matrix,
2661
2671
cache, analytic, tgrad, jac, jvp, vjp,
2662
2672
jac_prototype, sparsity, Wfact, Wfact_t, paramjac, observed, colorvec, sys,
2663
- initializeprob, initializeprobmap, initializeprobpmap)
2673
+ initializeprob, update_initializeprob!, initializeprobmap, initializeprobpmap)
2664
2674
end
2665
2675
function SplitFunction {iip, specialize} (f1, f2;
2666
2676
mass_matrix = __has_mass_matrix (f1) ?
@@ -2690,6 +2700,8 @@ function SplitFunction{iip, specialize}(f1, f2;
2690
2700
nothing ,
2691
2701
sys = __has_sys (f1) ? f1. sys : nothing ,
2692
2702
initializeprob = __has_initializeprob (f1) ? f1. initializeprob : nothing ,
2703
+ update_initializeprob! = __has_update_initializeprob! (f1) ?
2704
+ f1. update_initializeprob! : nothing ,
2693
2705
initializeprobmap = __has_initializeprobmap (f1) ? f1. initializeprobmap : nothing ,
2694
2706
initializeprobpmap = __has_initializeprobpmap (f1) ? f1. initializeprobpmap : nothing
2695
2707
) where {iip,
@@ -2701,12 +2713,12 @@ function SplitFunction{iip, specialize}(f1, f2;
2701
2713
2702
2714
if specialize === NoSpecialize
2703
2715
SplitFunction{iip, specialize, Any, Any, Any, Any, Any, Any, Any, Any, Any,
2704
- Any, Any, Any, Any, Any,
2716
+ Any, Any, Any, Any, Any, Any,
2705
2717
Any, Any, Any, Any, Any, Any}(f1, f2, mass_matrix, _func_cache,
2706
2718
analytic,
2707
2719
tgrad, jac, jvp, vjp, jac_prototype,
2708
2720
sparsity, Wfact, Wfact_t, paramjac,
2709
- observed, colorvec, sys, initializeprob, initializeprobmap,
2721
+ observed, colorvec, sys, initializeprob. update_initializeprob! , initializeprobmap,
2710
2722
initializeprobpmap, initializeprobpmap)
2711
2723
else
2712
2724
SplitFunction{iip, specialize, typeof (f1), typeof (f2), typeof (mass_matrix),
@@ -2715,12 +2727,13 @@ function SplitFunction{iip, specialize}(f1, f2;
2715
2727
typeof (jac_prototype), typeof (sparsity),
2716
2728
typeof (Wfact), typeof (Wfact_t), typeof (paramjac), typeof (observed),
2717
2729
typeof (colorvec),
2718
- typeof (sys), typeof (initializeprob), typeof (initializeprobmap),
2730
+ typeof (sys), typeof (initializeprob), typeof (update_initializeprob!),
2731
+ typeof (initializeprobmap),
2719
2732
typeof (initializeprobpmap)}(f1, f2,
2720
2733
mass_matrix, _func_cache, analytic, tgrad, jac,
2721
2734
jvp, vjp, jac_prototype,
2722
2735
sparsity, Wfact, Wfact_t, paramjac, observed, colorvec, sys,
2723
- initializeprob, initializeprobmap, initializeprobpmap)
2736
+ initializeprob, update_initializeprob!, initializeprobmap, initializeprobpmap)
2724
2737
end
2725
2738
end
2726
2739
@@ -3346,6 +3359,8 @@ function DAEFunction{iip, specialize}(f;
3346
3359
colorvec = __has_colorvec (f) ? f. colorvec : nothing ,
3347
3360
sys = __has_sys (f) ? f. sys : nothing ,
3348
3361
initializeprob = __has_initializeprob (f) ? f. initializeprob : nothing ,
3362
+ update_initializeprob! = __has_update_initializeprob! (f) ?
3363
+ f. update_initializeprob! : nothing ,
3349
3364
initializeprobmap = __has_initializeprobmap (f) ? f. initializeprobmap : nothing ,
3350
3365
initializeprobpmap = __has_initializeprobpmap (f) ? f. initializeprobpmap : nothing ) where {
3351
3366
iip,
@@ -3387,22 +3402,25 @@ function DAEFunction{iip, specialize}(f;
3387
3402
DAEFunction{iip, specialize, Any, Any, Any,
3388
3403
Any, Any, Any, Any, Any,
3389
3404
Any, Any, Any,
3390
- Any, typeof (_colorvec), Any, Any, Any, Any}(_f, analytic, tgrad, jac, jvp,
3405
+ Any, typeof (_colorvec), Any, Any, Any, Any, Any }(_f, analytic, tgrad, jac, jvp,
3391
3406
vjp, jac_prototype, sparsity,
3392
3407
Wfact, Wfact_t, paramjac, observed,
3393
- _colorvec, sys, initializeprob, initializeprobmap, initializeprobpmap)
3408
+ _colorvec, sys, initializeprob, update_initializeprob!,
3409
+ initializeprobmap, initializeprobpmap)
3394
3410
else
3395
3411
DAEFunction{iip, specialize, typeof (_f), typeof (analytic), typeof (tgrad),
3396
3412
typeof (jac), typeof (jvp), typeof (vjp), typeof (jac_prototype),
3397
3413
typeof (sparsity), typeof (Wfact), typeof (Wfact_t),
3398
3414
typeof (paramjac),
3399
3415
typeof (observed), typeof (_colorvec),
3400
- typeof (sys), typeof (initializeprob), typeof (initializeprobmap),
3416
+ typeof (sys), typeof (initializeprob), typeof (update_initializeprob!),
3417
+ typeof (initializeprobmap),
3401
3418
typeof (initializeprobpmap)}(
3402
3419
_f, analytic, tgrad, jac, jvp, vjp,
3403
3420
jac_prototype, sparsity, Wfact, Wfact_t,
3404
3421
paramjac, observed,
3405
- _colorvec, sys, initializeprob, initializeprobmap, initializeprobpmap)
3422
+ _colorvec, sys, initializeprob, update_initializeprob!,
3423
+ initializeprobmap, initializeprobpmap)
3406
3424
end
3407
3425
end
3408
3426
@@ -4345,6 +4363,7 @@ __has_sys(f) = isdefined(f, :sys)
4345
4363
__has_analytic_full (f) = isdefined (f, :analytic_full )
4346
4364
__has_resid_prototype (f) = isdefined (f, :resid_prototype )
4347
4365
__has_initializeprob (f) = isdefined (f, :initializeprob )
4366
+ __has_update_initializeprob! (f) = isdefined (f, :update_initializeprob! )
4348
4367
__has_initializeprobmap (f) = isdefined (f, :initializeprobmap )
4349
4368
__has_initializeprobpmap (f) = isdefined (f, :initializeprobpmap )
4350
4369
@@ -4362,6 +4381,9 @@ has_sys(f::AbstractSciMLFunction) = __has_sys(f) && f.sys !== nothing
4362
4381
function has_initializeprob (f:: AbstractSciMLFunction )
4363
4382
__has_initializeprob (f) && f. initializeprob != = nothing
4364
4383
end
4384
+ function has_update_initializeprob! (f:: AbstractSciMLFunction )
4385
+ __has_update_initializeprob! (f) && f. update_initializeprob! != = nothing
4386
+ end
4365
4387
function has_initializeprobmap (f:: AbstractSciMLFunction )
4366
4388
__has_initializeprobmap (f) && f. initializeprobmap != = nothing
4367
4389
end
0 commit comments