/usr/include/sc/chemistry/qc/mbptr12/mp2r12_energy.h is in libsc-dev 2.3.1-16.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 | //
// mp2r12_energy.h
//
// Copyright (C) 2003 Edward Valeev
//
// Author: Edward Valeev <edward.valeev@chemistry.gatech.edu>
// Maintainer: EV
//
// This file is part of the SC Toolkit.
//
// The SC Toolkit is free software; you can redistribute it and/or modify
// it under the terms of the GNU Library General Public License as published by
// the Free Software Foundation; either version 2, or (at your option)
// any later version.
//
// The SC Toolkit is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Library General Public License for more details.
//
// You should have received a copy of the GNU Library General Public License
// along with the SC Toolkit; see the file COPYING.LIB. If not, write to
// the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
//
// The U.S. Government is granted a limited license as per AL 91-7.
//
#ifdef __GNUG__
#pragma interface
#endif
#ifndef _chemistry_qc_mbptr12_mp2r12energy_h
#define _chemistry_qc_mbptr12_mp2r12energy_h
#include <util/ref/ref.h>
#include <chemistry/qc/mbptr12/linearr12.h>
//#include <chemistry/qc/mbptr12/vxb_eval.h>
#include <chemistry/qc/mbptr12/r12int_eval.h>
#include <chemistry/qc/mbptr12/twobodygrid.h>
namespace sc {
/** Class MP2R12Energy is the object that computes and maintains MP2-R12 energies */
class MP2R12Energy : virtual public SavableState {
Ref<R12IntEval> r12eval_;
LinearR12::StandardApproximation stdapprox_;
bool ebc_;
int debug_;
bool evaluated_;
RefSCVector er12_aa_, er12_ab_, emp2r12_aa_, emp2r12_ab_;
// The coefficients are stored ij by kl, where kl is the r12-multiplied pair
RefSCMatrix Caa_, Cab_;
double emp2tot_aa_() const;
double emp2tot_ab_() const;
double er12tot_aa_();
double er12tot_ab_();
// Initialize SCVectors and SCMatrices
void init_();
// Computes values of all 2-body products from
// space1 and space2 if electron 1 is at r1 and
// electron 2 is at r2. equiv specifies whether electrons
// are equivalent (same spin) or not
RefSCVector compute_2body_values_(bool equiv, const Ref<MOIndexSpace>& space1, const Ref<MOIndexSpace>& space2,
const SCVector3& r1, const SCVector3& r2) const;
public:
MP2R12Energy(StateIn&);
MP2R12Energy(Ref<R12IntEval>& r12eval, LinearR12::StandardApproximation stdapp, int debug);
~MP2R12Energy();
void save_data_state(StateOut&);
void obsolete();
void print(std::ostream&o=ExEnv::out0()) const;
void print_pair_energies(bool spinadapted, std::ostream&so=ExEnv::out0());
Ref<R12IntEval> r12eval() const;
LinearR12::StandardApproximation stdapp() const;
/** Returns whether Generalized Brillouin Condition (GBC) was used in evaluation of
the MP2-R12 intermediates */
bool gbc() const;
/** Returns whether Extended Brillouin Condition (EBC) was used in evaluation of
the MP2-R12 intermediates and the MP2-R12 energy */
bool ebc() const;
void set_debug(int debug);
int get_debug() const;
RefSCDimension dim_aa() const;
RefSCDimension dim_ab() const;
RefSCDimension dim_s() const;
RefSCDimension dim_t() const;
/// Computes the first-order R12 wave function and MP2-R12 energy
void compute();
/** Computes the value of the alpha-alpha pair function ij
when electrons 1 and 2 reside at r1 and r2 */
double compute_pair_function_aa(int ij, const SCVector3& r1, const SCVector3& r2);
/** Computes the value of the alpha-beta pair function ij
when electrons 1 and 2 reside at r1 and r2 */
double compute_pair_function_ab(int ij, const SCVector3& r1, const SCVector3& r2);
/** Computes values of the alpha-alpha pair function ij on tbgrid */
void compute_pair_function_aa(int ij, const Ref<TwoBodyGrid>& tbgrid);
/** Computes values of the alpha-beta pair function ij on tbgrid */
void compute_pair_function_ab(int ij, const Ref<TwoBodyGrid>& tbgrid);
/// Returns the vector of MP2 alpha-alpha pair energies
RefSCVector emp2_aa() const;
/// Returns the vector of MP2 alpha-beta pair energies
RefSCVector emp2_ab() const;
/// Returns the vector of R12 corrections to MP2-R12 alpha-alpha pair energies
RefSCVector er12_aa() const;
/// Returns the vector of R12 correction to MP2-R12 alpha-beta pair energies
RefSCVector er12_ab() const;
/// Returns the vector of MP2-R12 alpha-alpha pair energies
RefSCVector emp2r12_aa() const;
/// Returns the vector of MP2-R12 alpha-beta pair energies
RefSCVector emp2r12_ab() const;
/// Returns total MP2-R12 correlation energy
double energy();
/** Returns the matrix of amplitudes of
alpha-alpha r12-multiplied occupied orbital pairs in the first-order
pair function
*/
RefSCMatrix C_aa();
/** Returns the matrix of amplitudes of
alpha-beta r12-multiplied occupied orbital pairs in the first-order
pair function
*/
RefSCMatrix C_ab();
/** Returns the matrix of amplitudes of
alpha-alpha virtuals orbital pairs in the first-order
pair function
*/
RefSCMatrix T2_aa();
/** Returns the matrix of amplitudes of
alpha-beta virtuals orbital pairs in the first-order
pair function
*/
RefSCMatrix T2_ab();
};
}
#endif
// Local Variables:
// mode: c++
// c-file-style: "CLJ"
// End:
|