Skip to content

Commit e1fb067

Browse files
committed
Allow to dispatch default_options() on integrator method and add custom options for SPARK methods.
1 parent fa21e04 commit e1fb067

File tree

3 files changed

+12
-6
lines changed

3 files changed

+12
-6
lines changed

src/integrators/integrator.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ function GeometricIntegrator(
4848
integratormethod::GeometricMethod,
4949
solvermethod::SolverMethod,
5050
iguess::Extrapolation;
51-
options = default_options(),
51+
options = default_options(integratormethod),
5252
method = initmethod(integratormethod, problem),
5353
caches = CacheDict(problem, method),
5454
solver = initsolver(solvermethod, options, method, caches)

src/integrators/solvers.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
struct NoSolver <: SolverMethod end
33

4-
default_options() = Options(
4+
default_options(method = nothing) = Options(
55
min_iterations = 1,
66
x_abstol = 8eps(),
77
f_abstol = 8eps(),

src/spark/abstract.jl

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,28 @@ abstract type LSPARKMethod <: LDAEMethod end
55
abstract type PSPARKMethod <: PDAEMethod end
66

77
const AbstractSPARKMethod = Union{HSPARKMethod, ISPARKMethod, LSPARKMethod, PSPARKMethod}
8-
const AbstractSPARKProblem{DT<:Number, TT<:Real} =
9-
Union{HDAEProblem{DT,TT},
8+
const AbstractSPARKProblem{DT<:Number, TT<:Real} =
9+
Union{HDAEProblem{DT,TT},
1010
IDAEProblem{DT,TT},
1111
LDAEProblem{DT,TT},
1212
PDAEProblem{DT,TT}}
1313

14-
Integrators.default_solver(::AbstractSPARKMethod) = Newton()
1514
Integrators.default_iguess(::AbstractSPARKMethod) = HermiteExtrapolation()
15+
Integrators.default_solver(::AbstractSPARKMethod) = Newton()
16+
Integrators.default_options(::AbstractSPARKMethod) = Options(
17+
x_reltol = 8eps(),
18+
x_suctol = 2eps(),
19+
f_abstol = 8eps(),
20+
f_reltol = 8eps(),
21+
f_suctol = 2eps(),
22+
)
1623

1724

1825
nstages(method::AbstractSPARKMethod) = nstages(tableau(method))
1926
pstages(method::AbstractSPARKMethod) = pstages(tableau(method))
2027
eachstage(method::AbstractSPARKMethod) = eachstage(tableau(method))
2128
hasnullvector(method::AbstractSPARKMethod) = hasnullvector(tableau(method))
2229

23-
2430
# create nonlinear solver
2531
function initsolver(::Newton, config::Options, method::AbstractSPARKMethod, caches::CacheDict)
2632
NewtonSolver(zero(nlsolution(caches)), zero(nlsolution(caches)); linesearch = Backtracking(), config = config)

0 commit comments

Comments
 (0)