occ
Loading...
Searching...
No Matches
occ::numint Namespace Reference

Namespaces

namespace  grid
 

Classes

struct  AtomGrid
 Structure to hold atom-centered grid data. More...
 
struct  GridBatchLeaf
 Leaf node containing grid point batch. More...
 
struct  GridBoundingSphere
 Bounding sphere for a group of grid points. More...
 
struct  GridSettings
 Extended settings for Becke grid generation. More...
 
class  MolecularGrid
 Class for molecular integration grids in DFT. More...
 
class  MolecularGridPoints
 Class for storing and managing molecular grid points. More...
 
struct  PartitionMethod
 
struct  RadialGrid
 Structure to hold radial grid data. More...
 
class  SpatialGridHierarchy
 Spatial hierarchy for molecular grid points using Morton ordering. More...
 
struct  SpatialHierarchySettings
 Configuration for hierarchy construction. More...
 

Enumerations

enum class  PruningScheme { None , NWChem , NumGrid }
 Enumeration of available angular pruning schemes. More...
 
enum class  GridQuality { Coarse , Standard , Fine , VeryFine }
 Standard grid quality levels (similar to Q-Chem's SG system) More...
 
enum class  COSXGridLevel { Grid1 , Grid2 , Grid3 }
 COSX/SGX grid levels matching ORCA's GRIDX scheme. More...
 
enum class  PartitionFunction { Becke , StratmannScuseria }
 Enumeration of available partition functions for atomic weight calculation. More...
 
enum class  RadialGridMethod {
  LMG , TreutlerAlrichs , MuraKnowles , Becke ,
  GaussChebyshev , EulerMaclaurin
}
 Enumeration of available radial grid generation methods. More...
 

Functions

GridSettings get_grid_settings (GridQuality quality)
 Get grid settings for a specific quality level.
 
std::string grid_quality_to_string (GridQuality quality)
 Convert GridQuality enum to string.
 
GridQuality grid_quality_from_string (const std::string &str)
 Convert string to GridQuality enum.
 
std::string cosx_grid_level_to_string (COSXGridLevel level)
 Convert COSXGridLevel enum to string.
 
double cosx_grid_int_acc (COSXGridLevel level)
 Get IntAcc value for a COSX grid level.
 
size_t calculate_radial_points_orca (double int_acc, size_t atomic_number, double b=5.0)
 Calculate number of radial points using ORCA's formula.
 
void print_cosx_grid_summary (const GridSettings &settings, COSXGridLevel level, size_t num_points, size_t num_batches, size_t num_atoms)
 Print ORCA-style grid generation summary.
 
uint_fast16_t nearest_grid_level_at_or_above (uint_fast16_t n)
 Find the nearest Lebedev grid level at or above the requested number of points.
 
uint_fast16_t nearest_grid_level_below (uint_fast16_t n)
 Find the nearest Lebedev grid level below the requested number of points.
 
size_t angular_point_count (size_t level)
 Get the number of points in a Lebedev grid.
 
double get_atomic_radius (size_t atomic_number)
 Get the atomic radius for a given atomic number.
 
Vec becke_partition (const Vec &w)
 Apply the Becke partition function.
 
Vec stratmann_scuseria_partition (const Vec &w)
 Apply the Stratmann-Scuseria partition function.
 
Mat calculate_interatomic_distances (const Mat3N &positions)
 Calculate interatomic distances.
 
Mat calculate_atomic_grid_weights (PartitionMethod method, const Mat &grid_points, const Mat &atomic_positions, const Vec &radii, const Mat &interatomic_distances)
 Calculate Becke atomic weights for grid points.
 
IVec prune_nwchem_scheme (size_t nuclear_charge, size_t max_angular, size_t num_radial, const Vec &radii)
 Apply the NWChem pruning scheme to a radial grid.
 
IVec prune_numgrid_scheme (size_t atomic_number, size_t max_angular, size_t min_angular, const Vec &radii)
 Apply the NumGrid pruning scheme to a radial grid.
 
IVec prune_orca_scheme (size_t atomic_number, const std::array< size_t, 5 > &region_grids, const Vec &radii)
 Apply ORCA-style 5-region angular pruning.
 
RadialGrid generate_becke_radial_grid (size_t num_points, double rm=1.0)
 Generate a Becke radial grid.
 
RadialGrid generate_mura_knowles_radial_grid (size_t num_points, size_t charge)
 Generate a Mura-Knowles radial grid.
 
RadialGrid generate_treutler_alrichs_radial_grid (size_t num_points)
 Generate a Treutler-Alrichs radial grid.
 
RadialGrid generate_gauss_chebyshev_radial_grid (size_t num_points)
 Generate a Gauss-Chebyshev radial grid.
 
RadialGrid generate_gauss_chebyshev_m3_radial_grid (size_t num_points, size_t atomic_number)
 Generate a Gauss-Chebyshev radial grid with M3 mapping.
 
RadialGrid generate_euler_maclaurin_radial_grid (size_t num_points, double alpha)
 Generate a Euler-Maclaurin radial grid.
 
RadialGrid generate_lmg_radial_grid (size_t atomic_number, double radial_precision, double alpha_max, int l_max, const occ::Vec &alpha_min)
 Generate a Lindh-Malmqvist-Gagliardi (LMG) radial grid.
 
double lmg_inner (const double max_error, const double alpha_inner)
 Helper function to calculate LMG inner radial boundary.
 
double lmg_outer (const double max_error, const double alpha_outer, const int l, const double guess)
 Helper function to calculate LMG outer radial boundary.
 
double lmg_h (const double max_error, const int l, const double guess)
 Helper function to calculate LMG grid spacing parameter.
 
AtomGrid generate_atom_grid (size_t atomic_number, const GridSettings &settings, RadialGridMethod method=RadialGridMethod::LMG, double alpha_max=0.0, int l_max=0, const Vec &alpha_min=Vec())
 Generate an atom-centered grid using the specified method.
 

Variables

const std::array< uint_fast16_t, 33 > lebedev_grid_levels
 Array of available Lebedev grid levels.
 

Enumeration Type Documentation

◆ COSXGridLevel

enum class occ::numint::COSXGridLevel
strong

COSX/SGX grid levels matching ORCA's GRIDX scheme.

ORCA uses 3 grid levels for COSX with specific IntAcc values and 5-region angular pruning. These correspond to GRIDX 1, 2, 3 in ORCA.

Enumerator
Grid1 

GRIDX 1: IntAcc=3.816, max 50 Lebedev points.

Grid2 

GRIDX 2: IntAcc=4.020, max 110 Lebedev points.

Grid3 

GRIDX 3: IntAcc=4.338, max 194 Lebedev points.

◆ GridQuality

enum class occ::numint::GridQuality
strong

Standard grid quality levels (similar to Q-Chem's SG system)

Enumerator
Coarse 

Like SG-0: ~23 radial, ~170 angular points - fastest, basic accuracy.

Standard 

Like SG-1: ~50 radial, ~194 angular points - standard for LDA/GGA.

Fine 

Like SG-2: ~75 radial, ~302 angular points - meta-GGAs, B95/B97.

VeryFine 

Like SG-3: ~99 radial, ~590 angular points - Minnesota functionals, highest accuracy.

◆ PartitionFunction

enum class occ::numint::PartitionFunction
strong

Enumeration of available partition functions for atomic weight calculation.

Enumerator
Becke 

Becke's original partition function.

StratmannScuseria 

Stratmann-Scuseria partition function.

◆ PruningScheme

enum class occ::numint::PruningScheme
strong

Enumeration of available angular pruning schemes.

Enumerator
None 

No pruning (uniform angular points)

NWChem 

NWChem pruning scheme.

NumGrid 

NumGrid pruning scheme.

◆ RadialGridMethod

enum class occ::numint::RadialGridMethod
strong

Enumeration of available radial grid generation methods.

Enumerator
LMG 

Lindh-Malmqvist-Gagliardi method.

TreutlerAlrichs 

Treutler-Alrichs method.

MuraKnowles 

Mura-Knowles method.

Becke 

Becke's transformation method.

GaussChebyshev 

Gauss-Chebyshev method.

EulerMaclaurin 

Gauss-Chebyshev method.

Function Documentation

◆ angular_point_count()

size_t occ::numint::angular_point_count ( size_t  level)

Get the number of points in a Lebedev grid.

Parameters
levelThe Lebedev grid level
Returns
size_t The number of points in the grid

◆ becke_partition()

Vec occ::numint::becke_partition ( const Vec w)

Apply the Becke partition function.

Parameters
wInput values to partition
Returns
Vec Partitioned values

◆ calculate_atomic_grid_weights()

Mat occ::numint::calculate_atomic_grid_weights ( PartitionMethod  method,
const Mat grid_points,
const Mat atomic_positions,
const Vec radii,
const Mat interatomic_distances 
)

Calculate Becke atomic weights for grid points.

Parameters
grid_pointsGrid points (3 x N)
atomic_positionsAtomic positions (3 x M)
radiiatomic radii (M)
interatomic_distancesMatrix of interatomic distances (M x M)
Returns
Mat Matrix of weights (N x M)

◆ calculate_interatomic_distances()

Mat occ::numint::calculate_interatomic_distances ( const Mat3N positions)

Calculate interatomic distances.

Parameters
positionsAtomic positions (3 x N)
Returns
Mat Matrix of interatomic distances

◆ calculate_radial_points_orca()

size_t occ::numint::calculate_radial_points_orca ( double  int_acc,
size_t  atomic_number,
double  b = 5.0 
)

Calculate number of radial points using ORCA's formula.

Uses: nr = (15 * IntAcc - 40) + b * ROW where ROW is the periodic table row of the element

Parameters
int_accIntAcc parameter
atomic_numberAtomic number of the element
bRow multiplier (default 5.0)
Returns
size_t Number of radial points

◆ cosx_grid_int_acc()

double occ::numint::cosx_grid_int_acc ( COSXGridLevel  level)

Get IntAcc value for a COSX grid level.

Returns the ORCA IntAcc parameter for the given COSX grid level

Parameters
levelCOSX grid level
Returns
double IntAcc value

◆ cosx_grid_level_to_string()

std::string occ::numint::cosx_grid_level_to_string ( COSXGridLevel  level)

Convert COSXGridLevel enum to string.

Parameters
levelCOSX grid level
Returns
std::string String representation (e.g., "GRIDX 1")

◆ generate_atom_grid()

AtomGrid occ::numint::generate_atom_grid ( size_t  atomic_number,
const GridSettings settings,
RadialGridMethod  method = RadialGridMethod::LMG,
double  alpha_max = 0.0,
int  l_max = 0,
const Vec alpha_min = Vec() 
)

Generate an atom-centered grid using the specified method.

Parameters
atomic_numberAtomic number of the center atom
settingsGrid generation settings
methodThe radial grid method to use
alpha_maxMaximum exponent from basis set (optional)
l_maxMaximum angular momentum from basis set (optional)
alpha_minMinimum exponents for each angular momentum (optional)
Returns
AtomGrid The generated atom-centered grid

◆ generate_becke_radial_grid()

RadialGrid occ::numint::generate_becke_radial_grid ( size_t  num_points,
double  rm = 1.0 
)

Generate a Becke radial grid.

Reference: A. D. Becke, J. Chem. Phys. 88, 2547 (1988)

Parameters
num_pointsNumber of radial points
rmScaling parameter
Returns
RadialGrid The generated radial grid

◆ generate_euler_maclaurin_radial_grid()

RadialGrid occ::numint::generate_euler_maclaurin_radial_grid ( size_t  num_points,
double  alpha 
)

Generate a Euler-Maclaurin radial grid.

Parameters
num_pointsNumber of radial points
alpha
Returns
RadialGrid The generated radial grid

◆ generate_gauss_chebyshev_m3_radial_grid()

RadialGrid occ::numint::generate_gauss_chebyshev_m3_radial_grid ( size_t  num_points,
size_t  atomic_number 
)

Generate a Gauss-Chebyshev radial grid with M3 mapping.

Uses the Treutler-Alrichs M3 mapping for transforming the Gauss-Chebyshev quadrature to an infinite interval suitable for atomic integrals: r = (xi / ln2) * ln(2 / (1-x)) where xi is a scaling parameter based on the atomic radius.

Reference: O. Treutler and R. Ahlrichs, J. Chem. Phys. 102, 346 (1995)

Parameters
num_pointsNumber of radial points
atomic_numberAtomic number (used for xi scaling)
Returns
RadialGrid The generated radial grid

◆ generate_gauss_chebyshev_radial_grid()

RadialGrid occ::numint::generate_gauss_chebyshev_radial_grid ( size_t  num_points)

Generate a Gauss-Chebyshev radial grid.

Parameters
num_pointsNumber of radial points
Returns
RadialGrid The generated radial grid

◆ generate_lmg_radial_grid()

RadialGrid occ::numint::generate_lmg_radial_grid ( size_t  atomic_number,
double  radial_precision,
double  alpha_max,
int  l_max,
const occ::Vec alpha_min 
)

Generate a Lindh-Malmqvist-Gagliardi (LMG) radial grid.

Reference: T. Helgaker, P. Jørgensen, J. Olsen, "Molecular Electronic Structure Theory", John Wiley & Sons, 2000

Parameters
atomic_numberAtomic number
radial_precisionPrecision parameter for the radial grid
alpha_maxMaximum exponent
l_maxMaximum angular momentum
alpha_minMinimum exponents for each angular momentum
Returns
RadialGrid The generated radial grid

◆ generate_mura_knowles_radial_grid()

RadialGrid occ::numint::generate_mura_knowles_radial_grid ( size_t  num_points,
size_t  charge 
)

Generate a Mura-Knowles radial grid.

Reference: M. E. Mura and P. J. Knowles, J. Chem. Phys. 104, 9848 (1996)

Parameters
num_pointsNumber of radial points
chargeAtomic number
Returns
RadialGrid The generated radial grid

◆ generate_treutler_alrichs_radial_grid()

RadialGrid occ::numint::generate_treutler_alrichs_radial_grid ( size_t  num_points)

Generate a Treutler-Alrichs radial grid.

Reference: O. Treutler and R. Ahlrichs, J. Chem. Phys. 102, 346 (1995)

Parameters
num_pointsNumber of radial points
Returns
RadialGrid The generated radial grid

◆ get_atomic_radius()

double occ::numint::get_atomic_radius ( size_t  atomic_number)

Get the atomic radius for a given atomic number.

Parameters
atomic_numberThe atomic number
Returns
double The atomic radius in Bohr

◆ get_grid_settings()

GridSettings occ::numint::get_grid_settings ( GridQuality  quality)

Get grid settings for a specific quality level.

Parameters
qualityGrid quality level
Returns
GridSettings configured for the specified quality

◆ grid_quality_from_string()

GridQuality occ::numint::grid_quality_from_string ( const std::string &  str)

Convert string to GridQuality enum.

Parameters
strString representation (case-insensitive)
Returns
GridQuality Grid quality level
Exceptions
std::invalid_argumentif string is not recognized

◆ grid_quality_to_string()

std::string occ::numint::grid_quality_to_string ( GridQuality  quality)

Convert GridQuality enum to string.

Parameters
qualityGrid quality level
Returns
std::string String representation of the quality level

◆ lmg_h()

double occ::numint::lmg_h ( const double  max_error,
const int  l,
const double  guess 
)

Helper function to calculate LMG grid spacing parameter.

Parameters
max_errorMaximum error parameter
lAngular momentum
guessInitial guess for the spacing
Returns
double Grid spacing parameter

◆ lmg_inner()

double occ::numint::lmg_inner ( const double  max_error,
const double  alpha_inner 
)

Helper function to calculate LMG inner radial boundary.

Parameters
max_errorMaximum error parameter
alpha_innerInner alpha parameter
Returns
double Inner radial boundary

◆ lmg_outer()

double occ::numint::lmg_outer ( const double  max_error,
const double  alpha_outer,
const int  l,
const double  guess 
)

Helper function to calculate LMG outer radial boundary.

Parameters
max_errorMaximum error parameter
alpha_outerOuter alpha parameter
lAngular momentum
guessInitial guess for the boundary
Returns
double Outer radial boundary

◆ nearest_grid_level_at_or_above()

uint_fast16_t occ::numint::nearest_grid_level_at_or_above ( uint_fast16_t  n)

Find the nearest Lebedev grid level at or above the requested number of points.

Parameters
nRequested number of angular points
Returns
uint_fast16_t The actual number of angular points in the Lebedev grid

◆ nearest_grid_level_below()

uint_fast16_t occ::numint::nearest_grid_level_below ( uint_fast16_t  n)

Find the nearest Lebedev grid level below the requested number of points.

Parameters
nRequested number of angular points
Returns
uint_fast16_t The actual number of angular points in the Lebedev grid

◆ print_cosx_grid_summary()

void occ::numint::print_cosx_grid_summary ( const GridSettings settings,
COSXGridLevel  level,
size_t  num_points,
size_t  num_batches,
size_t  num_atoms 
)

Print ORCA-style grid generation summary.

Prints a summary similar to ORCA's "COSX GRID GENERATION" output:

  • IntAcc, angular grid level, pruning method
  • Total grid points, batches, average points per batch/atom
Parameters
settingsGrid settings used
levelCOSX grid level (Grid1, Grid2, Grid3)
num_pointsTotal number of grid points
num_batchesNumber of batches
num_atomsNumber of atoms

◆ prune_numgrid_scheme()

IVec occ::numint::prune_numgrid_scheme ( size_t  atomic_number,
size_t  max_angular,
size_t  min_angular,
const Vec radii 
)

Apply the NumGrid pruning scheme to a radial grid.

Parameters
atomic_numberAtomic number
max_angularMaximum number of angular points
min_angularMinimum number of angular points
radiiRadial grid points
Returns
IVec Number of angular points for each radial point

◆ prune_nwchem_scheme()

IVec occ::numint::prune_nwchem_scheme ( size_t  nuclear_charge,
size_t  max_angular,
size_t  num_radial,
const Vec radii 
)

Apply the NWChem pruning scheme to a radial grid.

Parameters
nuclear_chargeAtomic number
max_angularMaximum number of angular points
num_radialNumber of radial points
radiiRadial grid points
Returns
IVec Number of angular points for each radial point

◆ prune_orca_scheme()

IVec occ::numint::prune_orca_scheme ( size_t  atomic_number,
const std::array< size_t, 5 > &  region_grids,
const Vec radii 
)

Apply ORCA-style 5-region angular pruning.

ORCA divides the radial grid into 5 regions, each with a different number of angular points. The region boundaries are scaled by the atomic radius and are optimized for each element.

Parameters
atomic_numberAtomic number
region_gridsArray of 5 Lebedev grid sizes for each region
radiiRadial grid points in Bohr
Returns
IVec Number of angular points for each radial point

◆ stratmann_scuseria_partition()

Vec occ::numint::stratmann_scuseria_partition ( const Vec w)

Apply the Stratmann-Scuseria partition function.

Parameters
wInput values to partition
Returns
Vec Partitioned values

Variable Documentation

◆ lebedev_grid_levels

const std::array<uint_fast16_t, 33> occ::numint::lebedev_grid_levels
extern

Array of available Lebedev grid levels.

Each element in the array represents a valid number of Lebedev grid points.