28#ifndef _chemistry_qc_mbpt_mbpt_h
29#define _chemistry_qc_mbpt_mbpt_h
31#include <util/group/memory.h>
32#include <util/group/message.h>
33#include <util/group/thread.h>
34#include <chemistry/qc/basis/obint.h>
35#include <chemistry/qc/basis/tbint.h>
36#include <chemistry/qc/scf/scf.h>
46 static double ref_to_mp2_acc() {
return 100.0; }
54 int eliminate_in_gmat_;
55 const double *intbuf_;
62 int nvir, nocc, nsocc;
72 double print_percent_;
82 std::string algorithm_;
93 double restart_ecorr_;
94 int restart_orbital_v1_;
95 int restart_orbital_memgrp_;
98 void init_variables();
109 void compute_hsos_v1();
112 distsize_t compute_v2_memory(
int ni,
113 int nfuncmax,
int nbfme,
int nshell,
114 int ndocc,
int nsocc,
int nvir,
int nproc);
115 void compute_hsos_v2();
118 void compute_hsos_v2_lb();
121 int compute_cs_batchsize(
size_t mem_static,
int nocc_act);
124 distsize_t compute_cs_dynamic_memory(
int ni,
int nocc_act);
127 void form_max_dens(
double *DPmat,
signed char *maxp);
131 double *DPmat,
const double *mgdbuff);
132 void cs_cphf(
double **scf_vector,
134 void s2pdm_contrib(
const double *intderbuf,
double *PHF,
135 double *P2AO,
double **hf_ginter,
double **ginter);
136 void hcore_cs_grad(
double *PHF,
double *PMP2,
137 double **hf_ginter,
double **ginter);
138 void overlap_cs_grad(
double *WHF,
double *WMP2,
139 double **hf_ginter,
double **ginter);
140 void compute_cs_grad();
235 Ref<SCF> ref() {
return reference_; }
237 double corr_energy();
243 int nfzcore()
const {
return nfzc; };
244 int nfzvirt()
const {
return nfzv; };
static std::ostream & out0()
Return an ostream that writes from node 0.
The MBPT2 class implements several second-order perturbation theory methods.
Definition mbpt.h:44
bool analytic_gradient_implemented() const
must overload this in a derived class if analytic gradient can be computed
void set_desired_value_accuracy(double)
set the value accuracy
void print(std::ostream &o=ExEnv::out0()) const
Print information about the object.
void obsolete()
Marks all results as being out of date.
int nelectron()
Returns the number of electrons.
void compute()
Recompute at least the results that have compute true and are not already computed.
RefSymmSCMatrix density()
Returns the SO density.
void save_data_state(StateOut &)
Save the base classes (with save_data_state) and the members in the same order that the StateIn CTOR ...
void symmetry_changed()
Call this if you have changed the molecular symmetry of the molecule contained by this MolecularEnerg...
int value_implemented() const
double magnetic_moment() const
Computes the S (or J) magnetic moment of the target state(s), in units of .
MBPT2(const Ref< KeyVal > &)
The KeyVal constructor.
The RefDiagSCMatrix class is a smart pointer to an DiagSCMatrix specialization.
Definition matrix.h:389
The RefSCMatrix class is a smart pointer to an SCMatrix specialization.
Definition matrix.h:135
The RefSCVector class is a smart pointer to an SCVector specialization.
Definition matrix.h:55
The RefSymmSCMatrix class is a smart pointer to an SCSymmSCMatrix specialization.
Definition matrix.h:265
A template class that maintains references counts.
Definition ref.h:361
Restores fundamental and user-defined types from images created with StateOut.
Definition statein.h:79
Serializes fundamental and user-defined types.
Definition stateout.h:71
A Wavefunction is a MolecularEnergy that utilizies a GaussianBasisSet.
Definition wfn.h:52
Contains all MPQC code up to version 3.
Definition mpqcin.h:14