28 #ifndef _chemistry_qc_wfn_density_h
29 #define _chemistry_qc_wfn_density_h
31 #include <math/isosurf/volume.h>
32 #include <chemistry/qc/wfn/wfn.h>
33 #include <chemistry/qc/basis/extent.h>
34 #include <chemistry/molecule/molrender.h>
35 #include <chemistry/molecule/molecule.h>
36 #include <math/mmisc/grid.h>
50 virtual void boundingbox(
double valuemin,
94 bool need_hessian_, need_gradient_;
95 bool need_basis_hessian_, need_basis_gradient_;
97 bool using_shared_data_;
100 virtual void init_common_data();
103 virtual void init_scratch_data();
104 void compute_basis_values(
const SCVector3&r);
105 void compute_spin_density(
const double *RESTRICT dmat,
106 double *RESTRICT rho,
107 double *RESTRICT grad,
108 double *RESTRICT hess);
114 enum {
X=0,
Y=1, Z=2};
116 enum {XX=0, YX=1, YY=2, ZX=3, ZY=4, ZZ=5};
121 double accuracy=DBL_EPSILON);
123 double accuracy=DBL_EPSILON);
135 bool reference_parent_data=
false);
148 double *alpha_density,
149 double *alpha_density_grad,
150 double *alpha_density_hessian,
151 double *beta_density,
152 double *beta_density_grad,
153 double *beta_density_hessian);
202 {
return (spin_polarized_?beta_dmat_:alpha_dmat_); }
203 int ncontrib() {
return ncontrib_; }
204 int *contrib() {
return contrib_; }
205 int ncontrib_bf() {
return ncontrib_bf_; }
206 int *contrib_bf() {
return contrib_bf_; }
207 double *bs_values() {
return bs_values_; }
208 double *bsg_values() {
return bsg_values_; }
209 double *bsh_values() {
return bsh_values_; }
213 void set_need_basis_hessian(
bool b) { need_basis_hessian_ = b; }
221 double df_alpha(
double alpha,
double beta);
222 double df_beta(
double alpha,
double beta);
223 double df_sum(
double alpha,
double beta);
224 double df_spin(
double alpha,
double beta);
233 void label(
char* buffer);
Definition: density.h:268
void compute_density(const SCVector3 &r, double *alpha_density, double *alpha_density_grad, double *alpha_density_hessian, double *beta_density, double *beta_density_grad, double *beta_density_hessian)
This is a alternate to the Volume interface that avoids some of the overhead of that interface.
The WriteElectronDensity class writes the electron density at user defined grid points to the standar...
Definition: density.h:219
void initialize()
Prepares some pre-caculated values before the repetitive grid calculations are perfomed.
virtual void set_densities(const RefSymmSCMatrix &aden, const RefSymmSCMatrix &bden=0)
This will fill in the internal copies of the density matrices with new values.
double * beta_density_matrix()
Return the beta density matrix.
Definition: density.h:201
The RefSymmSCMatrix class is a smart pointer to an SCSymmSCMatrix specialization.
Definition: matrix.h:265
virtual void compute()
Recompute at least the results that have compute true and are not already computed.
A template class that maintains references counts.
Definition: ref.h:361
Definition: reftestx.h:32
WriteElectronDensity(const Ref< KeyVal > &)
The KeyVal constructor.
void label(char *buffer)
A label that identifies the scalar function evaluated at the grid points, is written to the buffer ar...
Ref< Molecule > get_molecule()
Returns the molecule around which the grid values are calculated.
double calculate_value(SCVector3 point)
Returns the value of the scalar function at the given coordinate.
double * alpha_density_matrix()
Return the alpha density matrix.
Definition: density.h:199
This a more highly optimized than ElectronDensity since everything is precomputed.
Definition: density.h:60
This is a Volume that computes the electron density.
Definition: density.h:42
void set_need_basis_gradient(bool b)
To ensure that that the basis functions gradients are computed, use this.
Definition: density.h:212
virtual void init()
This is called to finish initialization of the object.
Definition: density.h:254
bool spin_polarized() const
Return true if the densities are spin polarized.
Definition: density.h:191
void clear()
This will cause all stratch storage to be released.
The abstract WriteGrid class provides an interface for writing the value of a scalar function evaluat...
Definition: grid.h:85
A Volume is a Function of three variables.
Definition: volume.h:38
void set_accuracy(double a)
Sets the accuracy.
Definition: density.h:184
void set_use_dmat_bound(bool b)
Turn use of density matrix bounds on/off.
Definition: density.h:187
a 3-element version of SCVector
Definition: vector3.h:43
This holds scratch data needed to compute basis function values.
Definition: gaussbas.h:261
virtual void compute()
Recompute at least the results that have compute true and are not already computed.
virtual void boundingbox(double valuemin, double valuemax, SCVector3 &p1, SCVector3 &p2)
Returns the bounding box.
Definition: reftestx.h:41
Contains all MPQC code up to version 3.
Definition: mpqcin.h:14
void set_linear_scaling(bool b)
Turn linear scaling algorithm on/off.
Definition: density.h:181
Definition: molrender.h:77
Generated at Sun Jan 26 2020 23:24:00 for MPQC
3.0.0-alpha using the documentation package Doxygen
1.8.16.