28#ifndef _chemistry_qc_basis_gaussshell_h
29#define _chemistry_qc_basis_gaussshell_h
36#include <util/state/state.h>
37#include <math/scmat/vector3.h>
38#include <util/keyval/keyval.h>
43class SphericalTransformIter;
50 enum PrimitiveType { Normalized, Unnormalized };
51 enum GaussianType { Cartesian, Pure };
66 void init_computed_data();
68 double shell_normalization(
int);
70 void normalize_shell();
71 PrimitiveType keyval_init(
const Ref<KeyVal>&,
int,
int);
72 static const char* amtypes;
73 static const char* AMTYPES;
75 int test_monobound(
double &r,
double &bound)
const;
104 PrimitiveType pt = GaussianShell::Normalized,
105 bool do_normalize_shell =
true);
117 PrimitiveType pt = GaussianShell::Normalized);
141 int am(
int con)
const {
return l[con]; }
147 char amchar(
int con)
const {
return amtypes[l[con]]; }
156 int ncartesian(
int con)
const {
return ((l[con]+2)*(l[con]+1))>>1; }
160 int is_pure(
int con)
const {
return puream[con]; }
168 double exponent(
int iprim)
const {
return exp[iprim]; }
173 const SCVector3& r,
double* basis_values);
179 double* basis_values=0)
const;
184 double* h_values,
double* g_values=0,
185 double* basis_values=0)
const;
191 int con,
int func1,
int func2)
const;
197 int a1,
int b1,
int c1,
198 int a2,
int b2,
int c2)
const;
CartesianIter gives the ordering of the Cartesian functions within a shell for the particular integra...
Definition cartiter.h:39
static std::ostream & out0()
Return an ostream that writes from node 0.
A Gaussian orbital shell.
Definition gaussshell.h:48
GaussianShell(int ncn, int nprm, double *e, int *am, int *pure, double **c, PrimitiveType pt=GaussianShell::Normalized, bool do_normalize_shell=true)
A GaussianShell constructor.
void print(std::ostream &=ExEnv::out0()) const
Print the object.
int nfunction(int con) const
The number of basis functions coming from the given contraction.
int nprimitive() const
The number of primitive Gaussian shells.
Definition gaussshell.h:129
int has_pure() const
Returns nonzero if any contraction is solid harmonics.
Definition gaussshell.h:162
int max_cartesian() const
The maximum number of Cartesian functions in any contraction.
int ncartesian(int con) const
The number of Cartesian functions for the given contraction.
Definition gaussshell.h:156
double coefficient_norm(int con, int prim) const
Returns the contraction coef for normalized primitives.
int is_cartesian(int con) const
Returns nonzero if contraction con is Cartesian.
Definition gaussshell.h:158
int am(int con) const
The angular momentum of the given contraction.
Definition gaussshell.h:141
int equiv(const GaussianShell *s)
Returns true if this and the argument are equivalent.
int grad_values(CartesianIter **, SphericalTransformIter **, const SCVector3 &R, double *g_values, double *basis_values=0) const
Like values(...), but computes gradients of the basis function values, too.
int max_am() const
The maximum angular momentum of any contraction.
Definition gaussshell.h:143
char amchar(int con) const
The character symbol for the angular momentum of the given contraction.
Definition gaussshell.h:147
double relative_overlap(int con, int a1, int b1, int c1, int a2, int b2, int c2) const
Returns the intra-generalized-contraction overlap matrix element <con func1|con func2> within an arbi...
double coefficient_unnorm(int con, int prim) const
Returns the contraction coef for unnormalized primitives.
Definition gaussshell.h:164
double extent(double threshold) const
Returns a radius.
int ncartesian() const
The total number of functions if this shell was Cartesian.
Definition gaussshell.h:151
int nfunction() const
The number of basis functions.
Definition gaussshell.h:133
GaussianShell(StateIn &)
Restore a GaussianShell from a StateIn object.
int ncartesian_with_aminc(int aminc) const
The total number of Cartesian functions if this shift is applied to all of the angular momentums.
int is_pure(int con) const
Returns nonzero if contraction con is solid harmonics.
Definition gaussshell.h:160
int max_angular_momentum() const
The maximum angular momentum in the shell.
Definition gaussshell.h:135
int min_am() const
The minimum angular momentum of any contraction.
Definition gaussshell.h:145
int min_angular_momentum() const
The minimum angular momentum in the shell.
Definition gaussshell.h:137
int ncontraction() const
The number of contractions formed from the primitives.
Definition gaussshell.h:131
GaussianShell(int ncn, int nprm, double *e, int *am, GaussianType pure, double **c, PrimitiveType pt=GaussianShell::Normalized)
A GaussianShell constructor.
double monobound(double r) const
Returns a bound for the basis function.
int hessian_values(CartesianIter **, SphericalTransformIter **, const SCVector3 &R, double *h_values, double *g_values=0, double *basis_values=0) const
Like values(...), but computes first and second derivatives of the basis function values,...
void save_data_state(StateOut &)
Save the base classes (with save_data_state) and the members in the same order that the StateIn CTOR ...
int values(CartesianIter **, SphericalTransformIter **, const SCVector3 &r, double *basis_values)
Compute the values for this shell at position r.
double relative_overlap(const Ref< Integral > &, int con, int func1, int func2) const
Returns the intra-generalized-contraction overlap matrix element <con func1|con func2> within an arbi...
GaussianShell(const Ref< KeyVal > &, int pure)
Construct a GaussianShell from KeyVal input.
double exponent(int iprim) const
Returns the exponent of the given primitive.
Definition gaussshell.h:168
GaussianShell(const Ref< KeyVal > &)
Construct a GaussianShell from KeyVal input.
A template class that maintains references counts.
Definition ref.h:332
Base class for objects that can save/restore state.
Definition state.h:46
Restores objects that derive from SavableState.
Definition statein.h:70
Serializes objects that derive from SavableState.
Definition stateout.h:61