|
| | BlockTensorMatrixFreeOps (tensor_type const &prototype, operator_type operation) |
| | Freeze a vector structure and take ownership of its apply operation.
|
| |
| void | matvec (tensor_type &output, tensor_type const &input) |
| | Apply the stored matrix-free operation as output <- OP*input.
|
| |
| auto | allocate_like (tensor_type const &vector) const -> tensor_type |
| | Allocate a vector with the frozen structure and unspecified values.
|
| |
template<BorrowedBlockTensorView View>
requires detail::CompatibleBlockVector<View, tensor_type> |
| auto | allocate_like (View const &view) const -> tensor_type |
| | Allocate owning workspace from retained view metadata and its leaf context.
|
| |
| void | axpy (tensor_type &output, scalar_type factor, tensor_type const &input) const |
| | Add a scalar multiple of one input to an output.
|
| |
| | BlockTensorVectorOps (tensor_type const &prototype) |
| | Freeze the Krylov vector space represented by a prototype tensor.
|
| |
| void | copy (tensor_type &output, tensor_type const &input) const |
| | Copy one vector into another without changing either structure.
|
| |
| auto | inner_product (tensor_type const &lhs, tensor_type const &rhs) const -> scalar_type |
| | Return the conjugate-linear inner product as a host scalar.
|
| |
| auto | norm (tensor_type const &vector) const -> real_type |
| | Return the Euclidean norm as a host scalar.
|
| |
| auto | problem_dimension () const noexcept -> std::size_t |
| | Return the number of stored numerical degrees of freedom.
|
| |
template<class Vector >
requires detail::CompatibleBlockVector<Vector, tensor_type> && (std::is_lvalue_reference_v<Vector&&> || BorrowedBlockTensorView<Vector>) |
| auto | prototype_view (Vector &&vector) const |
| | Own prototype metadata while borrowing its numerical payload and allocation context.
|
| |
| void | scal (tensor_type &vector, scalar_type factor) const |
| | Scale one vector in place.
|
| |
| void | set_zero (tensor_type &vector) const |
| | Set every stored numerical block to zero.
|
| |
template<class Vector >
requires detail::CompatibleBlockVector<Vector, tensor_type> |
| auto | vector_dimension (Vector const &vector) const -> std::size_t |
| | Validate a vector and return the frozen problem dimension.
|
| |
template<class
Tensor, class Operator>
class uni20::krylov::BlockTensorMatrixFreeOps< Tensor, Operator >
Combine fixed BlockTensor vector algebra with an owned matrix-free apply operation.
The operation is invoked as operation(output, input) only after both vectors have been validated against the exact structure frozen by the prototype. The operation object may retain immutable Hamiltonian or environment state needed by repeated Krylov applies.
- Template Parameters
-
| Tensor | Owning sparse BlockTensor value type. |
| Operator | Output-first matrix-free operation object. |