Quoll.Projections

Core-basis projection schemes (FC99V, LaikovCore) and the pipeline entry point perform_core_projection.

Quoll.Projections.FC99VType
FC99V <: AbstractBasisProjection

Frozen-core method with a valence correction [1]. Similar to LaikovCore but uses the raw core-valence overlap S₁₂ directly instead of the orthogonalised Ŝ₁₂ = S₁₁⁻¹ S₁₂:

Ō₂₂ = O₂₂ + A₂₂ + A₂₂'

where A₂₂ = S₁₂' * (½ O₁₁ S₁₂ - O₁₂).

Requires exactly one Overlap operator among the input operators.

References

[1] doi.org/10.1063/5.0050296

source
Quoll.Projections.LaikovCoreType
LaikovCore <: AbstractBasisProjection

Core-projection method from Ref [1]. An application of this method can be found in Ref [2]. Computes the valence-only operator block by subtracting core contributions using the inverse of the core-core overlap S₁₁⁻¹:

Ō₂₂ = O₂₂ + A₂₂ + A₂₂'

where A₂₂ = Ŝ₁₂' * (½ O₁₁ Ŝ₁₂ - O₁₂) and Ŝ₁₂ = S₁₁⁻¹ S₁₂.

Requires exactly one Overlap operator among the input operators.

References

[1] doi.org/10.1002/qua.22767

[2] doi.org/10.1038/s41524-026-02020-1

source
Quoll.Projections.compute_valence_dataMethod
compute_valence_data(operators, core_mask_list, valence_mask_list, method)

Compute the projected valence-only data for each operator using the given projection method (<:AbstractBasisProjection). All operators must be hermitian and exactly one must be an Overlap. Returns a vector of wrapped DenseRecipData (one per input operator).

source
Quoll.Projections.core_valence_partitionMethod
core_valence_partition(operator_or_data, core_mask, valence_mask)

Split an operator (or its data) into core-core (O₁₁), core-valence (O₁₂), and valence-valence (O₂₂) blocks as views. Masks are BitVectors indexing into the full basis.

source
Quoll.Projections.perform_core_projectionMethod
perform_core_projection(operators, projected_basis, kgrid, my_ikpoints, comm; kwargs...)

Project out core basis functions from a set of real-space operators, returning valence-only operators. The projection is performed in reciprocal space: for each k-point assigned to this MPI rank, operators are Fourier-transformed, the core-valence projection is applied, and the result is inverse-Fourier-transformed back. Contributions are summed with k-point weights and synchronised across MPI ranks. The function also works with a single task without MPI by suppling all the k-points.

Arguments

  • operators — vector of real-space operators (Hamiltonian + Overlap).
  • projected_basis — vector of BasisMetadata identifying the core basis functions to project out.
  • kgrid — a KGrid (must not use crystal symmetry; currently not implemented).
  • my_ikpoints — indices into kgrid that this MPI rank is responsible for (or all k-points is MPI not used).
  • comm — MPI communicator for synchronisation (MPI.COMM_WORLD if parallelisation is not being performed)

Keyword arguments

  • method=LaikovCore() — projection method (<:AbstractBasisProjection).
  • recip_operator_type=Operator — operator type for reciprocal-space intermediates.
  • recip_format=CanonicalDenseNoSpinRecipMetadata — metadata type for reciprocal-space intermediates.
source