Program Listing for File integrals.hpp
↰ Return to documentation for file (src/integrals/integrals.hpp)
//
// Created by Zack Williams on 30/11/2020.
//
#ifndef UW12_INTEGRALS_HPP
#define UW12_INTEGRALS_HPP
#include "base_integrals.hpp"
#include "utils/linalg.hpp"
#include "utils/utils.hpp"
namespace uw12::integrals {
class Integrals {
public:
Integrals(
const BaseIntegrals &_base_integrals,
const utils::Orbitals &_occ_orbitals,
const utils::Orbitals &_active_orbitals,
bool _store_one_trans = true,
bool _store_one_trans_ri = true
);
[[nodiscard]] const utils::MatVec &get_X3idx_one_trans() const;
[[nodiscard]] const utils::MatVec &get_X3idx_one_trans_ri() const;
[[nodiscard]] const utils::MatVec &get_X3idx_two_trans() const;
[[nodiscard]] linalg::Mat get_X4idx_three_trans(size_t sigma) const;
[[nodiscard]] linalg::Mat get_X4idx_four_trans(size_t sigma) const;
[[nodiscard]] std::vector<linalg::Vec> get_X_D() const;
[[nodiscard]] const linalg::Mat &get_P2() const;
[[nodiscard]] const linalg::Vec &get_df_vals() const;
[[nodiscard]] const linalg::Mat &get_J3() const;
[[nodiscard]] const linalg::Mat &get_J3_ri() const;
[[nodiscard]] size_t spin_channels() const;
[[nodiscard]] size_t number_ao_orbitals() const;
[[nodiscard]] size_t number_occ_orbitals(size_t sigma) const;
[[nodiscard]] size_t number_active_orbitals(size_t sigma) const;
[[nodiscard]] const BaseIntegrals &get_base_integrals() const;
private:
std::shared_ptr<BaseIntegrals> base_integrals;
utils::Orbitals occ_orbitals;
utils::Orbitals active_orbitals;
std::shared_ptr<utils::MatVec> one_trans;
std::shared_ptr<utils::MatVec> one_trans_ri;
std::shared_ptr<utils::MatVec> two_trans;
std::shared_ptr<std::mutex> one_trans_lock;
std::shared_ptr<std::mutex> one_trans_ri_lock;
std::shared_ptr<std::mutex> two_trans_lock;
bool store_one_trans;
bool store_one_trans_ri;
};
} // namespace uw12::integrals
#endif // UW12_INTEGRALS_HPP