# sc_GaussianShell - Man Page

A Gaussian orbital shell.

## Synopsis

`#include <gaussshell.h>`

Inherits **sc::SavableState**.

### 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(...), but computes gradients of the basis function values, too.

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, too.

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.

Public Member Functions inherited from **sc::SavableState****SavableState** & **operator=** (const **SavableState** &)

void **save_state** (**StateOut** &)

Save the state of the object as specified by the **StateOut** object.

void **save_object_state** (**StateOut** &)

This can be used for saving state when the exact type of the object is known for both the save and the restore.

virtual void **save_vbase_state** (**StateOut** &)

Save the virtual bases for the object.

virtual 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.

Public Member Functions inherited from **sc::DescribedClass****DescribedClass** (const **DescribedClass** &)**DescribedClass** & **operator=** (const **DescribedClass** &)**ClassDesc** * **class_desc** () const throw ()

This returns the unique pointer to the **ClassDesc** corresponding to the given type_info object.

const char * **class_name** () const

Return the name of the object's exact type.

int **class_version** () const

Return the version of the class.

virtual void **print** (std::ostream &=**ExEnv::out0**()) const

Print the object.

Public Member Functions inherited from **sc::RefCount**

int **lock_ptr** () const

Lock this object.

int **unlock_ptr** () const

Unlock this object.

void **use_locks** (bool inVal)

start and stop using locks on this object

refcount_t **nreference** () const

Return the reference count.

refcount_t **reference** ()

Increment the reference count and return the new count.

refcount_t **dereference** ()

Decrement the reference count and return the new count.

int **managed** () const

void **unmanage** ()

Turn off the reference counting mechanism for this object.

int **managed** () const

Return 1 if the object is managed. Otherwise return 0.

Public Member Functions inherited from **sc::Identity****Identifier identifier** ()

Return the **Identifier** for this argument.

### Additional Inherited Members

Static Public Member Functions inherited from **sc::SavableState**

static void **save_state** (**SavableState** *s, **StateOut** &)

static **SavableState** * **restore_state** (**StateIn** &si)

Restores objects saved with save_state.

static **SavableState** * **key_restore_state** (**StateIn** &si, const char *keyword)

Like restore_state, but keyword is used to override values while restoring.

static **SavableState** * **dir_restore_state** (**StateIn** &si, const char *objectname, const char *keyword=0)

Protected Member Functions inherited from **sc::SavableState****SavableState** (const **SavableState** &)**SavableState** (**StateIn** &)

Each derived class **StateIn** CTOR handles the restore corresponding to calling save_object_state, save_vbase_state, and save_data_state listed above.

Protected Member Functions inherited from **sc::RefCount****RefCount** (const **RefCount** &)**RefCount** & **operator=** (const **RefCount** &)

## 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.

### 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.

### void sc::GaussianShell::print (std::ostream & = ExEnv::out0()) const [virtual]

Print the object.

Reimplemented from **sc::DescribedClass**.

### 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.

### 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()**.

## Author

Generated automatically by Doxygen for MPQC from the source code.