37template <
class Tensor>
39 decltype(std::declval<block_tensor_type_t<Tensor>
const&>().block_by_ordinal(std::size_t{}));
42template <
class Tensor>
44 decltype(std::declval<std::remove_reference_t<Tensor>&>().block_by_ordinal(std::size_t{}));
51template <
class Tensor>
52concept BlockTensorView =
requires(block_tensor_type_t<Tensor>
const& tensor, std::size_t ordinal) {
53 typename block_tensor_type_t<Tensor>::element_type;
54 typename block_tensor_type_t<Tensor>::value_type;
55 typename block_tensor_type_t<Tensor>::key_type;
56 typename block_tensor_type_t<Tensor>::domain_type;
57 typename block_tensor_type_t<Tensor>::codomain_type;
58 typename block_tensor_type_t<Tensor>::storage_policy;
59 typename block_tensor_type_t<Tensor>::backend_selector_type;
60 { tensor.symmetry() } -> std::same_as<Symmetry>;
61 { tensor.domain() } -> std::same_as<block_tensor_domain_t<Tensor>
const&>;
62 { tensor.codomain() } -> std::same_as<block_tensor_codomain_t<Tensor>
const&>;
63 { block_tensor_type_t<Tensor>::order() } -> std::same_as<std::size_t>;
64 { block_tensor_type_t<Tensor>::key_coordinate_count() } -> std::same_as<std::size_t>;
65 { block_tensor_type_t<Tensor>::dense_block_order() } -> std::same_as<std::size_t>;
66 { tensor.stored_block_count() } -> std::same_as<std::size_t>;
67 { tensor.stored_keys() } -> std::same_as<std::span<block_tensor_key_t<Tensor>
const>>;
68 { tensor.block_by_ordinal(ordinal) } ->
TensorView;
72template <
class Tensor>
79template <
class Tensor>
83template <
class Tensor>
90template <
class Tensor>
100template <
class Tensor>
102 typename block_tensor_type_t<Tensor>::borrowed_block_tensor_view_tag;
106template <
class Tensor>
109 tensor.async_block_by_ordinal(ordinal).read();
113template <
class Tensor>
116 requires(std::remove_reference_t<Tensor>& tensor, std::size_t ordinal) {
117 tensor.async_block_by_ordinal(ordinal).write();
BlockTensorView exposing an independently scheduled read timeline per block.
Definition block_tensor_concepts.hpp:107
Tensor-level view of a symmetry-preserving collection of dense blocks.
Definition block_tensor_concepts.hpp:52
BlockTensorView whose destruction does not destroy its referenced numerical payload.
Definition block_tensor_concepts.hpp:101
BlockTensorView whose stored numerical blocks are generalized diagonals.
Definition block_tensor_concepts.hpp:91
Full logical mdspec with a rank-one view of its generalized diagonal components.
Definition mdspan/concepts.hpp:465
MutableBlockTensorView exposing an independently scheduled write timeline per block.
Definition block_tensor_concepts.hpp:114
BlockTensorView whose stored dense blocks support eventual mutation.
Definition block_tensor_concepts.hpp:73
TensorView whose writable mdspec supports eventual element assignment.
Definition tensor/concepts.hpp:133
Tensor-level object exposing readable multidimensional metadata and a backend selector.
Definition tensor/concepts.hpp:82
Definition async/async.hpp:26
std::remove_cvref_t< Tensor > block_tensor_type_t
Cvref-stripped BlockTensor-level object type.
Definition block_tensor_concepts.hpp:22
typename block_tensor_type_t< Tensor >::domain_type block_tensor_domain_t
Ordered domain type exposed by a BlockTensor-level object.
Definition block_tensor_concepts.hpp:31
typename block_tensor_type_t< Tensor >::value_type block_tensor_value_t
Scalar value type exposed by a BlockTensor-level object.
Definition block_tensor_concepts.hpp:25
decltype(std::declval< std::remove_reference_t< Tensor > & >().block_by_ordinal(std::size_t{})) block_tensor_mutable_block_t
Writable dense-block TensorView exposed by stable block ordinal.
Definition block_tensor_concepts.hpp:44
typename block_tensor_type_t< Tensor >::key_type block_tensor_key_t
Logical block-key type exposed by a BlockTensor-level object.
Definition block_tensor_concepts.hpp:28
typename block_tensor_type_t< Tensor >::codomain_type block_tensor_codomain_t
Ordered codomain type exposed by a BlockTensor-level object.
Definition block_tensor_concepts.hpp:34
decltype(std::declval< block_tensor_type_t< Tensor > const & >().block_by_ordinal(std::size_t{})) block_tensor_const_block_t
Read-only dense-block TensorView exposed by stable block ordinal.
Definition block_tensor_concepts.hpp:39
Defines the lightweight public handle for canonicalized direct-product symmetries.
Concepts for tensor-level objects that resolve mdspan kernel operands.