Program Listing for File libuw12.hpp

Return to documentation for file (libuw12.hpp)

//
// Created by Zack Williams on 12/02/2024.
//

#ifndef LIBUW12_HPP
#define LIBUW12_HPP

#include "src/integrals/base_integrals.hpp"
#include "src/three_electron/ri_utils.hpp"
#include "src/utils/utils.hpp"

namespace uw12 {

using integrals::BaseIntegrals;

using three_el::ri::ABSProjectors;

using utils::Occupations;

using utils::Orbitals;

BaseIntegrals setup_base_integrals(
    const double* X3,
    const double* X2,
    const double* X3_ri,
    size_t n_ao,
    size_t n_df,
    size_t n_ri,
    bool copy_data = false
);

BaseIntegrals setup_base_integrals(
    const double* X3,
    const double* X2,
    size_t n_ao,
    size_t n_df,
    bool copy_data = false
);

ABSProjectors setup_abs_projectors(const double* S, size_t n_ao, size_t n_ri);

Orbitals setup_orbitals(
    const double* C, size_t n_ao, size_t n_orb, size_t n_spin
);

Occupations setup_occupations(const double* occ, size_t n_occ);

Occupations setup_occupations(
    const double* occ, size_t n_occ_alpha, size_t n_occ_beta
);

double uw12_energy(
    const BaseIntegrals& W,
    const BaseIntegrals& V,
    const BaseIntegrals& WV,
    const ABSProjectors& abs_projectors,
    const Orbitals& orbitals,
    const Occupations& occ,
    const std::vector<size_t>& n_active,
    double scale_opp_spin,
    double scale_same_spin,
    size_t print_level = 0
);

double uw12_fock(
    double* fock,
    const BaseIntegrals& W,
    const BaseIntegrals& V,
    const BaseIntegrals& WV,
    const ABSProjectors& abs_projectors,
    const Orbitals& orbitals,
    const Occupations& occ,
    const std::vector<size_t>& n_active,
    double scale_opp_spin,
    double scale_same_spin,
    size_t print_level = 0
);

}  // namespace uw12

#endif  // LIBUW12_HPP