Hello ,
I want to use SciMLOperators.jl with LinearSolve.jl to solve a linear system like
\left( A^T V^{-1} A + \lambda (W - I)^T (W - I) \right) x = A^T V^{-1} \mu
I created a FunctionOperator
for A
, V_inv
, W
and I
named mfopA
,mfopV
, mfopW
and mfopId
respectively. I would like to combine them like (right term):
R = cache_operator(transpose(mfopW - mfopId) * (mfopW - mfopId), L)
A = cache_operator(transpose(mfopA) * mfopV * mfopA + λ * R, L)
However, when I try A * L
, I have the following error:
MethodError: no method matching *(::SciMLOperators.TransposedOperator{Float64, FunctionOperator{…}}, ::Vector{Float64})
The function `*` exists, but no method is defined for this combination of argument types.
Closest candidates are:
*(::Any, ::Any, ::Any, ::Any...)
@ Base operators.jl:596
*(::Type{<:ProdOp}, ::Any, ::Any)
@ LinearOperatorCollection ~/.julia/packages/LinearOperatorCollection/qbON0/src/ProdOp.jl:73
*(::ChainRulesCore.NoTangent, ::Any)
@ ChainRulesCore ~/.julia/packages/ChainRulesCore/U6wNx/src/tangent_arithmetic.jl:64
...
Stacktrace:
[1] (::SciMLOperators.var"#175#176"{Vector{…}})(op::SciMLOperators.TransposedOperator{Float64, FunctionOperator{…}})
@ SciMLOperators ~/.julia/packages/SciMLOperators/diVke/src/basic.jl:588
[2] MappingRF
@ ./reduce.jl:100 [inlined]
[3] afoldl(::Base.MappingRF{…}, ::Base._InitialValue, ::SciMLOperators.TransposedOperator{…}, ::SciMLOperators.ScaledOperator{…})
@ Base ./operators.jl:553
[4] _foldl_impl(op::Base.MappingRF{…}, init::Base._InitialValue, itr::Tuple{…})
@ Base ./reduce.jl:68
[5] foldl_impl(op::Base.MappingRF{…}, nt::Base._InitialValue, itr::Tuple{…})
@ Base ./reduce.jl:48
[6] mapfoldl_impl(f::SciMLOperators.var"#175#176"{…}, op::typeof(Base.add_sum), nt::Base._InitialValue, itr::Tuple{…})
@ Base ./reduce.jl:44
[7] mapfoldl(f::Function, op::Function, itr::Tuple{…}; init::Base._InitialValue)
@ Base ./reduce.jl:175
[8] mapfoldl
@ ./reduce.jl:175 [inlined]
[9] mapreduce
@ ./reduce.jl:307 [inlined]
[10] sum(f::Function, a::Tuple{SciMLOperators.TransposedOperator{…}, SciMLOperators.ScaledOperator{…}})
@ Base ./reduce.jl:532
[11] *(L::SciMLOperators.AddedOperator{Float64, Tuple{…}}, v::Vector{Float64})
@ SciMLOperators ~/.julia/packages/SciMLOperators/diVke/src/basic.jl:588
[12] top-level scope
@ REPL[140]:1
Some type information was truncated. Use `show(err)` to see complete types.
Thanks!
fdekerm