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

Namespaces

namespace  impl
 

Classes

struct  AccelerationPlan
 
struct  AssignedEnergy
 
class  CEModelCrystalGrowthCalculator
 
struct  CGConfig
 
class  CrystalGrowthCalculator
 
struct  CrystalGrowthCalculatorOptions
 
struct  CrystalSurfaceEnergies
 
struct  DMAConfig
 
class  DMADriver
 
class  DummyCrystalGrowthCalculator
 
struct  FacetEnergies
 
struct  MethodSpec
 
struct  VibrationalAnalysisConfig
 Configuration options for vibrational frequency analysis. More...
 
class  XTBCrystalGrowthCalculator
 

Typedefs

using WavefunctionList = std::vector< Wavefunction >
 
using SolventNeighborContributionList = std::vector< cg::SolvationContribution >
 
using MoleculeList = std::vector< occ::core::Molecule >
 

Enumerations

enum class  WavefunctionChoice { GasPhase , Solvated }
 
enum class  MethodKind {
  HF , DFT , MP2 , CCSD ,
  CCSD_T , GFN2
}
 

Functions

AccelerationPlan plan_acceleration (io::RIPolicy policy, const std::string &orbital_basis_name, std::size_t nbf, double exact_exchange, const std::string &user_df_basis, bool user_cosx)
 Decide SCF acceleration (density fitting / COSX) for a calculation.
 
template<typename Proc >
void apply_acceleration (Proc &proc, std::size_t nbf, const io::OccInput &config, bool allow_cosx=true)
 Apply the active acceleration policy (DF / COSX) to an SCF procedure.
 
occ::cg::CrystalGrowthResult run_cg (CGConfig const &)
 
std::vector< AssignedEnergyassign_interaction_terms_to_nearest_neighbours (const crystal::CrystalDimers::MoleculeNeighbors &neighbors, const std::vector< double > &dimer_energies, double cg_radius)
 
std::vector< occ::Vec3calculate_net_dipole (const WavefunctionList &wavefunctions, const crystal::CrystalDimers &crystal_dimers)
 
CrystalSurfaceEnergies calculate_crystal_surface_energies (const std::string &filename, const occ::crystal::Crystal &crystal, const occ::crystal::CrystalDimers &uc_dimers, int max_number_of_surfaces, int sign=-1)
 
void to_json (nlohmann::json &j, const FacetEnergies &)
 
void to_json (nlohmann::json &j, const CrystalSurfaceEnergies &)
 
qm::Wavefunction geometry_optimization (const io::OccInput &config)
 Perform geometry optimization.
 
std::pair< qm::Wavefunction, core::VibrationalModesgeometry_optimization_with_frequencies (const io::OccInput &config, bool run_frequencies=true)
 Perform geometry optimization with optional vibrational analysis.
 
MethodSpec parse_method_string (const std::string &method_string)
 Parse a method string into base method, dispersion, kind and backend.
 
MethodKind method_kind_from_string (const std::string &name)
 
qm::SpinorbitalKind determine_spinorbital_kind (const std::string &name, int multiplicity, MethodKind method_kind)
 
occ::qm::Wavefunction calculate_wavefunction (const occ::core::Molecule &mol, const std::string &name, const std::string &energy_model, bool spherical)
 
WavefunctionList calculate_wavefunctions (const std::string &basename, const MoleculeList &molecules, const std::string &energy_model, bool spherical)
 
void compute_monomer_energies (const std::string &basename, WavefunctionList &wavefunctions, const std::string &model_name)
 
qm::Wavefunction single_point (const io::OccInput &)
 
qm::Wavefunction single_point (const io::OccInput &, const qm::Wavefunction &)
 
core::VibrationalModes vibrational_analysis (const io::OccInput &config, const qm::Wavefunction &wfn, const VibrationalAnalysisConfig &vib_config={})
 Perform vibrational frequency analysis on an optimized geometry.
 
core::VibrationalModes vibrational_analysis (const io::OccInput &config, const qm::Wavefunction &wfn)
 Convenience function for standard frequency analysis.
 

Typedef Documentation

◆ MoleculeList

using occ::driver::MoleculeList = typedef std::vector<occ::core::Molecule>

◆ SolventNeighborContributionList

◆ WavefunctionList

Enumeration Type Documentation

◆ MethodKind

enum class occ::driver::MethodKind
strong
Enumerator
HF 
DFT 
MP2 
CCSD 
CCSD_T 
GFN2 

◆ WavefunctionChoice

Enumerator
GasPhase 
Solvated 

Function Documentation

◆ apply_acceleration()

template<typename Proc >
void occ::driver::apply_acceleration ( Proc &  proc,
std::size_t  nbf,
const io::OccInput config,
bool  allow_cosx = true 
)

Apply the active acceleration policy (DF / COSX) to an SCF procedure.

Works for both HartreeFock and DFT (both expose the DF and COSX setters). COSX is only enabled for exact exchange, never for range-separated hybrids (COSX cannot handle range separation).

Parameters
allow_cosxpass false for gradient-producing calculations (geometry optimisation, frequencies): COSX has no analytic gradient, so it is downgraded to DF exchange there.

◆ assign_interaction_terms_to_nearest_neighbours()

std::vector< AssignedEnergy > occ::driver::assign_interaction_terms_to_nearest_neighbours ( const crystal::CrystalDimers::MoleculeNeighbors neighbors,
const std::vector< double > &  dimer_energies,
double  cg_radius 
)

◆ calculate_crystal_surface_energies()

CrystalSurfaceEnergies occ::driver::calculate_crystal_surface_energies ( const std::string &  filename,
const occ::crystal::Crystal crystal,
const occ::crystal::CrystalDimers uc_dimers,
int  max_number_of_surfaces,
int  sign = -1 
)

◆ calculate_net_dipole()

std::vector< occ::Vec3 > occ::driver::calculate_net_dipole ( const WavefunctionList wavefunctions,
const crystal::CrystalDimers crystal_dimers 
)

◆ calculate_wavefunction()

occ::qm::Wavefunction occ::driver::calculate_wavefunction ( const occ::core::Molecule mol,
const std::string &  name,
const std::string &  energy_model,
bool  spherical 
)

◆ calculate_wavefunctions()

WavefunctionList occ::driver::calculate_wavefunctions ( const std::string &  basename,
const MoleculeList molecules,
const std::string &  energy_model,
bool  spherical 
)

◆ compute_monomer_energies()

void occ::driver::compute_monomer_energies ( const std::string &  basename,
WavefunctionList wavefunctions,
const std::string &  model_name 
)

◆ determine_spinorbital_kind()

qm::SpinorbitalKind occ::driver::determine_spinorbital_kind ( const std::string &  name,
int  multiplicity,
MethodKind  method_kind 
)
inline

◆ geometry_optimization()

qm::Wavefunction occ::driver::geometry_optimization ( const io::OccInput config)

Perform geometry optimization.

Parameters
configInput configuration
Returns
Optimized wavefunction

◆ geometry_optimization_with_frequencies()

std::pair< qm::Wavefunction, core::VibrationalModes > occ::driver::geometry_optimization_with_frequencies ( const io::OccInput config,
bool  run_frequencies = true 
)

Perform geometry optimization with optional vibrational analysis.

Parameters
configInput configuration
run_frequenciesIf true, compute vibrational frequencies after optimization
Returns
Pair of optimized wavefunction and vibrational modes (empty if not computed)

◆ method_kind_from_string()

MethodKind occ::driver::method_kind_from_string ( const std::string &  name)
inline

◆ parse_method_string()

MethodSpec occ::driver::parse_method_string ( const std::string &  method_string)
inline

Parse a method string into base method, dispersion, kind and backend.

Single source of truth: a leading "ri-"/"df-"/"thc-" backend prefix (only for correlation methods) is split off, then a dispersion suffix, then the base is classified. Anything not matching a known method alias is a DFT functional.

Examples: "pbe-d4" -> {base "pbe", disp "d4", kind DFT} "hf-d4" -> {base "hf", disp "d4", kind HF} "ccsd(t)" -> {base "ccsd(t)", kind CCSD_T, backend ""} "ri-ccsd(t)" -> {base "ccsd(t)", kind CCSD_T, backend "df"} "thc-mp2" -> {base "mp2", kind MP2, backend "thc"} "b97-d" -> {base "b97-d", kind DFT} (prefix/suffix kept)

◆ plan_acceleration()

AccelerationPlan occ::driver::plan_acceleration ( io::RIPolicy  policy,
const std::string &  orbital_basis_name,
std::size_t  nbf,
double  exact_exchange,
const std::string &  user_df_basis,
bool  user_cosx 
)
inline

Decide SCF acceleration (density fitting / COSX) for a calculation.

Parameters
policyrequested RIPolicy (Auto by default)
orbital_basis_nameprimary orbital basis name (for aux-basis lookup)
nbfnumber of basis functions (for the COSX crossover)
exact_exchangefraction of exact (HF) exchange: 1.0 for HF, the hybrid mixing fraction for DFT, 0.0 for a pure GGA
user_df_basisexplicit –df-basis/–aux value ("" if unset)
user_cosxexplicit –cosx flag

Explicit user settings always win; Auto only fills in choices left unset. The Auto rule (ORCA-style): density-fit the Coulomb term for every SCF method, and for exact exchange use DF-K below the basis-function crossover, seminumerical COSX above it.

◆ run_cg()

occ::cg::CrystalGrowthResult occ::driver::run_cg ( CGConfig const &  )

◆ single_point() [1/2]

qm::Wavefunction occ::driver::single_point ( const io::OccInput )

◆ single_point() [2/2]

qm::Wavefunction occ::driver::single_point ( const io::OccInput ,
const qm::Wavefunction  
)

◆ to_json() [1/2]

void occ::driver::to_json ( nlohmann::json &  j,
const CrystalSurfaceEnergies  
)

◆ to_json() [2/2]

void occ::driver::to_json ( nlohmann::json &  j,
const FacetEnergies  
)

◆ vibrational_analysis() [1/2]

core::VibrationalModes occ::driver::vibrational_analysis ( const io::OccInput config,
const qm::Wavefunction wfn 
)

Convenience function for standard frequency analysis.

Uses default settings optimized for most common use cases:

  • Finite differences with acoustic sum rule
  • Step size: 0.005 Bohr
  • No projection of translational/rotational modes
Parameters
configInput configuration from OCC input file
wfnConverged wavefunction from optimization or single point
Returns
VibrationalModes Complete vibrational analysis results

◆ vibrational_analysis() [2/2]

core::VibrationalModes occ::driver::vibrational_analysis ( const io::OccInput config,
const qm::Wavefunction wfn,
const VibrationalAnalysisConfig vib_config = {} 
)

Perform vibrational frequency analysis on an optimized geometry.

This function computes the molecular Hessian using finite differences and performs normal mode analysis to obtain vibrational frequencies. It can be called after geometry optimization to characterize the stationary point.

Parameters
configInput configuration from OCC input file
wfnConverged wavefunction from optimization or single point
vib_configConfiguration options for vibrational analysis
Returns
VibrationalModes Complete vibrational analysis results