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_dft_clks_h
00029
#define _chemistry_qc_dft_clks_h
00030
00031
#ifdef __GNUC__
00032
#pragma interface
00033
#endif
00034
00035
#include <chemistry/qc/scf/clscf.h>
00036
#include <chemistry/qc/dft/integrator.h>
00037
#include <chemistry/qc/dft/functional.h>
00038
00039
namespace sc {
00040
00041
00042
00046 class CLKS:
public CLSCF {
00047
protected:
00048
Ref<DenIntegrator> integrator_;
00049
Ref<DenFunctional> functional_;
00050
RefSymmSCMatrix vxc_;
00051
00052
public:
00053
CLKS(
StateIn&);
00068
CLKS(
const Ref<KeyVal>&);
00069 ~
CLKS();
00070
00071
void save_data_state(
StateOut&);
00072
00073
void print(std::ostream&o=ExEnv::out0())
const;
00074
00075
void two_body_energy(
double &ec,
double &ex);
00076
00077
int value_implemented()
const;
00078
int gradient_implemented()
const;
00079
00080
RefSymmSCMatrix density();
00081
protected:
00082
void ao_fock(
double accuracy);
00083
double exc_;
00084
double scf_energy();
00085
Ref<SCExtrapData> extrap_data();
00086
RefSymmSCMatrix effective_fock();
00087
00088
void init_vector();
00089
void done_vector();
00090
00091
void two_body_deriv(
double*);
00092 };
00093
00094 }
00095
00096
#endif
00097
00098
00099
00100
00101