---
name: "sc_GaussianShell"
section: "3"
platform: "linux"
package: "libsc-doc"
version: "2.3.1-22"
release: "Debian 12 (Bookworm)"
platforms: ["linux"]
url: "https://new.carta.tech/sc_GaussianShell"
---

# sc\_GaussianShell(3)

A Gaussian orbital shell.

## NAME

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

### Additional Inherited Members

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