1- #include " evolve_phi .h"
1+ #include " evolve_ofdft .h"
22
33#include " source_io/module_parameter/parameter.h"
44#include < iostream>
55
66#include " source_base/parallel_reduce.h"
77
8- void EVOLVE_PHI ::get_Hpsi (elecstate::ElecState* pelec, const Charge& chr, UnitCell& ucell, const std::complex <double >* const * psi_, ModulePW::PW_Basis* pw_rho, std::complex <double >** Hpsi)
8+ void Evolve_OFDFT ::get_Hpsi (elecstate::ElecState* pelec, const Charge& chr, UnitCell& ucell, std::vector<std::vector<std:: complex <double >>> psi_, ModulePW::PW_Basis* pw_rho, std::vector<std::vector<std:: complex <double >>> Hpsi)
99{
1010 // update rho
1111 for (int is = 0 ; is < PARAM.inp .nspin ; ++is)
@@ -29,7 +29,7 @@ void EVOLVE_PHI::get_Hpsi(elecstate::ElecState* pelec, const Charge& chr, UnitCe
2929 this ->get_vw_potential_phi (psi_, pw_rho, Hpsi);
3030}
3131
32- void EVOLVE_PHI ::get_tf_potential (const double * const * prho, ModulePW::PW_Basis* pw_rho, ModuleBase::matrix& rpot)
32+ void Evolve_OFDFT ::get_tf_potential (const double * const * prho, ModulePW::PW_Basis* pw_rho, ModuleBase::matrix& rpot)
3333{
3434 if (PARAM.inp .nspin == 1 )
3535 {
@@ -50,18 +50,22 @@ void EVOLVE_PHI::get_tf_potential(const double* const* prho, ModulePW::PW_Basis*
5050 }
5151}
5252
53- void EVOLVE_PHI ::get_vw_potential_phi (const std::complex <double >* const * pphi, ModulePW::PW_Basis* pw_rho, std::complex <double >** Hpsi)
53+ void Evolve_OFDFT ::get_vw_potential_phi (std::vector<std::vector<std:: complex <double >>> pphi, ModulePW::PW_Basis* pw_rho, std::vector<std::vector<std:: complex <double >>> Hpsi)
5454{
5555 std::complex <double >** rLapPhi = new std::complex <double >*[PARAM.inp .nspin ];
5656 for (int is = 0 ; is < PARAM.inp .nspin ; ++is) {
5757 rLapPhi[is] = new std::complex <double >[pw_rho->nrxx ];
58+ for (int ir = 0 ; ir < pw_rho->nrxx ; ++ir)
59+ {
60+ rLapPhi[is][ir]=pphi[is][ir];
61+ }
5862 }
5963 std::complex <double >** recipPhi = new std::complex <double >*[PARAM.inp .nspin ];
6064 for (int is = 0 ; is < PARAM.inp .nspin ; ++is)
6165 {
6266 recipPhi[is] = new std::complex <double >[pw_rho->npw ];
6367
64- pw_rho->real2recip (pphi [is], recipPhi[is]);
68+ pw_rho->real2recip (rLapPhi [is], recipPhi[is]);
6569 for (int ik = 0 ; ik < pw_rho->npw ; ++ik)
6670 {
6771 recipPhi[is][ik] *= pw_rho->gg [ik] * pw_rho->tpiba2 ;
@@ -82,7 +86,7 @@ void EVOLVE_PHI::get_vw_potential_phi(const std::complex<double>* const* pphi, M
8286 delete[] rLapPhi;
8387}
8488
85- void EVOLVE_PHI ::get_CD_potential (const std::complex <double >* const * psi_, ModulePW::PW_Basis* pw_rho, ModuleBase::matrix& rpot)
89+ void Evolve_OFDFT ::get_CD_potential (std::vector<std::vector<std:: complex <double >>> psi_, ModulePW::PW_Basis* pw_rho, ModuleBase::matrix& rpot)
8690{
8791 for (int is = 0 ; is < PARAM.inp .nspin ; ++is)
8892 {
@@ -91,28 +95,20 @@ void EVOLVE_PHI::get_CD_potential(const std::complex<double>* const* psi_, Modul
9195 }
9296}
9397
94- void EVOLVE_PHI ::propagate_psi (elecstate::ElecState* pelec, const Charge& chr, UnitCell& ucell, std::complex <double >** pphi_, ModulePW::PW_Basis* pw_rho)
98+ void Evolve_OFDFT ::propagate_psi (elecstate::ElecState* pelec, const Charge& chr, UnitCell& ucell, std::vector<std::vector<std:: complex <double >>> pphi_, ModulePW::PW_Basis* pw_rho)
9599{
96100 ModuleBase::timer::tick (" ESolver_OF_TDDFT" , " propagte_psi" );
97101
98102 std::complex <double > imag (0.0 ,1.0 );
99103 double dt=PARAM.inp .mdp .md_dt ;
100- std::complex <double >** K1 = new std::complex <double >*[PARAM.inp .nspin ];
101- std::complex <double >** K2 = new std::complex <double >*[PARAM.inp .nspin ];
102- std::complex <double >** K3 = new std::complex <double >*[PARAM.inp .nspin ];
103- std::complex <double >** K4 = new std::complex <double >*[PARAM.inp .nspin ];
104- std::complex <double >** psi1 = new std::complex <double >*[PARAM.inp .nspin ];
105- std::complex <double >** psi2 = new std::complex <double >*[PARAM.inp .nspin ];
106- std::complex <double >** psi3 = new std::complex <double >*[PARAM.inp .nspin ];
107- for (int is = 0 ; is < PARAM.inp .nspin ; ++is) {
108- K1[is] = new std::complex <double >[pw_rho->nrxx ];
109- K2[is] = new std::complex <double >[pw_rho->nrxx ];
110- K3[is] = new std::complex <double >[pw_rho->nrxx ];
111- K4[is] = new std::complex <double >[pw_rho->nrxx ];
112- psi1[is] = new std::complex <double >[pw_rho->nrxx ];
113- psi2[is] = new std::complex <double >[pw_rho->nrxx ];
114- psi3[is] = new std::complex <double >[pw_rho->nrxx ];
115- }
104+ std::vector<std::vector<std::complex <double >>> K1 (PARAM.inp .nspin ,std::vector<std::complex <double >>(pw_rho->nrxx ));
105+ std::vector<std::vector<std::complex <double >>> K2 (PARAM.inp .nspin ,std::vector<std::complex <double >>(pw_rho->nrxx ));
106+ std::vector<std::vector<std::complex <double >>> K3 (PARAM.inp .nspin ,std::vector<std::complex <double >>(pw_rho->nrxx ));
107+ std::vector<std::vector<std::complex <double >>> K4 (PARAM.inp .nspin ,std::vector<std::complex <double >>(pw_rho->nrxx ));
108+ std::vector<std::vector<std::complex <double >>> psi1 (PARAM.inp .nspin ,std::vector<std::complex <double >>(pw_rho->nrxx ));
109+ std::vector<std::vector<std::complex <double >>> psi2 (PARAM.inp .nspin ,std::vector<std::complex <double >>(pw_rho->nrxx ));
110+ std::vector<std::vector<std::complex <double >>> psi3 (PARAM.inp .nspin ,std::vector<std::complex <double >>(pw_rho->nrxx ));
111+
116112 get_Hpsi (pelec,chr,ucell,pphi_,pw_rho,K1);
117113 for (int is = 0 ; is < PARAM.inp .nspin ; ++is){
118114 for (int ir = 0 ; ir < pw_rho->nrxx ; ++ir)
@@ -146,21 +142,5 @@ void EVOLVE_PHI::propagate_psi(elecstate::ElecState* pelec, const Charge& chr, U
146142 }
147143 }
148144
149- for (int is = 0 ; is < PARAM.inp .nspin ; ++is) {
150- delete[] K1[is];
151- delete[] K2[is];
152- delete[] K3[is];
153- delete[] K4[is];
154- delete[] psi1[is];
155- delete[] psi2[is];
156- delete[] psi3[is];
157- }
158- delete[] K1;
159- delete[] K2;
160- delete[] K3;
161- delete[] K4;
162- delete[] psi1;
163- delete[] psi2;
164- delete[] psi3;
165145 ModuleBase::timer::tick (" ESolver_OF_TDDFT" , " propagte_psi" );
166146}
0 commit comments