Skip to content

Clarification of required fields for custom operators #412

@nHackel

Description

@nHackel

Hello, we have a few packages with custom operators based on LinearOperators.jl and with the recent 2.13 update and the included internal LinearOperator field changes from #406 our operators became incompatible (see here and related issues).

Such custom operators might be outside the scope of the package, but if not, I think it would be helpful to document the property or methods a custom operator needs to implement in order to be compatible with the package and to consider those part of the public interface.

As an example, if we consider this function:

function allocate_vectors_args3!(op::AbstractLinearOperator)
  S = storage_type(op)
  op.Mv = S(undef, op.nrow)
  op.Mtu = (op.nrow == op.ncol) ? op.Mv : S(undef, op.ncol)
  return op
end

LinearOperators.jl dispatches on AbstractLinearOperator and if we inherit from that we need to have ncol, Mv and so on. And in particular, previous versions had Mv5.

If custom operators are within the package's intended scope, maybe we could add a small section to either the readme or the docs which describes the necessary fields and methods a custom operator needs to implement

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions