@@ -252,13 +252,15 @@ void Gint::transfer_DM2DtoGrid(std::vector<hamilt::HContainer<double>*> DM2D) {
252252 }
253253 } else // NSPIN=4 case
254254 {
255- # ifdef __MPI
255+
256256 // is=0:↑↑, 1:↑↓, 2:↓↑, 3:↓↓
257257 const int row_set[4 ] = {0 , 0 , 1 , 1 };
258258 const int col_set[4 ] = {0 , 1 , 0 , 1 };
259259 int mg = DM2D[0 ]->get_paraV ()->get_global_row_size ()/2 ;
260260 int ng = DM2D[0 ]->get_paraV ()->get_global_col_size ()/2 ;
261261 int nb = DM2D[0 ]->get_paraV ()->get_block_size ()/2 ;
262+ auto ijr_info = DM2D[0 ]->get_ijr_info ();
263+ #ifdef __MPI
262264 int blacs_ctxt = DM2D[0 ]->get_paraV ()->blacs_ctxt ;
263265 std::vector<int > iat2iwt (ucell->nat );
264266 for (int iat = 0 ; iat < ucell->nat ; iat++) {
@@ -267,8 +269,15 @@ void Gint::transfer_DM2DtoGrid(std::vector<hamilt::HContainer<double>*> DM2D) {
267269 Parallel_Orbitals *pv = new Parallel_Orbitals ();
268270 pv->set (mg, ng, nb, blacs_ctxt);
269271 pv->set_atomic_trace (iat2iwt.data (), ucell->nat , mg);
270- auto ijr_info = DM2D[0 ]->get_ijr_info ();
271272 this -> dm2d_tmp = new hamilt::HContainer<double >(pv, nullptr , &ijr_info);
273+ #else
274+ if (this ->dm2d_tmp != nullptr ) {
275+ delete this ->dm2d_tmp ;
276+ }
277+ this -> dm2d_tmp = new hamilt::HContainer<double >(*this ->hRGint );
278+ this -> dm2d_tmp -> insert_ijrs (this ->gridt ->get_ijr_info (), *(this ->ucell ));
279+ this -> dm2d_tmp -> allocate (nullptr , true );
280+ #endif
272281 ModuleBase::Memory::record (" Gint::dm2d_tmp" , this ->dm2d_tmp ->get_memory_size ());
273282 for (int is = 0 ; is < 4 ; is++){
274283 for (int iap = 0 ; iap < DM2D[0 ]->size_atom_pairs (); ++iap) {
@@ -288,11 +297,14 @@ void Gint::transfer_DM2DtoGrid(std::vector<hamilt::HContainer<double>*> DM2D) {
288297 }
289298 }
290299 }
300+ #ifdef __MPI
291301 hamilt::transferParallels2Serials ( *(this ->dm2d_tmp ), this ->DMRGint [is]);
292- }
293302#else
294- // this->DMRGint_full = DM2D[0];
303+ this ->DMRGint [is]->set_zero ();
304+ this ->DMRGint [is]->add (*(this ->dm2d_tmp ));
295305#endif
306+ }
307+
296308 }
297309 ModuleBase::timer::tick (" Gint" , " transfer_DMR" );
298310}
0 commit comments