Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
9e63c77
Refactor: extract ModuleCell::ReciprocalGrid base for k/q grids (Phas…
Aug 14, 2026
ea27f3b
Refactor: QList on ReciprocalGrid base with star reduction + tests (P…
Aug 14, 2026
2ca25c4
Feat: LittleGroup interface for q-point irreps + wire QList (Phase 3)
Aug 14, 2026
914dfd1
Feat: DFPT per-irrep SCF loop via DFPT_IrrepData adapter + tests (Pha…
Aug 14, 2026
c6a7433
Feat: complete QList q-point management (Cartesian, file read, print,…
Aug 14, 2026
3599973
Feat: reserve DFT+U interface for DFPT (U0)
Aug 14, 2026
fe30cb7
Feat: k+q plane-wave basis enumeration for DFPT (C0)
Aug 14, 2026
dc8a716
Feat: first-order perturbation potentials for DFPT (C1)
Aug 14, 2026
8c4c1c7
Feat: projected CG Sternheimer solver for DFPT (C2)
Aug 14, 2026
e9ac116
Feat: first-order density response for DFPT (C3)
Aug 14, 2026
d1a1fc0
Feat: dynamical matrix for DFPT (C4 guard + C5)
Aug 17, 2026
275dfab
Feat: q->0 response for DFPT (C6: eps, Born, v_hartree_q, XC contract)
Aug 17, 2026
78419b1
Feat: wire DFPT driver and esolver factory (C7)
Aug 17, 2026
a004742
Fix: DFPT screening-channel calibration (q=0 completion, XC central d…
Aug 17, 2026
57f7415
Fix: DFPT plain-mixing default beta 0.7 -> 0.4 (small-G Coulomb stiff…
Aug 17, 2026
d83d435
Docs: record DFPT stage-B gap audit and revised execution plan
Aug 18, 2026
297a2b3
Feat: INPUT-driven DFPT parameters (dfpt_qmesh/qfile/compute_q0/loto/…
Aug 18, 2026
b64ad9f
Test: sync DFPT serial references to production conventions
Aug 18, 2026
dc82fac
Fix: multi-k DFPT ball-label matching and smeared-occupation projecto…
Aug 18, 2026
276a444
Docs: record multi-k DFPT root causes and FD validation matrix in PLAN
Aug 18, 2026
2cf780d
Fix: reject metallic smearing occupations in DFPT with an explicit guard
Aug 18, 2026
6dbb872
Docs: record validation-ladder extension, metallic-regime boundary, M…
Aug 18, 2026
346ab2f
Docs: record non-Gamma q smoke results (dfpt_qfile end-to-end, q<->-q…
Aug 18, 2026
38cee30
Fix: drop spurious 1/nk in DFPT eps/born sums; wg already carries ful…
Aug 19, 2026
3e376d2
Docs: record continuation plan (P0-1 uncommitted-fix intake, P0-2 Zst…
Aug 19, 2026
2da1a4e
Fix: gate same-atom d2V_ext on 2q reciprocal; drop spurious ion_ion d…
Aug 19, 2026
4801371
Debug: DFPT design-phase probes (ZDBG/BPT/NOSC/D2MID/DYNCHK/XB)
Aug 19, 2026
4db12d7
Docs: P0-1 done (2q-reciprocal d2 gate intake, order-dependence fix, …
Aug 19, 2026
0d510b8
DFPT q0: star-rotate the symmetry-reduced eps/Z* tensor sums
Aug 19, 2026
8124a7f
DFPT q0: Sternheimer screened Z* (v4), QE-anchored eps 16pi fix, zsta…
Aug 20, 2026
98c7f11
DFPT q0: promote the E-field SCF solve, compute_eps to the dielec.f90…
Aug 20, 2026
be3e5ee
DFPT: build_occ_kq diagnostic detail in the commensurability error; P…
Aug 20, 2026
a915352
DFPT: fix q!=Gamma phonon frequencies (missing spin factor 2 in drho)…
Aug 24, 2026
d4a6e9a
DFPT PLAN: P0-3 non-Gamma-q defect root-caused and fixed (drho spin f…
Aug 24, 2026
63060a7
DFPT B2: formalize the phonon output (multi-q report, LO-TO corrected…
Aug 24, 2026
6a3caf5
DFPT B3: Kerker-preconditioned density mixing in DFPT_Rho
Aug 24, 2026
3904ecf
DFPT B4: sink the (q,irrep) SCF ledger into DFPT_PW_Data, retire the …
Aug 24, 2026
dbaa0e8
DFPT: retire the B-phase validation instrumentation (net -977 lines)
Aug 25, 2026
3152fff
delete PLAN
Aug 28, 2026
dc99085
merge: 合并 origin/develop
Aug 28, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 61 additions & 0 deletions docs/advanced/input_files/input-main.md
Original file line number Diff line number Diff line change
Expand Up @@ -586,6 +586,14 @@
- [Reduced Density Matrix Functional Theory](#reduced-density-matrix-functional-theory)
- [rdmft](#rdmft)
- [rdmft\_power\_alpha](#rdmft_power_alpha)
- [Density functional perturbation theory](#density-functional-perturbation-theory)
- [dfpt\_qmesh](#dfpt_qmesh)
- [dfpt\_qfile](#dfpt_qfile)
- [dfpt\_compute\_q0](#dfpt_compute_q0)
- [dfpt\_loto](#dfpt_loto)
- [dfpt\_conv\_thr](#dfpt_conv_thr)
- [dfpt\_max\_iter](#dfpt_max_iter)
- [dfpt\_mix\_beta](#dfpt_mix_beta)

## System variables

Expand Down Expand Up @@ -634,6 +642,7 @@
- nep: Neuroevolution Potential
- ks-lr: Kohn-Sham density functional theory + LR-TDDFT (Under Development Feature)
- lr: LR-TDDFT with given KS orbitals (Under Development Feature)
- dfpt: density functional perturbation theory (Under Development Feature)
- **Default**: ksdft

### symmetry
Expand Down Expand Up @@ -5170,3 +5179,55 @@
- **Default**: 0.656

[back to top](#full-list-of-input-keywords)

## Density functional perturbation theory

### dfpt_qmesh

- **Type**: Vector of Int (1 or 3 values)
- **Availability**: *esolver_type = dfpt*
- **Description**: Set the Monkhorst-Pack q mesh (gamma-centered) for DFPT phonon calculations. The q mesh must be commensurate with the ground-state k mesh: k + q must be a point of the k list (modulo a reciprocal lattice vector). For example, a 4x4x4 KPT mesh is commensurate with dfpt_qmesh values of 1, 2, or 4 along each direction. This parameter is ignored when dfpt_qfile is set.
- **Default**: 1 1 1

### dfpt_qfile

- **Type**: String
- **Availability**: *esolver_type = dfpt*
- **Description**: Set the file containing the q points for DFPT, in the same format as the KPT file (Q_POINTS card: Gamma/Monkhorst-Pack mesh, or an explicit Direct/Cartesian list; symmetry reduction is not applied to file q lists). When set, it overrides dfpt_qmesh. Each q point must still be commensurate with the ground-state k mesh.

### dfpt_compute_q0

- **Type**: Boolean
- **Availability**: *esolver_type = dfpt*
- **Description**: Whether to compute the macroscopic dielectric tensor (epsilon_inf) and the Born effective charges at q = 0 within the same DFPT run. Requires a q point at Gamma (the default dfpt_qmesh 1 1 1).
- **Default**: false

### dfpt_loto

- **Type**: Boolean
- **Availability**: *esolver_type = dfpt*
- **Description**: Whether to apply the Lyddane-Sachs-Teller non-analytic correction to the Gamma-point dynamical matrix, which splits the longitudinal and transverse optical modes. Requires dfpt_compute_q0 to be true, since the correction is built from epsilon_inf and the Born effective charges.
- **Default**: false

### dfpt_conv_thr

- **Type**: Real
- **Availability**: *esolver_type = dfpt*
- **Description**: Set the convergence threshold of the self-consistent DFPT cycle: the iteration stops when the relative residual of the first-order density ||drho_out - drho_in|| / ||drho_out|| drops below this value for every displacement.
- **Default**: 1.0e-8

### dfpt_max_iter

- **Type**: Integer
- **Availability**: *esolver_type = dfpt*
- **Description**: Set the maximum number of self-consistent DFPT iterations for each atomic displacement.
- **Default**: 100

### dfpt_mix_beta

- **Type**: Real
- **Availability**: *esolver_type = dfpt*
- **Description**: Set the plain-mixing coefficient of the first-order density in the self-consistent DFPT cycle. The response Jacobian has strongly negative eigenvalues on the smallest-G shells (Coulomb stiffness), so beta must stay below 2 / (1 + |lambda_min|); the default 0.4 keeps margin up to |lambda_min| ~ 3. A larger value accelerates convergence for weakly screened systems but may diverge.
- **Default**: 0.4

[back to top](#full-list-of-input-keywords)
57 changes: 57 additions & 0 deletions docs/parameters.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ parameters:
* nep: Neuroevolution Potential
* ks-lr: Kohn-Sham density functional theory + LR-TDDFT (Under Development Feature)
* lr: LR-TDDFT with given KS orbitals (Under Development Feature)
* dfpt: density functional perturbation theory (Under Development Feature)
default_value: ksdft
unit: ""
availability: ""
Expand Down Expand Up @@ -2958,6 +2959,62 @@ parameters:
default_value: "0"
unit: ""
availability: ""
- name: dfpt_qmesh
category: Density functional perturbation theory
type: Vector of Int (1 or 3 values)
description: |
Set the Monkhorst-Pack q mesh (gamma-centered) for DFPT phonon calculations. The q mesh must be commensurate with the ground-state k mesh: k + q must be a point of the k list (modulo a reciprocal lattice vector). For example, a 4x4x4 KPT mesh is commensurate with dfpt_qmesh values of 1, 2, or 4 along each direction. This parameter is ignored when dfpt_qfile is set.
default_value: "1 1 1"
unit: ""
availability: esolver_type = dfpt
- name: dfpt_qfile
category: Density functional perturbation theory
type: String
description: |
Set the file containing the q points for DFPT, in the same format as the KPT file (Q_POINTS card: Gamma/Monkhorst-Pack mesh, or an explicit Direct/Cartesian list; symmetry reduction is not applied to file q lists). When set, it overrides dfpt_qmesh. Each q point must still be commensurate with the ground-state k mesh.
default_value: "\"\""
unit: ""
availability: esolver_type = dfpt
- name: dfpt_compute_q0
category: Density functional perturbation theory
type: Boolean
description: |
Whether to compute the macroscopic dielectric tensor (epsilon_inf) and the Born effective charges at q = 0 within the same DFPT run. Requires a q point at Gamma (the default dfpt_qmesh 1 1 1).
default_value: "false"
unit: ""
availability: esolver_type = dfpt
- name: dfpt_loto
category: Density functional perturbation theory
type: Boolean
description: |
Whether to apply the Lyddane-Sachs-Teller non-analytic correction to the Gamma-point dynamical matrix, which splits the longitudinal and transverse optical modes. Requires dfpt_compute_q0 to be true, since the correction is built from epsilon_inf and the Born effective charges.
default_value: "false"
unit: ""
availability: esolver_type = dfpt
- name: dfpt_conv_thr
category: Density functional perturbation theory
type: Real
description: |
Set the convergence threshold of the self-consistent DFPT cycle: the iteration stops when the relative residual of the first-order density ||drho_out - drho_in|| / ||drho_out|| drops below this value for every displacement.
default_value: "1.0e-8"
unit: ""
availability: esolver_type = dfpt
- name: dfpt_max_iter
category: Density functional perturbation theory
type: Integer
description: |
Set the maximum number of self-consistent DFPT iterations for each atomic displacement.
default_value: "100"
unit: ""
availability: esolver_type = dfpt
- name: dfpt_mix_beta
category: Density functional perturbation theory
type: Real
description: |
Set the plain-mixing coefficient of the first-order density in the self-consistent DFPT cycle. The response Jacobian has strongly negative eigenvalues on the smallest-G shells (Coulomb stiffness), so beta must stay below 2 / (1 + |lambda_min|); the default 0.4 keeps margin up to |lambda_min| ~ 3. A larger value accelerates convergence for weakly screened systems but may diverge.
default_value: "0.4"
unit: ""
availability: esolver_type = dfpt
- name: plot_istate
category: Linear Response TDDFT
type: Integer
Expand Down
1 change: 1 addition & 0 deletions source/source_cell/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ add_library(
read_atoms_helper.cpp
read_orb.cpp
klist.cpp
reciprocal_grid.cpp
parallel_kpoints.cpp
cell_index.cpp
cell_tools.cpp
Expand Down
Loading
Loading