@@ -544,25 +544,25 @@ function WorkPrecisionSet(prob::AbstractRODEProblem, abstols, reltols, setups,
544
544
weak_dense_errors = weak_dense_errors)
545
545
for sim in sol_k] for sol_k in _solutions_k]
546
546
if error_estimate ∈ WEAK_ERRORS
547
- errors = [[solutions[j][i]. weak_errors[error_estimate] for i in 1 : M] for j in 1 : N]
547
+ errors = [[solutions[j][i]. weak_errors for i in 1 : M] for j in 1 : N]
548
548
else
549
- errors = [[solutions[j][i]. error_means[error_estimate] for i in 1 : M] for j in 1 : N]
549
+ errors = [[solutions[j][i]. error_means for i in 1 : M] for j in 1 : N]
550
550
end
551
551
552
552
local _sol
553
553
554
554
# Now time it
555
+ _abstols = [get (setups[k], :abstols , abstols) for k in 1 : N]
556
+ _reltols = [get (setups[k], :reltols , reltols) for k in 1 : N]
557
+ _dts = [get (setups[k], :dts , zeros (length (_abstols))) for k in 1 : N]
555
558
for k in 1 : N
556
559
# precompile
557
560
GC. gc ()
558
- _abstols = get (setups[k], :abstols , abstols)
559
- _reltols = get (setups[k], :reltols , reltols)
560
- _dts = get (setups[k], :dts , zeros (length (_abstols)))
561
561
filtered_setup = filter (p -> p. first in DiffEqBase. allowedkeywords, setups[k])
562
562
563
563
_sol = solve (prob, setups[k][:alg ];
564
- kwargs... , filtered_setup... , abstol = _abstols[1 ],
565
- reltol = _reltols[1 ], dt = _dts[1 ],
564
+ kwargs... , filtered_setup... , abstol = _abstols[k][ 1 ],
565
+ reltol = _reltols[k][ 1 ], dt = _dts[k] [1 ],
566
566
timeseries_errors = false ,
567
567
dense_errors = false )
568
568
x = isempty (_sol. t) ? 0 : round (Int, mean (_sol. t) - sum (_sol. t) / length (_sol. t))
@@ -571,8 +571,8 @@ function WorkPrecisionSet(prob::AbstractRODEProblem, abstols, reltols, setups,
571
571
for i in 1 : numruns
572
572
time_tmp[i] = @elapsed sol = solve (prob, setups[k][:alg ];
573
573
kwargs... , filtered_setup... ,
574
- abstol = _abstols[j],
575
- reltol = _reltols[j], dt = _dts[j],
574
+ abstol = _abstols[k][ j],
575
+ reltol = _reltols[k][ j], dt = _dts[k] [j],
576
576
timeseries_errors = false ,
577
577
dense_errors = false )
578
578
end
@@ -581,7 +581,8 @@ function WorkPrecisionSet(prob::AbstractRODEProblem, abstols, reltols, setups,
581
581
end
582
582
end
583
583
584
- wps = [WorkPrecision (prob, abstols, reltols, errors[i], times[:, i], names[i], N)
584
+ stats = nothing
585
+ wps = [WorkPrecision (prob, _abstols[i], _reltols[i], errors[i], times[:, i], _dts[i], stats, names[i], N)
585
586
for i in 1 : N]
586
587
WorkPrecisionSet (wps, N, abstols, reltols, prob, setups, names, error_estimate,
587
588
numruns_error)
@@ -609,18 +610,18 @@ function WorkPrecisionSet(prob::AbstractEnsembleProblem, abstols, reltols, setup
609
610
time_tmp = Vector {Float64} (undef, numruns)
610
611
611
612
# First calculate all of the errors
613
+ _abstols = [get (setups[k], :abstols , abstols) for k in 1 : N]
614
+ _reltols = [get (setups[k], :reltols , reltols) for k in 1 : N]
615
+ _dts = [get (setups[k], :dts , zeros (length (_abstols))) for k in 1 : N]
612
616
for k in 1 : N
613
- _abstols = get (setups[k], :abstols , abstols)
614
- _reltols = get (setups[k], :reltols , reltols)
615
- _dts = get (setups[k], :dts , zeros (length (_abstols)))
616
617
filtered_setup = filter (p -> p. first in DiffEqBase. allowedkeywords, setups[k])
617
618
618
619
for j in 1 : M
619
620
sol = solve (prob, setups[k][:alg ], ensemblealg;
620
621
filtered_setup... ,
621
- abstol = _abstols[j],
622
- reltol = _reltols[j],
623
- dt = _dts[j],
622
+ abstol = _abstols[k][ j],
623
+ reltol = _reltols[k][ j],
624
+ dt = _dts[k][ j],
624
625
timeseries_errors = false ,
625
626
dense_errors = false ,
626
627
trajectories = Int (trajectories), kwargs... )
@@ -659,16 +660,13 @@ function WorkPrecisionSet(prob::AbstractEnsembleProblem, abstols, reltols, setup
659
660
for k in 1 : N
660
661
# precompile
661
662
GC. gc ()
662
- _abstols = get (setups[k], :abstols , abstols)
663
- _reltols = get (setups[k], :reltols , reltols)
664
- _dts = get (setups[k], :dts , zeros (length (_abstols)))
665
663
filtered_setup = filter (p -> p. first in DiffEqBase. allowedkeywords, setups[k])
666
664
667
665
_sol = solve (prob, setups[k][:alg ], ensemblealg;
668
666
filtered_setup... ,
669
- abstol = _abstols[1 ],
670
- reltol = _reltols[1 ],
671
- dt = _dts[1 ],
667
+ abstol = _abstols[k][ 1 ],
668
+ reltol = _reltols[k][ 1 ],
669
+ dt = _dts[k][ 1 ],
672
670
timeseries_errors = false ,
673
671
dense_errors = false ,
674
672
trajectories = Int (trajectories), kwargs... )
@@ -678,9 +676,9 @@ function WorkPrecisionSet(prob::AbstractEnsembleProblem, abstols, reltols, setup
678
676
for i in 1 : numruns
679
677
time_tmp[i] = @elapsed sol = solve (prob, setups[k][:alg ], ensemblealg;
680
678
filtered_setup... ,
681
- abstol = _abstols[j],
682
- reltol = _reltols[j],
683
- dt = _dts[j],
679
+ abstol = _abstols[k][ j],
680
+ reltol = _reltols[k][ j],
681
+ dt = _dts[k][ j],
684
682
timeseries_errors = false ,
685
683
dense_errors = false ,
686
684
trajectories = Int (trajectories),
@@ -690,8 +688,8 @@ function WorkPrecisionSet(prob::AbstractEnsembleProblem, abstols, reltols, setup
690
688
GC. gc ()
691
689
end
692
690
end
693
-
694
- wps = [WorkPrecision (prob, abstols, reltols , errors[i], times[:, i], names[i], N)
691
+ stats = nothing
692
+ wps = [WorkPrecision (prob, _abstols[i], _reltols[i] , errors[i], times[:, i], _dts[i], stats , names[i], N)
695
693
for i in 1 : N]
696
694
WorkPrecisionSet (wps, N, abstols, reltols, prob, setups, names, error_estimate,
697
695
Int (trajectories))
0 commit comments