For a system with electrons and nuclei in the quantum mechanical region, VeloxChem implements the nonrelativic electronic Hamiltonian
introducing, in order, terms associated with the electronic kinetic energy, electron–nuclear attraction, electron–electron repulsion, and nuclear–nuclear repulsion. We use variables and to denote electronic and nuclear coordinates, respectively.
In a brief notation, the electronic Hamiltonian is expressed in terms of the one- and two-electron components in addition to the nuclear repulsion term
Effective-core potentials¶
ECPs in VeloxChem follow the conventional partitioning into local and nonlocal components:
Every atom described by an ECP is associated with such an operator, and they are to replace the corresponding electron–nuclear attraction terms in the one‑electron Hamiltonian. For notational convenience, the coordinate origin has here been assumed to be located at the ECP center.
Local Component¶
The local part of the ECP represents a spherically symmetric potential applied equally to all components of the valence wave function. It often corresponds to the highest angular‑momentum channel of the pseudopotential:
This term captures the screened nuclear attraction and mimics the average effect of the removed core electrons.
Nonlocal Component¶
The nonlocal projector terms introduce angular‑momentum dependence by projecting the wave function onto specific -channels:
Each is a radial potential defined by a parameterized sum of Gaussian functions:
These projectors enforce the correct nodal structure and scattering behaviour of the valence orbitals, preserving norm conservation and accuracy across chemical environments.
Static electric fields¶
A term can be added in the electronic Hamiltonian to describe the coupling of the molecular system and a time-independent (static), homogeneous, electric field, ,
where is the electric dipole moment operator. The vectorial electric-field strength is specified in atomic units.
Python script
import veloxchem as vlx
molecule = vlx.Molecule.read_name("methane")
basis = vlx.MolecularBasis.read(molecule, "def2-svp")
scf_drv = vlx.ScfRestrictedDriver()
scf_drv.electric_field = [0.01, 0.0, 0.0] # [x, y, z] components
scf_results = scf_drv.compute(molecule, basis)Text file
@jobs
task: scf
@end
@method settings
basis: def2-svp
electric field: 0, 0.001, -0.002
@end
@molecule
charge: 0
multiplicity: 1
xyz:
...
@end