Program Listing for File direct_utils.hpp

Return to documentation for file (src/three_electron/direct_utils.hpp)

//
// Created by Zack Williams on 25/03/2024.
//

#ifndef THREE_ELECTRON_DIRECT_UTILS_HPP
#define THREE_ELECTRON_DIRECT_UTILS_HPP

#include "integrals/integrals.hpp"
#include "ri_utils.hpp"
#include "utils/utils.hpp"

namespace uw12::three_el {

utils::MatVec calculate_xab(
    const integrals::Integrals& W,
    const integrals::Integrals& V,
    const ri::ABSProjectors& abs_projectors
);

double calculate_direct_energy(
    const utils::MatVec& x,
    const utils::MatVec& ttilde,
    double scale_opp_spin,
    double scale_same_spin
);

linalg::Mat calculate_xab_dttilde(
    const linalg::Mat& W3idx_one_trans,
    const linalg::Mat& V3idx_one_trans,
    const linalg::Mat& xab,
    const linalg::Vec& W_vals,
    const linalg::Vec& V_vals,
    size_t n_active,
    size_t n_ao
);

linalg::Mat calculate_ttilde_dxab(
    const integrals::Integrals& W,
    const integrals::Integrals& V,
    const linalg::Mat& ttilde,
    const ri::ABSProjectors& abs_projectors
);

}  // namespace uw12::three_el

#endif  // THREE_ELECTRON_DIRECT_UTILS_HPP