1010namespace module_rt
1111{
1212
13+ /* *
14+ * @brief Numerical quadrature settings for projector snapshots.
15+ *
16+ * The default values reproduce the production RT-TDDFT path.
17+ */
18+ struct SnapIntegrationOptions
19+ {
20+ int radial_grid_num = 140 ;
21+ int lebedev_grid_points = 110 ;
22+ };
23+
1324/* *
1425 * @brief Radial projector channel integrated against one LCAO orbital.
26+ *
27+ * radial_times_r stores r * p_l(r), where p_l(r) is the radial projector.
28+ * The radial part of the volume integral is therefore evaluated as
29+ * (r * p_l(r)) * r dr = p_l(r) * r^2 dr.
1530 */
1631struct ProjectorChannel
1732{
1833 int l = 0 ;
1934 int mesh = 0 ;
2035 double dk = 0.0 ;
2136 double rcut = 0.0 ;
22- const double * radial_values = nullptr ;
37+ const double * radial_times_r = nullptr ;
2338 const double * radial_grid = nullptr ;
2439};
2540
2641/* *
27- * @brief Numerical quadrature settings for projector snapshots .
42+ * @brief Compute projector overlaps with default quadrature settings .
2843 *
29- * The default values reproduce the production RT-TDDFT path.
30- */
31- struct SnapIntegrationOptions
32- {
33- int radial_grid_num = 140 ;
34- int lebedev_grid_points = 110 ;
35- };
36-
37- /* *
38- * @brief Compute <phi|exp(-i A r)|projector> with default quadrature settings.
44+ * The shared integral is
45+ * I_m(A) = <phi_{T1,L1,m1,N1}(r-R1)|exp(-i A.r)|p_{l,m}(r-R0)>.
46+ *
47+ * The phase A is given in Cartesian coordinates. The returned nlm[0] stores
48+ * I_m(A) for all projector magnetic components. If calc_r is true, nlm[1..3]
49+ * store
50+ * R_a,m(A) = <phi|r_a exp(-i A.r)|p_{l,m}>.
3951 */
4052void snap_projector_half_tddft (const LCAO_Orbitals& orb,
4153 const std::vector<ProjectorChannel>& projector_channels,
@@ -51,9 +63,10 @@ void snap_projector_half_tddft(const LCAO_Orbitals& orb,
5163 const char * timer_name);
5264
5365/* *
54- * @brief Compute <phi|exp(-i A r)| projector> with explicit quadrature settings.
66+ * @brief Compute projector overlaps with explicit quadrature settings.
5567 *
56- * If calc_r is true, nlm[1..3] also store the Cartesian position moments.
68+ * The ProjectorChannel radial convention is always r * p_l(r). Callers that
69+ * own different physical projectors are responsible for passing that form.
5770 */
5871void snap_projector_half_tddft (const LCAO_Orbitals& orb,
5972 const std::vector<ProjectorChannel>& projector_channels,
0 commit comments