Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
3 changes: 2 additions & 1 deletion source/module_elecstate/module_charge/charge_extra.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -438,6 +438,7 @@ void Charge_Extra::read_files(
nz,
ef,
ucell,
prenspin);
prenspin,
false);
}
}
37 changes: 19 additions & 18 deletions source/module_io/cube_io.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,27 +21,28 @@ bool read_cube(
const int& nz,
double& ef,
const UnitCell* ucell,
int& prenspin);
int& prenspin,
const bool& warning_flag = true);

void write_cube(
void write_cube(
#ifdef __MPI
const int& bz,
const int& nbz,
const int& nplane,
const int& startz_current,
const int& bz,
const int& nbz,
const int& nplane,
const int& startz_current,
#endif
const double* data,
const int& is,
const int& nspin,
const int& iter,
const std::string& fn,
const int& nx,
const int& ny,
const int& nz,
const double& ef,
const UnitCell* ucell,
const int &precision = 11,
const int &out_fermi = 1);//mohan add 2007-10-17
const double* data,
const int& is,
const int& nspin,
const int& iter,
const std::string& fn,
const int& nx,
const int& ny,
const int& nz,
const double& ef,
const UnitCell* ucell,
const int& precision = 11,
const int& out_fermi = 1); // mohan add 2007-10-17

/**
* @brief The trilinear interpolation method
Expand Down
54 changes: 37 additions & 17 deletions source/module_io/read_cube.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@ bool ModuleIO::read_cube(
const int& nz,
double& ef,
const UnitCell* ucell,
int& prenspin)
int& prenspin,
const bool& warning_flag)
{
ModuleBase::TITLE("ModuleIO","read_cube");
std::ifstream ifs(fn.c_str());
Expand Down Expand Up @@ -56,31 +57,50 @@ bool ModuleIO::read_cube(
int ny_read = 0;
int nz_read = 0;
double fac = ucell->lat0;
ifs >> nx_read;
ModuleBase::CHECK_DOUBLE(ifs, fac * ucell->latvec.e11 / double(nx), quit);
ModuleBase::CHECK_DOUBLE(ifs, fac * ucell->latvec.e12 / double(nx), quit);
ModuleBase::CHECK_DOUBLE(ifs, fac * ucell->latvec.e13 / double(nx), quit);
ifs >> ny_read;
ModuleBase::CHECK_DOUBLE(ifs, fac * ucell->latvec.e21 / double(ny), quit);
ModuleBase::CHECK_DOUBLE(ifs, fac * ucell->latvec.e22 / double(ny), quit);
ModuleBase::CHECK_DOUBLE(ifs, fac * ucell->latvec.e23 / double(ny), quit);
ifs >> nz_read;
ModuleBase::CHECK_DOUBLE(ifs, fac * ucell->latvec.e31 / double(nz), quit);
ModuleBase::CHECK_DOUBLE(ifs, fac * ucell->latvec.e32 / double(nz), quit);
ModuleBase::CHECK_DOUBLE(ifs, fac * ucell->latvec.e33 / double(nz), quit);
std::string temp;
if (warning_flag)
{
ifs >> nx_read;
ModuleBase::CHECK_DOUBLE(ifs, fac * ucell->latvec.e11 / double(nx), quit);
ModuleBase::CHECK_DOUBLE(ifs, fac * ucell->latvec.e12 / double(nx), quit);
ModuleBase::CHECK_DOUBLE(ifs, fac * ucell->latvec.e13 / double(nx), quit);
ifs >> ny_read;
ModuleBase::CHECK_DOUBLE(ifs, fac * ucell->latvec.e21 / double(ny), quit);
ModuleBase::CHECK_DOUBLE(ifs, fac * ucell->latvec.e22 / double(ny), quit);
ModuleBase::CHECK_DOUBLE(ifs, fac * ucell->latvec.e23 / double(ny), quit);
ifs >> nz_read;
ModuleBase::CHECK_DOUBLE(ifs, fac * ucell->latvec.e31 / double(nz), quit);
ModuleBase::CHECK_DOUBLE(ifs, fac * ucell->latvec.e32 / double(nz), quit);
ModuleBase::CHECK_DOUBLE(ifs, fac * ucell->latvec.e33 / double(nz), quit);
}
else
{
ifs >> nx_read;
ifs >> temp >> temp >> temp;
ifs >> ny_read;
ifs >> temp >> temp >> temp;
ifs >> nz_read;
ifs >> temp >> temp >> temp;
}

const bool same = (nx == nx_read && ny == ny_read && nz == nz_read) ? true : false;

int temp = 0;
for (int it = 0; it < ucell->ntype; it++)
{
for (int ia = 0; ia < ucell->atoms[it].na; ia++)
{
ifs >> temp; // skip atomic number
ifs >> temp; // skip Z valance
ModuleBase::CHECK_DOUBLE(ifs, fac * ucell->atoms[it].tau[ia].x, quit);
ModuleBase::CHECK_DOUBLE(ifs, fac * ucell->atoms[it].tau[ia].y, quit);
ModuleBase::CHECK_DOUBLE(ifs, fac * ucell->atoms[it].tau[ia].z, quit);
if (warning_flag)
{
ModuleBase::CHECK_DOUBLE(ifs, fac * ucell->atoms[it].tau[ia].x, quit);
ModuleBase::CHECK_DOUBLE(ifs, fac * ucell->atoms[it].tau[ia].y, quit);
ModuleBase::CHECK_DOUBLE(ifs, fac * ucell->atoms[it].tau[ia].z, quit);
}
else
{
ifs >> temp >> temp >> temp;
}
}
}

Expand Down