Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 18 additions & 4 deletions include/gauxc/c/enums.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,17 @@ enum GauXC_AtomicGridSizeDefault {
GauXC_AtomicGridSizeDefault_UltraFineGrid, ///< Ultrafine grid (appropriate accuracy)
GauXC_AtomicGridSizeDefault_SuperFineGrid, ///< Superfine grid (most accurate)
GauXC_AtomicGridSizeDefault_GM3, ///< Treutler-Ahlrichs GM3
GauXC_AtomicGridSizeDefault_GM5 ///< Treutler-Ahlrichs GM5
GauXC_AtomicGridSizeDefault_GM5, ///< Treutler-Ahlrichs GM5
GauXC_AtomicGridSizeDefault_PySCF0, ///< PySCF default level 0
GauXC_AtomicGridSizeDefault_PySCF1, ///< PySCF default level 1
GauXC_AtomicGridSizeDefault_PySCF2, ///< PySCF default level 2 (angular points ~ fine grid)
GauXC_AtomicGridSizeDefault_PySCF3, ///< PySCF default level 3
GauXC_AtomicGridSizeDefault_PySCF4, ///< PySCF default level 4 (radial points ~ fine grid, angular points ~ ultrafine grid)
GauXC_AtomicGridSizeDefault_PySCF5, ///< PySCF default level 5
GauXC_AtomicGridSizeDefault_PySCF6, ///< PySCF default level 6 (radial points ~ ultrafine grid, angular points ~ superfine grid)
GauXC_AtomicGridSizeDefault_PySCF7, ///< PySCF default level 7
GauXC_AtomicGridSizeDefault_PySCF8, ///< PySCF default level 8
GauXC_AtomicGridSizeDefault_PySCF9 ///< PySCF default level 9 (radial points ~ superfine grid)
};

/**
Expand Down Expand Up @@ -69,9 +79,13 @@ enum GauXC_SupportedAlg {

/// High-level specification of pruning schemes for atomic quadratures
enum GauXC_PruningScheme {
GauXC_PruningScheme_Unpruned, ///< Unpruned atomic quadrature
GauXC_PruningScheme_Robust, ///< The "Robust" scheme of Psi4
GauXC_PruningScheme_Treutler ///< The Treutler-Ahlrichs scheme
GauXC_PruningScheme_Unpruned, ///< Unpruned atomic quadrature
GauXC_PruningScheme_Robust, ///< The "Robust" scheme of Psi4
GauXC_PruningScheme_Treutler, ///< The Treutler-Ahlrichs scheme
GauXC_PruningScheme_PySCF_Treutler, ///< The Treutler scheme of PySCF
GauXC_PruningScheme_PySCF_SG1, ///< The SG1 scheme of PySCF
GauXC_PruningScheme_PySCF_NWChem, ///< The NWChem scheme of PySCF
GauXC_PruningScheme_PySCF_SGX ///< The SGX scheme of PySCF
};


Expand Down
22 changes: 18 additions & 4 deletions include/gauxc/enums.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,17 @@ enum class AtomicGridSizeDefault {
UltraFineGrid, ///< Ultrafine grid (appropriate accuracy)
SuperFineGrid, ///< Superfine grid (most accurate)
GM3, ///< Treutler-Ahlrichs GM3
GM5 ///< Treutler-Ahlrichs GM5
GM5, ///< Treutler-Ahlrichs GM5
PySCF0, ///< PySCF default level 0
PySCF1, ///< PySCF default level 1
PySCF2, ///< PySCF default level 2 (angular points ~ fine grid)
PySCF3, ///< PySCF default level 3
PySCF4, ///< PySCF default level 4 (radial points ~ fine grid, angular points ~ ultrafine grid)
PySCF5, ///< PySCF default level 5
PySCF6, ///< PySCF default level 6 (radial points ~ ultrafine grid, angular points ~ superfine grid)
PySCF7, ///< PySCF default level 7
PySCF8, ///< PySCF default level 8
PySCF9 ///< PySCF default level 9 (radial points ~ superfine grid)
};

/**
Expand Down Expand Up @@ -66,9 +76,13 @@ enum class SupportedAlg {

/// High-level specification of pruning schemes for atomic quadratures
enum class PruningScheme {
Unpruned, ///< Unpruned atomic quadrature
Robust, ///< The "Robust" scheme of Psi4
Treutler ///< The Treutler-Ahlrichs scheme
Unpruned, ///< Unpruned atomic quadrature
Robust, ///< The "Robust" scheme of Psi4
Treutler, ///< The Treutler-Ahlrichs scheme
PySCF_Treutler, ///< The Treutler scheme of PySCF
PySCF_SG1, ///< The SG1 scheme of PySCF
PySCF_NWChem, ///< The NWChem scheme of PySCF
PySCF_SGX ///< The SGX scheme of PySCF
};


Expand Down
12 changes: 12 additions & 0 deletions include/gauxc/grid_factory.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
* See LICENSE.txt for details
*/
#pragma once
#include <gauxc/atom.hpp>
#include <gauxc/grid.hpp>
#include <gauxc/enums.hpp>
#include <integratorxx/composite_quadratures/spherical_quadrature.hpp>
Expand Down Expand Up @@ -62,12 +63,23 @@ PrunedAtomicGridSpecification treutler_pruning_scheme(
UnprunedAtomicGridSpecification
);

/// Generate a Pruning specification according to PySCF's Treutler pruning scheme
PrunedAtomicGridSpecification pyscf_treutler_pruning_scheme(
UnprunedAtomicGridSpecification
);

/// Generate a pruning specification from a specificed pruning scheme and
/// an unpruned grid specification
PrunedAtomicGridSpecification create_pruned_spec(
PruningScheme, UnprunedAtomicGridSpecification
);

/// Generate an atom-aware pruning specification from a specified pruning scheme
/// and an unpruned grid specification
PrunedAtomicGridSpecification create_pruned_spec(
PruningScheme, AtomicNumber, UnprunedAtomicGridSpecification
);

using atomic_grid_variant =
std::variant<UnprunedAtomicGridSpecification,
PrunedAtomicGridSpecification>;
Expand Down
9 changes: 6 additions & 3 deletions include/gauxc/molgrid/defaults.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ namespace GauXC {
double slater_radius_64(AtomicNumber);
double slater_radius_30(AtomicNumber);
double clementi_radius_67(AtomicNumber);
double pyscf_slater_radius_64(AtomicNumber);
double pyscf_gill_radius_93(AtomicNumber);
double uff_radius_103(AtomicNumber);
double default_atomic_radius(AtomicNumber);

Expand All @@ -41,9 +43,10 @@ namespace GauXC {

template <typename... Args>
inline static atomic_grid_variant
create_default_pruned_grid_spec( PruningScheme scheme, Args&&... args ) {
return create_pruned_spec( scheme,
create_default_unpruned_grid_spec(std::forward<Args>(args)...)
create_default_pruned_grid_spec( PruningScheme scheme, AtomicNumber Z,
Args&&... args ) {
return create_pruned_spec( scheme, Z,
create_default_unpruned_grid_spec(Z, std::forward<Args>(args)...)
);
}

Expand Down
48 changes: 48 additions & 0 deletions src/atomic_radii.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -349,4 +349,52 @@ double uff_radius_103(AtomicNumber _Z) {
}
return radius_uff_list[Z-1] * RADIUS_UFF_SCALING / DDX_BOHR_TO_ANGSTROM;
}

/// PySCF's Bragg-Slater radii from JCP 41, 3199 (1964); DOI:10.1063/1.1725697.
/// Only elements different from Slater-64 are overridden here.
double pyscf_slater_radius_64(AtomicNumber _Z) {
auto Z = _Z.get();
if( Z >= 96 && Z <= 130 ) return pm_to_bohr(175.);

switch(Z) {
case 1: /* H */ return pm_to_bohr(35. );
case 2: /* He */ return pm_to_bohr(140.);
case 10: /* Ne */ return pm_to_bohr(150.);
case 18: /* Ar */ return pm_to_bohr(180.);
case 36: /* Kr */ return pm_to_bohr(190.);
case 54: /* Xe */ return pm_to_bohr(210.);
case 85: /* At */ return pm_to_bohr(145.);
case 86: /* Rn */ return pm_to_bohr(210.);
case 87: /* Fr */ return pm_to_bohr(180.);
default: return slater_radius_64(_Z);
}
}

/// PySCF's SG1 radii from
/// P.M.W. Gill, B.G. Johnson, J.A. Pople, Chem. Phys. Letters 209 (1993) 506-512
double pyscf_gill_radius_93(AtomicNumber _Z) {
auto Z = _Z.get();
switch(Z) {
case 1: /* H */ return 1.0000;
case 2: /* He */ return 0.5882;
case 3: /* Li */ return 3.0769;
case 4: /* Be */ return 2.0513;
case 5: /* B */ return 1.5385;
case 6: /* C */ return 1.2308;
case 7: /* N */ return 1.0256;
case 8: /* O */ return 0.8791;
case 9: /* F */ return 0.7692;
case 10: /* Ne */ return 0.6838;
case 11: /* Na */ return 4.0909;
case 12: /* Mg */ return 3.1579;
case 13: /* Al */ return 2.5714;
case 14: /* Si */ return 2.1687;
case 15: /* P */ return 1.8750;
case 16: /* S */ return 1.6514;
case 17: /* Cl */ return 1.4754;
case 18: /* Ar */ return 1.3333;
default: return -1.;
}
}

}
Loading
Loading