Primitive Normalization

Returns the renormalized contraction coefficients for each primitive in the provided basis set, matching libint’s internal renorm() convention.

For each contracted shell, libint applies two normalization steps:

  1. A per-primitive factor \(N_p = \sqrt{2^l (2\zeta_p)^{l+3/2} / (\sqrt{\pi^3} (2l-1)!!)}\) is multiplied into each raw coefficient \(d_p\).

  2. All scaled coefficients are then divided by

\(\sqrt{\langle\phi|\phi\rangle}\),

where \(\langle\phi|\phi\rangle\) is the self-overlap of the contracted shell computed with the already-scaled coefficients, so that the contracted shell has unit norm.

This module returns the resulting values :math:`d_p N_p /

sqrt{langlephi|phirangle}`

by constructing the basis set via libint with embed_normalization = true and reading the coefficients back from the resulting shell objects.

The output vector has one entry per (primitive, AO component) pair, in the same order as the decontracted basis: for each contracted shell, the \(n_{\rm prims} \times n_{\rm AOs}\) entries are listed with the primitive index varying fastest.

Please Cite

No citations

Property Types

The following is a list of property types that this module satisfies.

  • integrals::property_types::Normalize<chemist::basis_set::AOBasisSet<chemist::basis_set::AtomicBasisSet<chemist::basis_set::Shell<chemist::basis_set::ContractedGaussian<chemist::basis_set::Primitive<double>>>>>>

Module Inputs

This section details the full list of inputs that the module accepts. Inputs that are not listed as optional must have their value set before the module can be run. Inputs can be set manually by calling the module’s change_input function or by passing arguments to a property type.

Quick Reference

The following table provides a quick summary of the inputs available to this module. The columns are:

  • Key: The key used to retrieve the option,

  • Default : The initial value, if one exists, and

  • Description : A human readable description of what the option is used for.

Key

Default

Description

Object to Normalize

N/A

The object to normalize

Detailed Descriptions

The following subsections provide detailed descriptions of each input recognized by this module. The subsection headings are the name of the input. Within each subsection we list:

  • Description : A human readable description of what the option is used for.

  • Default Value : The initial value, if one exists.

  • Optional? : Whether the value must be set inorder for the module to run.

  • Opaque? : Does the value of the input influence memoization?.

  • Domain Restrictions : Criteria a value must obey to be deemed valid.

Object to Normalize

  • Description : The object to normalize

  • Default Value : N/A

  • Optional? : False

  • Opaque? : True

  • Domain Restrictions :

    • Type == chemist::basis_set::AOBasisSet<chemist::basis_set::AtomicBasisSet<chemist::basis_set::Shell<chemist::basis_set::ContractedGaussian<chemist::basis_set::Primitive<double>>>>>

Module Results

This section tabulates the full list of results that the module returns. The columns respectively are:

  • Key: What the result is called

  • Type: The C++ type of the result

  • Description: What the result is/how it was computed.

Note

A given property type will only return a subset of the available results. Additional results can be accessed by using other property types or by using the Module class’s advanced API.

Key

Type

Description

Normalization Factors

std::vector<double, std::allocator<double>>

A vector of normalization factors, one per primitive

Submodules

The module defines no submodules.