template<typename FPTYPE, typename Device>
void ESolver_KS<FPTYPE, Device>::Init(Input& inp, UnitCell& ucell)
if(GlobalV::BASIS_TYPE=="pw" || GlobalV::CALCULATION=="get_wf")
//Envelope function is calculated as lcao_in_pw
this->pw_wfc->initmpi(GlobalV::NPROC_IN_POOL, GlobalV::RANK_IN_POOL, POOL_WORLD);
this->pw_wfc->initgrids(inp.ref_cell_factor * ucell.lat0,
this->pw_wfc->initparameters(false, inp.ecutwfc, this->kv.nks, this->kv.kvec_d.data());
if(INPUT.pw_seed > 0) MPI_Allreduce(MPI_IN_PLACE, &this->pw_wfc->ggecut, 1, MPI_DOUBLE, MPI_MAX , MPI_COMM_WORLD);
//qianrui add 2021-8-13 to make different kpar parameters can get the same results
this->pw_wfc->setuptransform();
for (int ik = 0; ik < this->kv.nks; ++ik)
this->kv.ngk[ik] = this->pw_wfc->npwk[ik];
this->pw_wfc->collect_local_pw();
this->print_wfcfft(inp, GlobalV::ofs_running);