|
Quantum 3xplorer (Q3)
An AI-native quantum simulation engine
|
#include <hubbard.hpp>
Public Member Functions | |
| HubbardStressTensorCalculator (const Crystal &crystal_structure, const PlanewaveBasis &planewave_basis, const KPointsGrid &kpoint_grid, const NormConservingPlanewaveKohnShamSCFState &scf_state, StressTensorContributions &result) | |
| void | compute () |
Static Public Member Functions | |
| static bool | supports (const NormConservingPlanewaveKohnShamSCFState &scf_state) |
Definition at line 96 of file hubbard.hpp.
|
inline |
Definition at line 98 of file hubbard.hpp.
|
inline |
dS/deps is identically zero without augmentation charges, so the whole beta-projector half of the assembly is switched off by giving it zero projectors rather than by branching through it. ultrasoft_basis() is only reachable once has_ultrasoft() is true.
dP_m/deps = <dphi_m|S|psi> + <phi_m|dS/deps|psi>, the same two pieces Quantum ESPRESSO assembles separately and adds. <dphi_m|S|psi> is expanded rather than built through an explicit S|psi>, exactly as the force does, so it cannot drift from the SCF's own definition of S.
The accumulator returns dE_U/dlambda for a projection derivative handed to it; sigma = -(1/Omega) dE/deps.
Definition at line 125 of file hubbard.hpp.
References q3::accumulate_hubbard_force_gradient(), q3::Crystal::cell_volume(), q3::compute_hubbard_projector_overlaps(), q3::PlanewaveKohnShamSCFState::execution_policy, q3::find_g_zero_plane_wave_index(), q3::PlanewaveKohnShamSCFState::g_vector_indices_at_kpoint(), q3::NormConservingPlanewaveKohnShamQuantumSystem::has_ultrasoft(), q3::StressTensorContributions::hubbard, q3::hubbard_augmentation_overlap(), q3::NormConservingPlanewaveKohnShamSCFState::hubbard_d_matrix_per_spin, q3::NormConservingPlanewaveKohnShamSCFState::hubbard_manifolds, q3::NormConservingPlanewaveKohnShamSCFState::hubbard_projector_type, q3::PlanewaveBasis::is_gamma_only(), q3::Crystal::number_of_atoms(), q3::PlanewaveKohnShamSCFState::number_of_bands(), q3::KPointsGrid::number_of_kpoints(), q3::PlanewaveKohnShamSCFState::number_of_plane_waves(), q3::PlanewaveKohnShamSCFState::number_of_spin_components(), q3::PlanewaveKohnShamSCFState::occupation(), q3::math::tolerances::occupation_threshold, q3::NormConservingPlanewaveKohnShamQuantumSystem::pseudopotential_basis(), q3::NormConservingPlanewaveBasis::pseudopotential_set(), q3::NormConservingPlanewaveKohnShamSCFState::quantum_system(), q3::Crystal::reciprocal_lattice_vectors(), q3::execution::ExecutionPolicy::reduce_within_group(), q3::Crystal::species_type_index(), supports(), q3::tabulate_atomic_wavefunctions_in_q_space(), q3::UltrasoftPlanewaveKohnShamQuantumSystem::ultrasoft_basis(), q3::PlanewaveKohnShamSCFState::wavefunction_coefficient(), q3::Vector3D::x, q3::Vector3D::y, and q3::Vector3D::z.
Referenced by q3::NormConservingPlanewaveStressTensorCalculator::compute().
|
inlinestatic |
Whether a Hubbard stress term exists for this run's projector and dataset choice.
Ortho-atomic projectors are a joint, system-wide Lowdin transform of every atomic orbital in the cell, so their strain derivative carries a d(O^-1/2)/deps term over orbitals belonging to no Hubbard manifold at all. The norm-conserving path evaluates that term with lowdin_inverse_square_root_derivative. Ultrasoft and PAW use the same matrix-function derivative with the generalized <phi|S|phi> metric and its complete orbital-plus-overlap strain derivative.
Definition at line 119 of file hubbard.hpp.
References q3::NormConservingPlanewaveKohnShamSCFState::hubbard_manifolds, and q3::NormConservingPlanewaveKohnShamSCFState::hubbard_projector_type.
Referenced by q3::NormConservingPlanewaveStressTensorCalculator::compute(), compute(), and q3::SelfConsistentFieldFlavor::run_calculation().