Loading...
Searching...
No Matches
init.hpp
Go to the documentation of this file.
1#pragma once
2
3/**
4 * PlanewavePseudopotential — planewave representation of a pseudopotential.
5 *
6 * Wraps a basis-independent Pseudopotential and provides access to the
7 * underlying data. In the future, this class will own precomputed G-space
8 * tables (β(q), V_loc(G), ρ_at(G), ρ_core(G)) that are currently
9 * computed by the quantum system.
10 *
11 * This is tier 3 in the 4-tier pseudopotential hierarchy:
12 * Tier 1: Pseudopotential (data from UPF, basis-independent)
13 * Tier 2: UltrasoftPseudopotential (adds US-specific data)
14 * Tier 3: PlanewavePseudopotential (planewave representation) ← this
15 * Tier 4: UltrasoftPlanewavePseudopotential (US + planewave)
16 */
17
18#include <memory>
19
21
22namespace q3 {
23
25 public:
26 explicit PlanewavePseudopotential(std::unique_ptr<Pseudopotential> pseudopotential)
27 : pseudopotential_(std::move(pseudopotential)) {}
28
29 virtual ~PlanewavePseudopotential() = default;
30
31 /**
32 * Access the underlying basis-independent pseudopotential data.
33 */
34 [[nodiscard]] const Pseudopotential& data() const {
35 return *pseudopotential_;
36 }
37
38 /**
39 * Return the type classification of the underlying pseudopotential.
40 */
42 return pseudopotential_->pseudopotential_type_enum();
43 }
44
45 /**
46 * Whether this PP has augmentation charges.
47 */
48 [[nodiscard]] bool has_augmentation_charges() const {
49 return pseudopotential_->has_augmentation_charges();
50 }
51
52 protected:
53 std::unique_ptr<Pseudopotential> pseudopotential_;
54};
55
56} // namespace q3
const Pseudopotential & data() const
Definition init.hpp:34
bool has_augmentation_charges() const
Definition init.hpp:48
std::unique_ptr< Pseudopotential > pseudopotential_
Definition init.hpp:53
PlanewavePseudopotential(std::unique_ptr< Pseudopotential > pseudopotential)
Definition init.hpp:26
virtual ~PlanewavePseudopotential()=default
PseudopotentialType pseudopotential_type_enum() const
Definition init.hpp:41
Base class for all pseudopotential types.
Definition init.hpp:35
PseudopotentialType
Pseudopotential type classification.
Definition init.hpp:27