Quantum 3xplorer (Q3)
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
25
#include "
layer_3_representation/pseudopotential/planewave/init.hpp
"
26
#include "
layer_3_representation/pseudopotential/ultrasoft/init.hpp
"
27
28
namespace
q3
{
29
30
class
UltrasoftPlanewavePseudopotential
:
public
PlanewavePseudopotential
{
31
public
:
32
explicit
UltrasoftPlanewavePseudopotential
(
33
std::unique_ptr<UltrasoftPseudopotential> ultrasoft_pseudopotential)
34
:
PlanewavePseudopotential
(std::move(ultrasoft_pseudopotential)) {}
35
36
~UltrasoftPlanewavePseudopotential
()
override
=
default
;
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
q3::PlanewavePseudopotential
Definition
init.hpp:24
q3::UltrasoftPlanewavePseudopotential
Definition
init.hpp:30
q3::UltrasoftPlanewavePseudopotential::~UltrasoftPlanewavePseudopotential
~UltrasoftPlanewavePseudopotential() override=default
q3::UltrasoftPlanewavePseudopotential::UltrasoftPlanewavePseudopotential
UltrasoftPlanewavePseudopotential(std::unique_ptr< UltrasoftPseudopotential > ultrasoft_pseudopotential)
Definition
init.hpp:32
q3::UltrasoftPlanewavePseudopotential::ultrasoft_data
const UltrasoftPseudopotential & ultrasoft_data() const
Definition
init.hpp:41
q3::UltrasoftPseudopotential
Ultrasoft pseudopotential — extends base with augmentation data.
Definition
init.hpp:27
init.hpp
init.hpp
q3
Definition
q3_core_api.hpp:33
src
layer_3_representation
pseudopotential
planewave
ultrasoft
init.hpp
Generated by
1.9.8