00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
#ifndef _chemistry_qc_scf_uks_h
00029
#define _chemistry_qc_scf_uks_h
00030
00031
#ifdef __GNUC__
00032
#pragma interface
00033
#endif
00034
00035
#include <chemistry/qc/scf/uscf.h>
00036
#include <chemistry/qc/dft/integrator.h>
00037
#include <chemistry/qc/dft/functional.h>
00038
00039
namespace sc {
00040
00041
00042
00047 class UKS:
public UnrestrictedSCF {
00048
protected:
00049
Ref<DenIntegrator> integrator_;
00050
Ref<DenFunctional> functional_;
00051
RefSymmSCMatrix vaxc_;
00052
RefSymmSCMatrix vbxc_;
00053
00054
public:
00055
UKS(
StateIn&);
00070
UKS(
const Ref<KeyVal>&);
00071 ~
UKS();
00072
00073
void save_data_state(
StateOut&);
00074
00075
void print(std::ostream&o=ExEnv::out0())
const;
00076
00077
void two_body_energy(
double &ec,
double &ex);
00078
00079
int value_implemented()
const;
00080
int gradient_implemented()
const;
00081
00082
protected:
00083
double exc_;
00084
00085
void ao_fock(
double accuracy);
00086
double scf_energy();
00087
Ref<SCExtrapData> extrap_data();
00088
void two_body_deriv(
double*);
00089
00090
void init_vector();
00091
void done_vector();
00092 };
00093
00094 }
00095
00096
#endif
00097
00098
00099
00100
00101