Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
63 commits
Select commit Hold shift + click to select a range
2046103
Add files via upload
ESROAMER Jun 27, 2025
2f07ba2
Update global_file.cpp
ESROAMER Jun 27, 2025
1dc6abc
Update global_file.h
ESROAMER Jun 27, 2025
94c45bd
Update ORB_nonlocal_lm.h
ESROAMER Jun 27, 2025
6bd0ee5
Update H_TDDFT_pw.cpp
ESROAMER Jun 27, 2025
0a0f953
Update H_TDDFT_pw.h
ESROAMER Jun 27, 2025
851a9a7
Update esolver_ks_lcao_tddft.cpp
ESROAMER Jun 27, 2025
a40adcd
Update esolver_ks_lcao_tddft.h
ESROAMER Jun 27, 2025
ff8bbaa
Update esolver_ks_lcao.cpp
ESROAMER Jun 27, 2025
9753627
Update esolver_ks.cpp
ESROAMER Jun 27, 2025
d9edeed
Update esolver.cpp
ESROAMER Jun 27, 2025
138811f
Update operator.h
ESROAMER Jun 27, 2025
d143d8e
Update CMakeLists.txt
ESROAMER Jun 27, 2025
f25b3a2
Update CMakeLists.txt
ESROAMER Jun 27, 2025
63101bd
Update operator_lcao.cpp
ESROAMER Jun 27, 2025
0583ba4
Update overlap_new.cpp
ESROAMER Jun 27, 2025
0a3bd92
Update td_ekinetic_lcao.cpp
ESROAMER Jun 27, 2025
b378c10
Update td_ekinetic_lcao.h
ESROAMER Jun 27, 2025
dad7c0d
Update td_nonlocal_lcao.cpp
ESROAMER Jun 27, 2025
3aefc9f
Update td_nonlocal_lcao.h
ESROAMER Jun 27, 2025
741c4e1
Add files via upload
ESROAMER Jun 27, 2025
aa0859b
Update hamilt_lcao.cpp
ESROAMER Jun 27, 2025
7ea87e2
Update spar_hsr.cpp
ESROAMER Jun 27, 2025
d0353dc
Update spar_hsr.cpp
ESROAMER Jun 27, 2025
8ba4c69
Update CMakeLists.txt
ESROAMER Jun 27, 2025
ca5e692
Update evolve_elec.h
ESROAMER Jun 27, 2025
5642fef
Update evolve_psi.cpp
ESROAMER Jun 27, 2025
de01481
Update solve_propagation.cpp
ESROAMER Jun 27, 2025
812904e
Add files via upload
ESROAMER Jun 27, 2025
dcfcd05
Delete source/module_hamilt_lcao/module_tddft/td_velocity.cpp
ESROAMER Jun 27, 2025
2f4147f
Delete source/module_hamilt_lcao/module_tddft/td_velocity.h
ESROAMER Jun 27, 2025
a19518b
Delete source/module_hamilt_lcao/module_tddft/td_current.cpp
ESROAMER Jun 27, 2025
822c3bb
Delete source/module_hamilt_lcao/module_tddft/td_current.h
ESROAMER Jun 27, 2025
6a75c76
Update cal_r_overlap_R.cpp
ESROAMER Jun 27, 2025
4efbb25
Update cal_r_overlap_R.h
ESROAMER Jun 27, 2025
cc85159
Update cal_r_overlap_R.h
ESROAMER Jun 27, 2025
ff163c7
Update input_conv.cpp
ESROAMER Jun 27, 2025
473b094
Update output_log.cpp
ESROAMER Jun 27, 2025
f8239de
Update output_log.h
ESROAMER Jun 27, 2025
c9c49f4
Update read_input_item_md.cpp
ESROAMER Jun 27, 2025
1f927dd
Update read_input_item_system.cpp
ESROAMER Jun 27, 2025
f1d8f06
Update read_input_item_tddft.cpp
ESROAMER Jun 27, 2025
a9cca5c
Update read_input.cpp
ESROAMER Jun 27, 2025
87c9889
Update read_set_globalv.cpp
ESROAMER Jun 27, 2025
3934384
Update read_set_globalv.cpp
ESROAMER Jun 27, 2025
2a14ab7
Update read_wfc_nao.cpp
ESROAMER Jun 27, 2025
e0336ce
Update read_wfc_nao.h
ESROAMER Jun 27, 2025
a5ba582
Update td_current_io.cpp
ESROAMER Jun 27, 2025
466dfe9
Update td_current_io.h
ESROAMER Jun 27, 2025
cd4cb69
Update write_HS_sparse.cpp
ESROAMER Jun 27, 2025
af9f5e7
Update write_wfc_nao.cpp
ESROAMER Jun 27, 2025
defb3a4
Update lr_spectrum.h
ESROAMER Jun 27, 2025
16132ef
Update lr_spectrum_velocity.cpp
ESROAMER Jun 27, 2025
14fa609
Update input_parameter.h
ESROAMER Jun 27, 2025
637b11d
Update system_parameter.h
ESROAMER Jun 27, 2025
d0fdc61
Update Makefile.Objects
ESROAMER Jun 27, 2025
a793f90
Delete source/source_estate/density_matrix.cpp
ESROAMER Jun 27, 2025
ae02387
Delete source/source_estate/density_matrix.h
ESROAMER Jun 27, 2025
9301ecb
Add files via upload
ESROAMER Jun 27, 2025
7e7e396
Add files via upload
ESROAMER Jun 27, 2025
662888f
Add files via upload
ESROAMER Jun 27, 2025
763b0f9
Update operator_lcao.cpp
ESROAMER Jun 27, 2025
fbdd3ba
Update write_HS_sparse.cpp
ESROAMER Jun 27, 2025
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
5 changes: 3 additions & 2 deletions source/Makefile.Objects
Original file line number Diff line number Diff line change
Expand Up @@ -329,6 +329,7 @@ OBJS_HAMILT_LCAO=hamilt_lcao.o\
overlap_new.o\
td_ekinetic_lcao.o\
td_nonlocal_lcao.o\
td_pot_hybrid.o\
veff_lcao.o\
meta_lcao.o\
op_dftu_lcao.o\
Expand Down Expand Up @@ -598,8 +599,8 @@ OBJS_LCAO=evolve_elec.o\
propagator_cn2.o\
propagator_taylor.o\
propagator_etrs.o\
td_velocity.o\
td_current.o\
td_info.o\
velocity_op.o\
snap_psibeta_half_tddft.o\
solve_propagation.o\
upsi.o\
Expand Down
1 change: 1 addition & 0 deletions source/module_hamilt_lcao/hamilt_lcaodft/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ if(ENABLE_LCAO)
operator_lcao/nonlocal_new.cpp
operator_lcao/td_ekinetic_lcao.cpp
operator_lcao/td_nonlocal_lcao.cpp
operator_lcao/td_pot_hybrid.cpp
operator_lcao/dspin_lcao.cpp
operator_lcao/dftu_lcao.cpp
pulay_force_stress_center2.cpp
Expand Down
28 changes: 21 additions & 7 deletions source/module_hamilt_lcao/hamilt_lcaodft/hamilt_lcao.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
#include "operator_lcao/overlap_new.h"
#include "operator_lcao/td_ekinetic_lcao.h"
#include "operator_lcao/td_nonlocal_lcao.h"
#include "operator_lcao/td_pot_hybrid.h"
#include "operator_lcao/veff_lcao.h"

namespace hamilt
Expand Down Expand Up @@ -344,12 +345,8 @@ HamiltLCAO<TK, TR>::HamiltLCAO(Gint_Gamma* GG_in,
}
#endif
// TDDFT_velocity_gauge
if (TD_Velocity::tddft_velocity)
if (PARAM.inp.esolver_type == "tddft" && PARAM.inp.td_stype == 1)
{
if (!TD_Velocity::init_vecpot_file)
{
elecstate::H_TDDFT_pw::update_At();
}
Operator<TK>* td_ekinetic = new TDEkinetic<OperatorLCAO<TK, TR>>(this->hsk,
this->hR,
this->kv,
Expand All @@ -359,10 +356,27 @@ HamiltLCAO<TK, TR>::HamiltLCAO(Gint_Gamma* GG_in,
two_center_bundle.overlap_orb.get());
this->getOperator()->add(td_ekinetic);

Operator<TK>* td_nonlocal
= new TDNonlocal<OperatorLCAO<TK, TR>>(this->hsk, this->kv->kvec_d, this->hR, &ucell, orb, &grid_d);
Operator<TK>* td_nonlocal = new TDNonlocal<OperatorLCAO<TK, TR>>(this->hsk,
this->kv->kvec_d,
this->hR,
&ucell,
orb,
&grid_d);
this->getOperator()->add(td_nonlocal);
}
if (PARAM.inp.esolver_type == "tddft" && PARAM.inp.td_stype == 2)
{
Operator<TK>* td_pot_hybrid = new TD_pot_hybrid<OperatorLCAO<TK, TR>>(this->hsk,
this->kv,
this->hR,
this->sR,
orb,
&ucell,
orb.cutoffs(),
&grid_d,
two_center_bundle.kinetic_orb.get());
this->getOperator()->add(td_pot_hybrid);
}
if (PARAM.inp.dft_plus_u)
{
Operator<TK>* dftu = nullptr;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ add_library(
nonlocal_new.cpp
td_ekinetic_lcao.cpp
td_nonlocal_lcao.cpp
td_pot_hybrid.cpp
dspin_lcao.cpp
dftu_lcao.cpp
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
#include "source_hsolver/diago_elpa_native.h"
#endif

#include "module_hamilt_lcao/module_tddft/td_info.h"

namespace hamilt {

template <>
Expand Down Expand Up @@ -200,7 +202,7 @@ void OperatorLCAO<TK, TR>::init(const int ik_in) {

break;
}
case calculation_type::lcao_tddft_velocity: {
case calculation_type::lcao_tddft_periodic: {
if (!this->hr_done) {
// in cal_type=lcao_fixed, HR should be updated by each sub-chain
// nodes
Expand Down Expand Up @@ -240,8 +242,8 @@ void OperatorLCAO<TK, TR>::init(const int ik_in) {
}

// contributeHk()
template <typename TK, typename TR>
void OperatorLCAO<TK, TR>::contributeHk(int ik) {
template <>
void OperatorLCAO<double, double>::contributeHk(int ik) {
ModuleBase::TITLE("OperatorLCAO", "contributeHk");
ModuleBase::timer::tick("OperatorLCAO", "contributeHk");
if(ModuleBase::GlobalFunc::IS_COLUMN_MAJOR_KS_SOLVER(PARAM.inp.ks_solver))
Expand All @@ -256,6 +258,37 @@ void OperatorLCAO<TK, TR>::contributeHk(int ik) {
}
ModuleBase::timer::tick("OperatorLCAO", "contributeHk");
}
// contributeHk()
template <typename TK, typename TR>
void OperatorLCAO<TK, TR>::contributeHk(int ik) {
ModuleBase::TITLE("OperatorLCAO", "contributeHk");
ModuleBase::timer::tick("OperatorLCAO", "contributeHk");
if(ModuleBase::GlobalFunc::IS_COLUMN_MAJOR_KS_SOLVER(PARAM.inp.ks_solver))
{
const int nrow = this->hsk->get_pv()->get_row_size();
if(PARAM.inp.td_stype == 2)
{
TD_info::td_vel_op->folding_HR_td(*this->hR, this->hsk->get_hk(), this->kvec_d[ik], nrow, 1);
}
else
{
hamilt::folding_HR(*this->hR, this->hsk->get_hk(), this->kvec_d[ik], nrow, 1);
}
}
else
{
const int ncol = this->hsk->get_pv()->get_col_size();
if(PARAM.inp.td_stype == 2)
{
TD_info::td_vel_op->folding_HR_td(*this->hR, this->hsk->get_hk(), this->kvec_d[ik], ncol, 0);
}
else
{
hamilt::folding_HR(*this->hR, this->hsk->get_hk(), this->kvec_d[ik], ncol, 0);
}
}
ModuleBase::timer::tick("OperatorLCAO", "contributeHk");
}

template class OperatorLCAO<double, double>;
template class OperatorLCAO<std::complex<double>, double>;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
#include "module_hamilt_lcao/hamilt_lcaodft/operator_lcao/operator_lcao.h"
#include "module_hamilt_lcao/module_hcontainer/hcontainer_funcs.h"
#include <vector>
#include "module_hamilt_lcao/module_tddft/td_info.h"

template <typename TK, typename TR>
hamilt::OverlapNew<hamilt::OperatorLCAO<TK, TR>>::OverlapNew(HS_Matrix_K<TK>* hsk_in,
Expand Down Expand Up @@ -188,11 +189,11 @@ void hamilt::OverlapNew<hamilt::OperatorLCAO<TK, TR>>::contributeHR()
}

// contributeHk()
template <typename TK, typename TR>
void hamilt::OverlapNew<hamilt::OperatorLCAO<TK, TR>>::contributeHk(int ik)
template <>
void hamilt::OverlapNew<hamilt::OperatorLCAO<double, double>>::contributeHk(int ik)
{
//! if k vector is not changed, then do nothing and return, only for gamma_only case
if (this->kvec_d[ik] == this->kvec_d_old && std::is_same<TK, double>::value)
if (this->kvec_d[ik] == this->kvec_d_old)
{
return;
}
Expand All @@ -217,7 +218,44 @@ void hamilt::OverlapNew<hamilt::OperatorLCAO<TK, TR>>::contributeHk(int ik)

ModuleBase::timer::tick("OverlapNew", "contributeHk");
}
template <typename TK, typename TR>
void hamilt::OverlapNew<hamilt::OperatorLCAO<TK, TR>>::contributeHk(int ik)
{
ModuleBase::TITLE("OverlapNew", "contributeHk");
ModuleBase::timer::tick("OverlapNew", "contributeHk");

//! set SK to zero and then calculate SK for each k vector
this->hsk->set_zero_sk();
if (ModuleBase::GlobalFunc::IS_COLUMN_MAJOR_KS_SOLVER(PARAM.inp.ks_solver))
{
const int nrow = this->SR->get_atom_pair(0).get_paraV()->get_row_size();
if(PARAM.inp.td_stype == 2)
{
TD_info::td_vel_op->folding_HR_td(*this->SR, this->hsk->get_sk(), this->kvec_d[ik], nrow, 1);
}
else
{
hamilt::folding_HR(*this->SR, this->hsk->get_sk(), this->kvec_d[ik], nrow, 1);
}
}
else
{
const int ncol = this->SR->get_atom_pair(0).get_paraV()->get_col_size();
if(PARAM.inp.td_stype == 2)
{
TD_info::td_vel_op->folding_HR_td(*this->SR, this->hsk->get_sk(), this->kvec_d[ik], ncol, 0);
}
else
{
hamilt::folding_HR(*this->SR, this->hsk->get_sk(), this->kvec_d[ik], ncol, 0);
}
}

// update kvec_d_old
this->kvec_d_old = this->kvec_d[ik];

ModuleBase::timer::tick("OverlapNew", "contributeHk");
}
template <typename TK, typename TR>
TK* hamilt::OverlapNew<hamilt::OperatorLCAO<TK, TR>>::getSk()
{
Expand Down
Loading
Loading