Loading...
Searching...
No Matches
init.hpp
Go to the documentation of this file.
1#pragma once
2
3/**
4 * UltrasoftPlanewavePseudopotential — tier 4 in the pseudopotential hierarchy.
5 *
6 * Extends PlanewavePseudopotential with ultrasoft-specific planewave
7 * infrastructure:
8 * - Augmentation charge Q_ij(q,L) interpolation tables
9 * - Spherical harmonics table for G-vectors
10 * - Gaunt coefficient table for L-resolved augmentation
11 *
12 * These members are currently initialized and owned by the ultrasoft
13 * quantum system; ownership will be migrated here in a future step.
14 * For now this class establishes the canonical type location.
15 *
16 * Hierarchy:
17 * Tier 1: Pseudopotential (UPF data, basis-independent)
18 * Tier 2: UltrasoftPseudopotential (adds US-specific data)
19 * Tier 3: PlanewavePseudopotential (wraps Pseudopotential)
20 * Tier 4: UltrasoftPlanewavePseudopotential ← this
21 */
22
23#include <memory>
24
27
28namespace q3 {
29
31 public:
33 std::unique_ptr<UltrasoftPseudopotential> ultrasoft_pseudopotential)
34 : PlanewavePseudopotential(std::move(ultrasoft_pseudopotential)) {}
35
37
38 /**
39 * Access the underlying ultrasoft pseudopotential data.
40 */
41 [[nodiscard]] const UltrasoftPseudopotential& ultrasoft_data() const {
42 return static_cast<const UltrasoftPseudopotential&>(*pseudopotential_);
43 }
44};
45
46} // namespace q3
~UltrasoftPlanewavePseudopotential() override=default
UltrasoftPlanewavePseudopotential(std::unique_ptr< UltrasoftPseudopotential > ultrasoft_pseudopotential)
Definition init.hpp:32
const UltrasoftPseudopotential & ultrasoft_data() const
Definition init.hpp:41
Ultrasoft pseudopotential — extends base with augmentation data.
Definition init.hpp:27