Skip to content

Commit a461a15

Browse files
jClugstorChrisRackauckas
authored andcommitted
make HYPREExt use aliasing API
1 parent 8e573f4 commit a461a15

File tree

1 file changed

+40
-1
lines changed

1 file changed

+40
-1
lines changed

ext/LinearSolveHYPREExt.jl

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ end
5555

5656
function SciMLBase.init(prob::LinearProblem, alg::HYPREAlgorithm,
5757
args...;
58-
alias_A = false, alias_b = false,
58+
alias = LinearAliasSpecifier(),
5959
# TODO: Implement eltype for HYPREMatrix in HYPRE.jl? Looks useful
6060
# even if it is not AbstractArray.
6161
abstol = default_tol(prob.A isa HYPREMatrix ? HYPRE_Complex :
@@ -72,6 +72,45 @@ function SciMLBase.init(prob::LinearProblem, alg::HYPREAlgorithm,
7272
kwargs...)
7373
@unpack A, b, u0, p = prob
7474

75+
if haskey(kwargs, :alias_A) || haskey(kwargs, :alias_b)
76+
aliases = LinearAliasSpecifier()
77+
78+
if haskey(kwargs, :alias_A)
79+
message = "`alias_A` keyword argument is deprecated, to set `alias_A`,
80+
please use an ODEAliasSpecifier, e.g. `solve(prob, alias = LinearAliasSpecifier(alias_A = true))"
81+
Base.depwarn(message, :init)
82+
Base.depwarn(message, :solve)
83+
aliases = LinearAliasSpecifier(alias_A = values(kwargs).alias_A)
84+
end
85+
86+
if haskey(kwargs, :alias_b)
87+
message = "`alias_b` keyword argument is deprecated, to set `alias_b`,
88+
please use an ODEAliasSpecifier, e.g. `solve(prob, alias = LinearAliasSpecifier(alias_b = true))"
89+
Base.depwarn(message, :init)
90+
Base.depwarn(message, :solve)
91+
aliases = LinearAliasSpecifier(
92+
alias_A = aliases.alias_A, alias_b = values(kwargs).alias_b)
93+
end
94+
else
95+
if alias isa Bool
96+
aliases = LinearAliasSpecifier(alias = alias)
97+
else
98+
aliases = alias
99+
end
100+
end
101+
102+
if isnothing(aliases.alias_A)
103+
alias_A = false
104+
else
105+
alias_A = aliases.alias_A
106+
end
107+
108+
if isnothing(aliases.alias_b)
109+
alias_b = false
110+
else
111+
alias_b = aliases.alias_b
112+
end
113+
75114
A = A isa HYPREMatrix ? A : HYPREMatrix(A)
76115
b = b isa HYPREVector ? b : HYPREVector(b)
77116
u0 = u0 isa HYPREVector ? u0 : (u0 === nothing ? nothing : HYPREVector(u0))

0 commit comments

Comments
 (0)