virtual void initgrids(const double lat0_in,const ModuleBase::Matrix3 latvec_in,
// generation of nx, ny and nz are omitted here
this->autoset_big_cell_size(this->bz, ibox[2], this->poolnproc);
if(ibox[0] == ibox[2]) this->bx = this->bz;
else this->autoset_big_cell_size(this->bx, ibox[0]);
if(ibox[1] == ibox[2]) this->by = this->bz;
else this->autoset_big_cell_size(this->by, ibox[1]);
this->bxyz = this->bx * this->by * this->bz;
if(ibox[0]%this->bx != 0) ibox[0] += (this->bx - ibox[0] % this->bx);
if(ibox[1]%this->by != 0) ibox[1] += (this->by - ibox[1] % this->by);
if(ibox[2]%this->bz != 0) ibox[2] += (this->bz - ibox[2] % this->bz);
this->nbx = this->nx / bx;
this->nby = this->ny / by;
this->nbz = this->nz / bz;