From c4fe6c61c65e165458cd6fe5e9153f452053ec79 Mon Sep 17 00:00:00 2001 From: HeFuxiang94 <78629482+HeFuxiang94@users.noreply.github.com> Date: Mon, 20 Feb 2023 20:36:07 +0800 Subject: [PATCH 1/2] Add the Dipole and post-processing script necessary to calculate the spectrum using TDDFT. --- source/module_io/write_dipole.cpp | 9 +-- tools/ABACUS_dipole_plot.py | 102 ++++++++++++++++++++++++++++++ 2 files changed, 107 insertions(+), 4 deletions(-) create mode 100644 tools/ABACUS_dipole_plot.py diff --git a/source/module_io/write_dipole.cpp b/source/module_io/write_dipole.cpp index 0b2fc11ff3..ff78808e13 100644 --- a/source/module_io/write_dipole.cpp +++ b/source/module_io/write_dipole.cpp @@ -196,7 +196,7 @@ void ModuleIO::write_dipole(const double *rho_save, ofs << istep << " " << dipole_elec_x << " " << dipole_elec_y << " " << dipole_elec_z << std::endl; - /* + double dipole_ion_x = 0.0, dipole_ion_y = 0.0, dipole_ion_z = 0.0, dipole_sum = 0.0; if (GlobalC::ucell.ntype == 1) { @@ -265,6 +265,7 @@ void ModuleIO::write_dipole(const double *rho_save, { std::cout << "atom ntype is too large!" << std::endl; } +/* for(int it=1; it<(GlobalC::ucell.ntype); it++) { for(int ia=0; ia Date: Wed, 22 Feb 2023 11:17:56 +0800 Subject: [PATCH 2/2] fix td_val test bug. --- source/module_io/write_dipole.cpp | 36 +++++++++++++++---------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/source/module_io/write_dipole.cpp b/source/module_io/write_dipole.cpp index ff78808e13..ea97c93870 100644 --- a/source/module_io/write_dipole.cpp +++ b/source/module_io/write_dipole.cpp @@ -203,11 +203,11 @@ void ModuleIO::write_dipole(const double *rho_save, for (int ia = 0; ia < GlobalC::ucell.atoms[0].na; ia++) { dipole_ion_x += GlobalC::ucell.atoms[0].taud[ia].x * GlobalC::ucell.lat0 * 0.529177 - * ELEC_evolve::td_val_elec_01; + * INPUT.td_val_elec_01; dipole_ion_y += GlobalC::ucell.atoms[0].taud[ia].y * GlobalC::ucell.lat0 * 0.529177 - * ELEC_evolve::td_val_elec_01; + * INPUT.td_val_elec_01; dipole_ion_z += GlobalC::ucell.atoms[0].taud[ia].z * GlobalC::ucell.lat0 * 0.529177 - * ELEC_evolve::td_val_elec_01; + * INPUT.td_val_elec_01; } } else if (GlobalC::ucell.ntype == 2) @@ -215,20 +215,20 @@ void ModuleIO::write_dipole(const double *rho_save, for (int ia = 0; ia < GlobalC::ucell.atoms[0].na; ia++) { dipole_ion_x += GlobalC::ucell.atoms[0].taud[ia].x * GlobalC::ucell.lat0 * 0.529177 - * ELEC_evolve::td_val_elec_01; + * INPUT.td_val_elec_01; dipole_ion_y += GlobalC::ucell.atoms[0].taud[ia].y * GlobalC::ucell.lat0 * 0.529177 - * ELEC_evolve::td_val_elec_01; + * INPUT.td_val_elec_01; dipole_ion_z += GlobalC::ucell.atoms[0].taud[ia].z * GlobalC::ucell.lat0 * 0.529177 - * ELEC_evolve::td_val_elec_01; + * INPUT.td_val_elec_01; } for (int ia = 0; ia < GlobalC::ucell.atoms[1].na; ia++) { dipole_ion_x += GlobalC::ucell.atoms[1].taud[ia].x * GlobalC::ucell.lat0 * 0.529177 - * ELEC_evolve::td_val_elec_02; + * INPUT.td_val_elec_02; dipole_ion_y += GlobalC::ucell.atoms[1].taud[ia].y * GlobalC::ucell.lat0 * 0.529177 - * ELEC_evolve::td_val_elec_02; + * INPUT.td_val_elec_02; dipole_ion_z += GlobalC::ucell.atoms[1].taud[ia].z * GlobalC::ucell.lat0 * 0.529177 - * ELEC_evolve::td_val_elec_02; + * INPUT.td_val_elec_02; } } else if (GlobalC::ucell.ntype == 3) @@ -236,29 +236,29 @@ void ModuleIO::write_dipole(const double *rho_save, for (int ia = 0; ia < GlobalC::ucell.atoms[0].na; ia++) { dipole_ion_x += GlobalC::ucell.atoms[0].taud[ia].x * GlobalC::ucell.lat0 * 0.529177 - * ELEC_evolve::td_val_elec_01; + * INPUT.td_val_elec_01; dipole_ion_y += GlobalC::ucell.atoms[0].taud[ia].y * GlobalC::ucell.lat0 * 0.529177 - * ELEC_evolve::td_val_elec_01; + * INPUT.td_val_elec_01; dipole_ion_z += GlobalC::ucell.atoms[0].taud[ia].z * GlobalC::ucell.lat0 * 0.529177 - * ELEC_evolve::td_val_elec_01; + * INPUT.td_val_elec_01; } for (int ia = 0; ia < GlobalC::ucell.atoms[1].na; ia++) { dipole_ion_x += GlobalC::ucell.atoms[1].taud[ia].x * GlobalC::ucell.lat0 * 0.529177 - * ELEC_evolve::td_val_elec_02; + * INPUT.td_val_elec_02; dipole_ion_y += GlobalC::ucell.atoms[1].taud[ia].y * GlobalC::ucell.lat0 * 0.529177 - * ELEC_evolve::td_val_elec_02; + * INPUT.td_val_elec_02; dipole_ion_z += GlobalC::ucell.atoms[1].taud[ia].z * GlobalC::ucell.lat0 * 0.529177 - * ELEC_evolve::td_val_elec_02; + * INPUT.td_val_elec_02; } for (int ia = 0; ia < GlobalC::ucell.atoms[2].na; ia++) { dipole_ion_x += GlobalC::ucell.atoms[2].taud[ia].x * GlobalC::ucell.lat0 * 0.529177 - * ELEC_evolve::td_val_elec_03; + * INPUT.td_val_elec_03; dipole_ion_y += GlobalC::ucell.atoms[2].taud[ia].y * GlobalC::ucell.lat0 * 0.529177 - * ELEC_evolve::td_val_elec_03; + * INPUT.td_val_elec_03; dipole_ion_z += GlobalC::ucell.atoms[2].taud[ia].z * GlobalC::ucell.lat0 * 0.529177 - * ELEC_evolve::td_val_elec_03; + * INPUT.td_val_elec_03; } } else