Core types#
The abstract interfaces every Ginkgo class lives behind. LinOp is the
linear-operator interface — matrices, solvers, preconditioners, and any
composed operator inherits from it. LinOpFactory is the matching
factory interface that generates a LinOp from a system matrix. The
remaining types in this section are mixins and trait classes that
concrete operators implement.
The operator interface#
LinOp— abstract base for every linear operator in Ginkgo. Definesapply, copy/clone, size, executor, and the logging hooks that flow through every operation.LinOpFactory— abstract base for factories that produce aLinOp(typically a solver or preconditioner) when given a system matrix.
Operator algebra#
Combination— a linear combination ofLinOps, \(c_1\, A_1 + c_2\, A_2 + \cdots + c_k\, A_k\), as a singleLinOp.Composition— function composition ofLinOps, \(A_1 \cdot A_2 \cdot \ldots \cdot A_n\), evaluated right-to-left.
Memory containers#
array— owning, executor-aware contiguous buffer; the storage unit that backs every Ginkgo data structure.matrix_data— host-side(row, col, value)triple-list used as the executor-independent assembly format for every sparse matrix type.
Mixins and traits#
EnableLinOp— CRTP mixin that supplies the boilerplateLinOpoverrides —apply_impldispatch, default copy/clone, polymorphic-object plumbing — so concrete operators only need to implement the algorithm.Transposable— trait interface for operators that can produce their transpose and conjugate transpose.