Namespace qdk::chemistry::data::detail

namespace detail

Functions

std::shared_ptr<ContainerTypes::MatrixVariant> add_matrix_variants(const ContainerTypes::MatrixVariant &mat1, const ContainerTypes::MatrixVariant &mat2)

Helper to add two ContainerTypes::MatrixVariants.

Parameters:
  • mat1 – First matrix variant

  • mat2 – Second matrix variant

Returns:

Shared pointer to new ContainerTypes::MatrixVariant containing the sum

std::shared_ptr<ContainerTypes::VectorVariant> add_vector_variants(const ContainerTypes::VectorVariant &vec1, const ContainerTypes::VectorVariant &vec2)

Helper to add two ContainerTypes::VectorVariants.

Parameters:
  • vec1 – First vector variant

  • vec2 – Second vector variant

Returns:

Shared pointer to new ContainerTypes::VectorVariant containing the sum

std::string denormalize_basis_set_name(const std::string &normalized)

Denormalize basis set name from filesystem representation.

Reverses the normalization:

  • st’ -> ‘*’

  • sl’ -> ‘/’

  • pl’ -> ‘+’

Parameters:

normalized – Normalized name from filesystem

Returns:

Original basis set name

bool is_matrix_variant_complex(const ContainerTypes::MatrixVariant &variant)

Check if a ContainerTypes::MatrixVariant contains complex type.

Parameters:

variant – The matrix variant to check

Returns:

True if contains Eigen::MatrixXcd, false if Eigen::MatrixXd

bool is_vector_variant_complex(const ContainerTypes::VectorVariant &variant)

Check if a ContainerTypes::VectorVariant contains complex type.

Parameters:

variant – The vector variant to check

Returns:

True if contains Eigen::VectorXcd, false if Eigen::VectorXd

template<typename Scalar>
std::shared_ptr<ContainerTypes::MatrixVariant> multiply_matrix_variant(const ContainerTypes::MatrixVariant &matrix, Scalar scalar)

Helper to create a ContainerTypes::MatrixVariant from scalar multiplication.

Parameters:
  • matrix – The matrix variant to multiply

  • scalar – The scalar value to multiply by

Returns:

Shared pointer to new ContainerTypes::MatrixVariant containing the result

template<typename Scalar>
std::shared_ptr<ContainerTypes::VectorVariant> multiply_vector_variant(const ContainerTypes::VectorVariant &vector, Scalar scalar)

Helper to create a ContainerTypes::VectorVariant from scalar multiplication.

Parameters:
  • vector – The vector variant to multiply

  • scalar – The scalar value to multiply by

Returns:

Shared pointer to new ContainerTypes::VectorVariant containing the result

std::string normalize_basis_set_name(const std::string &name)

Normalize basis set name for filesystem usage.

Replaces special characters that are problematic in filenames:

  • ’*’ -> ‘st’ (star)

  • ’/’ -> ‘sl’ (slash)

  • ’+’ -> ‘pl’ (plus)

Parameters:

name – Original basis set name (e.g., “6-31g*+”)

Returns:

Normalized name safe for filesystem (e.g., “6-31g_st__pl_”)

std::shared_ptr<ContainerTypes::VectorVariant> transpose_ijkl_klij_vector_variant(const ContainerTypes::VectorVariant &variant, int norbs)

Transpose a 2-RDM vector from (ij|kl) to (kl|ij) ordering.

Parameters:
  • variant – The vector variant to transpose

  • norbs – Number of orbitals

Returns:

shared pointer to new ContainerTypes::VectorVariant containing the transposed data