28 #ifndef _chemistry_qc_wfn_density_h
29 #define _chemistry_qc_wfn_density_h
35 #include <math/isosurf/volume.h>
36 #include <chemistry/qc/wfn/wfn.h>
37 #include <chemistry/qc/basis/extent.h>
38 #include <chemistry/molecule/molrender.h>
52 virtual void boundingbox(
double valuemin,
91 bool need_hessian_, need_gradient_;
92 bool need_basis_hessian_, need_basis_gradient_;
94 bool using_shared_data_;
97 virtual void init_common_data(
bool initialize_density_matrices);
100 virtual void init_scratch_data();
101 void compute_basis_values(
const SCVector3&r);
102 void compute_spin_density(
const double *dmat,
103 double *rho,
double *grad,
double *hess);
109 enum {
X=0,
Y=1, Z=2};
111 enum {XX=0, YX=1, YY=2, ZX=3, ZY=4, ZZ=5};
126 bool reference_parent_data=
false);
139 double *alpha_density,
140 double *alpha_density_grad,
141 double *alpha_density_hessian,
142 double *beta_density,
143 double *beta_density_grad,
144 double *beta_density_hessian);
155 virtual void init(
bool initialize_density_matrices =
true);
183 {
return (spin_polarized_?beta_dmat_:alpha_dmat_); }
184 int ncontrib() {
return ncontrib_; }
185 int *contrib() {
return contrib_; }
186 int ncontrib_bf() {
return ncontrib_bf_; }
187 int *contrib_bf() {
return contrib_bf_; }
188 double *bs_values() {
return bs_values_; }
189 double *bsg_values() {
return bsg_values_; }
190 double *bsh_values() {
return bsh_values_; }
194 void set_need_basis_hessian(
bool b) { need_basis_hessian_ = b; }