# sc::GaussianShell Class Reference

A Gaussian orbital shell. More...

`#include <gaussshell.h>`

Inheritance diagram for sc::GaussianShell:

List of all members.

## Public Types

enum | PrimitiveType { Normalized, Unnormalized }
enum | GaussianType { Cartesian, Pure }

## Public Member Functions

| 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.
| GaussianShell (int ncn, int nprm, double *e, int *am, GaussianType pure, double **c, PrimitiveType pt=GaussianShell::Normalized)
| A GaussianShell constructor.
| GaussianShell (const Ref< KeyVal > &)
| Construct a GaussianShell from KeyVal input.
| GaussianShell (StateIn &)
| Restore a GaussianShell from a StateIn object.
| GaussianShell (const Ref< KeyVal > &, int pure)
| Construct a GaussianShell from KeyVal input.
void | save_data_state (StateOut &)
| Save the base classes (with save_data_state) and the members in the same order that the StateIn CTOR initializes them.
int | nprimitive () const
| The number of primitive Gaussian shells.
int | ncontraction () const
| The number of contractions formed from the primitives.
int | nfunction () const
| The number of basis functions.
int | max_angular_momentum () const
| The maximum angular momentum in the shell.
int | min_angular_momentum () const
| The minimum angular momentum in the shell.
int | max_cartesian () const
| The maximum number of Cartesian functions in any contraction.
int | am (int con) const
| The angular momentum of the given contraction.
int | max_am () const
| The maximum angular momentum of any contraction.
int | min_am () const
| The minimum angular momentum of any contraction.
char | amchar (int con) const
| The character symbol for the angular momentum of the given contraction.
int | nfunction (int con) const
| The number of basis functions coming from the given contraction.
int | ncartesian () const
| The total number of functions if this shell was Cartesian.
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 | ncartesian (int con) const
| The number of Cartesian functions for the given contraction.
int | is_cartesian (int con) const
| Returns nonzero if contraction con is Cartesian.
int | is_pure (int con) const
| Returns nonzero if contraction con is solid harmonics.
int | has_pure () const
| Returns nonzero if any contraction is solid harmonics.
double | coefficient_unnorm (int con, int prim) const
| Returns the contraction coef for unnormalized primitives.
double | coefficient_norm (int con, int prim) const
| Returns the contraction coef for normalized primitives.
double | exponent (int iprim) const
| Returns the exponent of the given primitive.
int | values (CartesianIter **, SphericalTransformIter **, const SCVector3 &r, double *basis_values)
| Compute the values for this shell at position r.
int | grad_values (CartesianIter **, SphericalTransformIter **, const SCVector3 &R, double *g_values, double *basis_values=0) const
| Like values(.
int | hessian_values (CartesianIter **, SphericalTransformIter **, const SCVector3 &R, double *h_values, double *g_values=0, double *basis_values=0) const
| Like values(.
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 arbitrary constant for the shell.
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 arbitrary constant for the shell.
int | equiv (const GaussianShell *s)
| Returns true if this and the argument are equivalent.
double | extent (double threshold) const
| Returns a radius.
double | monobound (double r) const
| Returns a bound for the basis function.
void | print (std::ostream &=ExEnv::out0()) const
| Print the object.

## Detailed Description

A Gaussian orbital shell.

## Constructor & Destructor Documentation

sc::GaussianShell::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.

Users of GaussianShell must pass pointers to newed memory that is kept by GaussianShell and deleted by the destructor. The arguments for the following ctor are:

- ncn is the number of contracted functions (1 except for SP and gen. con.)
- nprm is the number of primitives
- e gives the exponents (length nprm)
- am gives the angular momentum (length ncn)
- pure is 1 for pure am and 0 for cartesian (length ncn)
- c are the contraction coefficients (length ncn by nprm)
- pt describes whether the primitive functions are to be considered normalized or unnormalized. This effects whether or not c is manipulated to give the correct normalization.
- If do_normalize_shell is true (the default), then the shell normalization constants will be folded into the coefficients.

sc::GaussianShell::GaussianShell | ( | int | ncn,
|  | int | nprm,
|  | double * | e,
|  | int * | am,
|  | GaussianType | pure,
|  | double ** | c,
|  | PrimitiveType | pt = `GaussianShell::Normalized` |
| ) |  |  |

A GaussianShell constructor.

In this ctor pure is either GaussianShell::Cartesian or Gaussian::Pure and all of the contracted functions are treated in that way. (The user doesn\'t need to compute generate a int*pure vector in this case.)

sc::GaussianShell::GaussianShell | ( | const Ref< KeyVal > & | ,
|  | int | pure |
| ) |  |  |

Construct a GaussianShell from KeyVal input.

If pure is nonzero Cartesian functions will be used, otherwise, solid harmonics will be used.

## Member Function Documentation

double sc::GaussianShell::extent | ( | double | threshold | ) | const

Returns a radius.

All functions in the shell are below threshold outside this radius.

int sc::GaussianShell::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 sc::GaussianShell::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, too.

double sc::GaussianShell::monobound | ( | double | r | ) | const

Returns a bound for the basis function.

This bound is defined so that it is positive and monotonically decreasing as a function of r.

int sc::GaussianShell::ncartesian_with_aminc | ( | int | aminc | ) | const

The total number of Cartesian functions if this shift is applied to all of the angular momentums.

double sc::GaussianShell::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 arbitrary constant for the shell.

func1 and func2 are determined according to the axis exponents, a1, b1, c1, a2, b2, and c2.

double sc::GaussianShell::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 arbitrary constant for the shell.

void sc::GaussianShell::save_data_state | ( | StateOut & |  | ) | `[virtual]`

Save the base classes (with save_data_state) and the members in the same order that the StateIn CTOR initializes them.

This must be implemented by the derived class if the class has data.

Reimplemented from sc::SavableState.

int sc::GaussianShell::values | ( | CartesianIter ** | ,
|  | SphericalTransformIter ** | ,
|  | const SCVector3 & | r,
|  | double * | basis_values |
| ) |  |  |

Compute the values for this shell at position r.

The basis_values argument must be vector of length nfunction().

The documentation for this class was generated from the following file:

- gaussshell.h