Miscellaneous
The function trace_over_density_matrix(rho_vectorized) allows you to compute the trace over a vectorized density matrix:
-
ScalarType danceq::internal::Operator::trace_over_density_matrix(const Vector<ScalarType> &rho) const
Computes the trace over this operator times a (vectorized) density matrix.
Calling this function is only possible if this Operator is of OperatorType Hamiltonian. The vectorized density matrix needs to have the squared dimension of this operator dimension. Let \(O_{ij}\) be the matrix elements of this operator; the expectation value with respect to the density matrix \(\rho_{ij}\) is
\[\langle O\rangle_\rho = \text{Tr} \left( O\rho \right) =\sum_k \sum_l O_{kl}\rho_{lk} \,.\]The function is compatible with MPI, and openMP. It further exploits the sparsity of the \(O\).
- Parameters:
rho – vectorized density matrix
- Returns:
expectation value
-
ScalarType danceq::internal::Operator::trace_over_density_matrix(const Vec &rho) const
Computes the trace over this operator times a (vectorized) density matrix in Petsc Vec format.
This function is only available if Petsc has been included. It is equaivelnt to trace_over_density_matrix(rho).
- Parameters:
rho – vectorized density matrix as Vec
- Returns:
expectation value
-
std::vector<std::string> danceq::internal::Operator::get_available_operators_list(void) const
Returns available local operators.
This are the keys of available_operators.
- Returns:
list of operators
-
int32_t danceq::internal::Operator::info(void) const
Prints all information of the class.
Prints various information such as dimension, the available_operators, and all input terms from add_operator(…).
- Returns:
error_code
-
bool danceq::internal::Operator::is_hermitian(void) const
Checks if the operator is hermitian (or symmetric if ScalarType is real).
\[M_{i,j} = \text{conj}\left(M_{j,i}\right) \, ,\,\forall i,j\]- Returns:
true
if matrix is hermitian otherwisefalse
-
bool danceq::internal::Operator::is_diagonal(void) const
Checks if the matrix is diagonal.
\[M_{i,j} = 0 \, ,\,\forall i\neq j\]- Returns:
true
if matrix is diagonal otherwisefalse
-
std::map<std::string, danceq::internal::SparseMatrix<ScalarType>> danceq::internal::Operator::get_available_operators(void) const
Returns the available operators.
Returns available_operators that act on a single site. The key value of the dictionary refers to its name, e.g.,
S+
.- Returns:
available_operators