Skip to content
Open
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
22 changes: 22 additions & 0 deletions source/source_io/module_json/init_info.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,28 @@ void gen_init(UnitCell* ucell)
AbacusJson::add_json({"init", "nelectron"}, nelec_total, false);

// Json::AbacusJson::add_Json(nelec_total,false,"init", "nelectron");

// energy cutoff for wavefunctions (Ry)
AbacusJson::add_json({"init", "ecutwfc"}, PARAM.inp.ecutwfc, false);
AbacusJson::add_json({"init", "ecutwfc_unit"}, "Ry", false);

// smearing method and sigma (Ry)
AbacusJson::add_json({"init", "smearing_method"}, PARAM.inp.smearing_method, false);
AbacusJson::add_json({"init", "smearing_sigma"}, PARAM.inp.smearing_sigma, false);
AbacusJson::add_json({"init", "smearing_sigma_unit"}, "Ry", false);

// k-point mesh generation parameters
AbacusJson::add_json({"init", "kmesh_type"}, PARAM.inp.kmesh_type, false);
Json::jsonValue kspacing_array(JarrayType);
kspacing_array.JPushBack(PARAM.inp.kspacing[0]);
kspacing_array.JPushBack(PARAM.inp.kspacing[1]);
kspacing_array.JPushBack(PARAM.inp.kspacing[2]);
AbacusJson::add_json({"init", "kspacing"}, kspacing_array, false);
Json::jsonValue koffset_array(JarrayType);
koffset_array.JPushBack(PARAM.inp.koffset[0]);
koffset_array.JPushBack(PARAM.inp.koffset[1]);
koffset_array.JPushBack(PARAM.inp.koffset[2]);
AbacusJson::add_json({"init", "koffset"}, koffset_array, false);
}

void add_nkstot(int nkstot)
Expand Down
19 changes: 19 additions & 0 deletions source/source_io/module_json/test/para_json_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -257,6 +257,12 @@ TEST(AbacusJsonTest, InitInfo)
ucell.atoms = atomlist;
ucell.ntype = 3;
PARAM.input.nbands = 10;
PARAM.input.ecutwfc = 50.0;
PARAM.input.smearing_method = "gauss";
PARAM.input.smearing_sigma = 0.015;
PARAM.input.kspacing = {0.04, 0.04, 0.04};
PARAM.input.koffset = {0.0, 0.0, 0.0};
PARAM.input.kmesh_type = "gamma";

ucell.atoms[0].label = "Si";
ucell.atoms[0].ncpp.zv = 3;
Expand Down Expand Up @@ -295,6 +301,19 @@ TEST(AbacusJsonTest, InitInfo)
ASSERT_EQ(Json::AbacusJson::doc["init"]["natom_each_type"]["Si"].GetInt(), 1);
ASSERT_EQ(Json::AbacusJson::doc["init"]["natom_each_type"]["C"].GetInt(), 2);
ASSERT_EQ(Json::AbacusJson::doc["init"]["natom_each_type"]["O"].GetInt(), 3);

ASSERT_EQ(Json::AbacusJson::doc["init"]["ecutwfc"].GetDouble(), 50.0);
ASSERT_STREQ(Json::AbacusJson::doc["init"]["ecutwfc_unit"].GetString(), "Ry");
ASSERT_STREQ(Json::AbacusJson::doc["init"]["smearing_method"].GetString(), "gauss");
ASSERT_EQ(Json::AbacusJson::doc["init"]["smearing_sigma"].GetDouble(), 0.015);
ASSERT_STREQ(Json::AbacusJson::doc["init"]["smearing_sigma_unit"].GetString(), "Ry");
ASSERT_STREQ(Json::AbacusJson::doc["init"]["kmesh_type"].GetString(), "gamma");
ASSERT_EQ(Json::AbacusJson::doc["init"]["kspacing"][0].GetDouble(), 0.04);
ASSERT_EQ(Json::AbacusJson::doc["init"]["kspacing"][1].GetDouble(), 0.04);
ASSERT_EQ(Json::AbacusJson::doc["init"]["kspacing"][2].GetDouble(), 0.04);
ASSERT_EQ(Json::AbacusJson::doc["init"]["koffset"][0].GetDouble(), 0.0);
ASSERT_EQ(Json::AbacusJson::doc["init"]["koffset"][1].GetDouble(), 0.0);
ASSERT_EQ(Json::AbacusJson::doc["init"]["koffset"][2].GetDouble(), 0.0);
}

TEST(AbacusJsonTest, Init_stru_test)
Expand Down
44 changes: 24 additions & 20 deletions source/source_md/md_base.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -165,63 +165,67 @@ void MD_base::print_md(std::ofstream& ofs, const bool& cal_stress)
}

// screen output
std::cout << std::setprecision(8);
std::cout << " ------------------------------------------------------------------------------------------------"
std::cout << " -------------------------------------------------------------------------"
<< std::endl;
std::cout << " " << std::left << std::setw(20) << "Energy (Ry)" << std::left << std::setw(20) << "Potential (Ry)"
<< std::left << std::setw(20) << "Kinetic (Ry)" << std::left << std::setw(20) << "Temperature (K)";
std::cout << " " << std::left << std::setw(24) << "Energy (Ry)" << std::left << std::setw(24) << "Potential (Ry)"
<< std::left << std::setw(24) << "Kinetic (Ry)" << std::endl;
std::cout << std::setprecision(12);
std::cout << " " << std::left << std::setw(24) << 2 * (potential + kinetic) << std::left << std::setw(24)
<< 2 * potential << std::left << std::setw(24) << 2 * kinetic << std::endl;
std::cout << " " << std::left << std::setw(24) << "Temperature (K)";

if (cal_stress)
{
std::cout << std::left << std::setw(20) << "Pressure (kbar)";
std::cout << std::left << std::setw(24) << "Pressure (kbar)";
}

std::cout << std::endl;
std::cout << " " << std::left << std::setw(20) << 2 * (potential + kinetic) << std::left << std::setw(20)
<< 2 * potential << std::left << std::setw(20) << 2 * kinetic << std::left << std::setw(20)
<< t_current * ModuleBase::Hartree_to_K;
std::cout << std::setprecision(6);
std::cout << " " << std::left << std::setw(24) << t_current * ModuleBase::Hartree_to_K;

if (cal_stress)
{
std::cout << std::left << std::setw(20) << press * unit_transform;
std::cout << std::left << std::setw(24) << press * unit_transform;
}

std::cout << std::endl;
std::cout << " ------------------------------------------------------------------------------------------------"
std::cout << " -------------------------------------------------------------------------"
<< std::endl;

// running_log output
ofs.unsetf(std::ios::fixed);
ofs << std::setprecision(8);
ofs << std::setprecision(12);

if (cal_stress)
{
MD_func::print_stress(ofs, virial, stress);
ofs << std::endl;
}

ofs << " ------------------------------------------------------------------------------------------------"
ofs << " -------------------------------------------------------------------------"
<< std::endl;
ofs << " " << std::left << std::setw(20) << "Energy (Ry)" << std::left << std::setw(20) << "Potential (Ry)"
<< std::left << std::setw(20) << "Kinetic (Ry)" << std::left << std::setw(20) << "Temperature (K)";
ofs << " " << std::left << std::setw(24) << "Energy (Ry)" << std::left << std::setw(24) << "Potential (Ry)"
<< std::left << std::setw(24) << "Kinetic (Ry)" << std::endl;
ofs << " " << std::left << std::setw(24) << 2 * (potential + kinetic) << std::left << std::setw(24) << 2 * potential
<< std::left << std::setw(24) << 2 * kinetic << std::endl;
ofs << " " << std::left << std::setw(24) << "Temperature (K)";

if (cal_stress)
{
ofs << std::left << std::setw(20) << "Pressure (kbar)";
ofs << std::left << std::setw(24) << "Pressure (kbar)";
}

ofs << std::endl;
ofs << " " << std::left << std::setw(20) << 2 * (potential + kinetic) << std::left << std::setw(20) << 2 * potential
<< std::left << std::setw(20) << 2 * kinetic << std::left << std::setw(20)
<< t_current * ModuleBase::Hartree_to_K;
ofs << std::setprecision(6);
ofs << " " << std::left << std::setw(24) << t_current * ModuleBase::Hartree_to_K;

if (cal_stress)
{
ofs << std::left << std::setw(20) << press * unit_transform;
ofs << std::left << std::setw(24) << press * unit_transform;
}

ofs << std::endl;
ofs << " ------------------------------------------------------------------------------------------------"
ofs << " -------------------------------------------------------------------------"
<< std::endl;
ofs << std::endl;
return;
Expand Down
22 changes: 14 additions & 8 deletions source/source_md/test/fire_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -185,32 +185,38 @@ TEST_F(FIREtest, PrintMD)
std::string output_str;

getline(ifs, output_str);
EXPECT_THAT(output_str, testing::HasSubstr(" ELECTRONIC PART OF STRESS: 0.24609992 kbar"));
EXPECT_THAT(output_str, testing::HasSubstr(" ELECTRONIC PART OF STRESS: 0.24609992"));
getline(ifs, output_str);
EXPECT_THAT(output_str, testing::HasSubstr(" IONIC (KINETIC) PART OF STRESS: 0.83853919 kbar"));
EXPECT_THAT(output_str, testing::HasSubstr(" IONIC (KINETIC) PART OF STRESS: 0.83853919"));
getline(ifs, output_str);
EXPECT_THAT(output_str, testing::HasSubstr(" MD PRESSURE (ELECTRONS+IONS) : 1.0846391 kbar"));
EXPECT_THAT(output_str, testing::HasSubstr(" MD PRESSURE (ELECTRONS+IONS) : 1.0846391"));
getline(ifs, output_str);
getline(ifs, output_str);
EXPECT_THAT(output_str,
testing::HasSubstr(
" ------------------------------------------------------------------------------------------------"));
" ----------------------------------------"));
getline(ifs, output_str);
EXPECT_THAT(output_str,
testing::HasSubstr(
" Energy (Ry) Potential (Ry) Kinetic (Ry) Temperature (K) Pressure (kbar) "));
" Energy (Ry) Potential (Ry) Kinetic (Ry) "));
getline(ifs, output_str);
EXPECT_THAT(output_str, testing::HasSubstr("-0.015365236"));
EXPECT_THAT(output_str, testing::HasSubstr("-0.023915637"));
EXPECT_THAT(output_str, testing::HasSubstr("0.0085504016"));
getline(ifs, output_str);
EXPECT_THAT(output_str,
testing::HasSubstr(
" -0.015365236 -0.023915637 0.0085504016 300 1.0846391 "));
" Temperature (K) Pressure (kbar) "));
getline(ifs, output_str);
EXPECT_THAT(output_str, testing::HasSubstr("1.08464"));
getline(ifs, output_str);
EXPECT_THAT(
output_str,
testing::HasSubstr(
" ------------------------------------------------------------------------------------------------"));
" ----------------------------------------"));
getline(ifs, output_str);
getline(ifs, output_str);
EXPECT_THAT(output_str, testing::HasSubstr(" LARGEST FORCE (eV/A) : 0.049479926"));
EXPECT_THAT(output_str, testing::HasSubstr(" LARGEST FORCE (eV/A) : 0.0494799"));

ifs.close();
//remove("running_fire.log");
Expand Down
20 changes: 13 additions & 7 deletions source/source_md/test/langevin_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -170,32 +170,38 @@ TEST_F(Langevin_test, print_md)
std::ifstream ifs("running_langevin.log");
std::string output_str;
getline(ifs, output_str);
EXPECT_THAT(output_str, testing::HasSubstr(" ELECTRONIC PART OF STRESS: 0.24609992 kbar"));
EXPECT_THAT(output_str, testing::HasSubstr(" ELECTRONIC PART OF STRESS: 0.24609992"));
getline(ifs, output_str);
EXPECT_THAT(output_str, testing::HasSubstr(" IONIC (KINETIC) PART OF STRESS: 0.83853919 kbar"));
EXPECT_THAT(output_str, testing::HasSubstr(" IONIC (KINETIC) PART OF STRESS: 0.83853919"));
getline(ifs, output_str);
EXPECT_THAT(output_str, testing::HasSubstr(" MD PRESSURE (ELECTRONS+IONS) : 1.0846391 kbar"));
EXPECT_THAT(output_str, testing::HasSubstr(" MD PRESSURE (ELECTRONS+IONS) : 1.0846391"));
getline(ifs, output_str);
getline(ifs, output_str);
EXPECT_THAT(
output_str,
testing::HasSubstr(
" ------------------------------------------------------------------------------------------------"));
" ----------------------------------------"));
getline(ifs, output_str);
EXPECT_THAT(
output_str,
testing::HasSubstr(
" Energy (Ry) Potential (Ry) Kinetic (Ry) Temperature (K) Pressure (kbar) "));
" Energy (Ry) Potential (Ry) Kinetic (Ry) "));
getline(ifs, output_str);
EXPECT_THAT(output_str, testing::HasSubstr("-0.015365236"));
EXPECT_THAT(output_str, testing::HasSubstr("-0.023915637"));
EXPECT_THAT(output_str, testing::HasSubstr("0.0085504016"));
getline(ifs, output_str);
EXPECT_THAT(
output_str,
testing::HasSubstr(
" -0.015365236 -0.023915637 0.0085504016 300 1.0846391 "));
" Temperature (K) Pressure (kbar) "));
getline(ifs, output_str);
EXPECT_THAT(output_str, testing::HasSubstr("1.08464"));
getline(ifs, output_str);
EXPECT_THAT(
output_str,
testing::HasSubstr(
" ------------------------------------------------------------------------------------------------"));
" ----------------------------------------"));
ifs.close();
remove("running_langevin.log");
}
20 changes: 13 additions & 7 deletions source/source_md/test/msst_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -226,32 +226,38 @@ TEST_F(MSST_test, print_md)
std::ifstream ifs("running_msst.log");
std::string output_str;
getline(ifs, output_str);
EXPECT_THAT(output_str, testing::HasSubstr(" ELECTRONIC PART OF STRESS: 0.24609992 kbar"));
EXPECT_THAT(output_str, testing::HasSubstr(" ELECTRONIC PART OF STRESS: 0.24609992"));
getline(ifs, output_str);
EXPECT_THAT(output_str, testing::HasSubstr(" IONIC (KINETIC) PART OF STRESS: 0.8301538 kbar")); // result different from other MD methods
EXPECT_THAT(output_str, testing::HasSubstr(" IONIC (KINETIC) PART OF STRESS: 0.8301538")); // result different from other MD methods
getline(ifs, output_str);
EXPECT_THAT(output_str, testing::HasSubstr(" MD PRESSURE (ELECTRONS+IONS) : 1.0762537 kbar")); // result different from other MD methods
EXPECT_THAT(output_str, testing::HasSubstr(" MD PRESSURE (ELECTRONS+IONS) : 1.0762537")); // result different from other MD methods
getline(ifs, output_str);
getline(ifs, output_str);
EXPECT_THAT(
output_str,
testing::HasSubstr(
" ------------------------------------------------------------------------------------------------"));
" ----------------------------------------"));
getline(ifs, output_str);
EXPECT_THAT(
output_str,
testing::HasSubstr(
" Energy (Ry) Potential (Ry) Kinetic (Ry) Temperature (K) Pressure (kbar) "));
" Energy (Ry) Potential (Ry) Kinetic (Ry) "));
getline(ifs, output_str);
EXPECT_THAT(output_str, testing::HasSubstr("-0.01545074"));
EXPECT_THAT(output_str, testing::HasSubstr("-0.023915637"));
EXPECT_THAT(output_str, testing::HasSubstr("0.0084648976"));
getline(ifs, output_str);
EXPECT_THAT(
output_str,
testing::HasSubstr(
" -0.01545074 -0.023915637 0.0084648976 297 1.0762537 "));
" Temperature (K) Pressure (kbar) "));
getline(ifs, output_str);
EXPECT_THAT(output_str, testing::HasSubstr("1.07625"));
getline(ifs, output_str);
EXPECT_THAT(
output_str,
testing::HasSubstr(
" ------------------------------------------------------------------------------------------------"));
" ----------------------------------------"));
ifs.close();
// remove("running_msst.log");
}
20 changes: 13 additions & 7 deletions source/source_md/test/nhchain_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -216,32 +216,38 @@ TEST_F(NHC_test, print_md)
std::ifstream ifs("running_nhchain.log");
std::string output_str;
getline(ifs, output_str);
EXPECT_THAT(output_str, testing::HasSubstr(" ELECTRONIC PART OF STRESS: 0.24609992 kbar"));
EXPECT_THAT(output_str, testing::HasSubstr(" ELECTRONIC PART OF STRESS: 0.24609992"));
getline(ifs, output_str);
EXPECT_THAT(output_str, testing::HasSubstr(" IONIC (KINETIC) PART OF STRESS: 0.83853919 kbar"));
EXPECT_THAT(output_str, testing::HasSubstr(" IONIC (KINETIC) PART OF STRESS: 0.83853919"));
getline(ifs, output_str);
EXPECT_THAT(output_str, testing::HasSubstr(" MD PRESSURE (ELECTRONS+IONS) : 1.0846391 kbar"));
EXPECT_THAT(output_str, testing::HasSubstr(" MD PRESSURE (ELECTRONS+IONS) : 1.0846391"));
getline(ifs, output_str);
getline(ifs, output_str);
EXPECT_THAT(
output_str,
testing::HasSubstr(
" ------------------------------------------------------------------------------------------------"));
" ----------------------------------------"));
getline(ifs, output_str);
EXPECT_THAT(
output_str,
testing::HasSubstr(
" Energy (Ry) Potential (Ry) Kinetic (Ry) Temperature (K) Pressure (kbar) "));
" Energy (Ry) Potential (Ry) Kinetic (Ry) "));
getline(ifs, output_str);
EXPECT_THAT(output_str, testing::HasSubstr("-0.015365236"));
EXPECT_THAT(output_str, testing::HasSubstr("-0.023915637"));
EXPECT_THAT(output_str, testing::HasSubstr("0.0085504016"));
getline(ifs, output_str);
EXPECT_THAT(
output_str,
testing::HasSubstr(
" -0.015365236 -0.023915637 0.0085504016 300 1.0846391 "));
" Temperature (K) Pressure (kbar) "));
getline(ifs, output_str);
EXPECT_THAT(output_str, testing::HasSubstr("1.08464"));
getline(ifs, output_str);
EXPECT_THAT(
output_str,
testing::HasSubstr(
" ------------------------------------------------------------------------------------------------"));
" ----------------------------------------"));
ifs.close();
//remove("running_nhchain.log");
}
20 changes: 13 additions & 7 deletions source/source_md/test/verlet_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -333,32 +333,38 @@ TEST_F(Verlet_test, print_md)
std::ifstream ifs("running_verlet.log");
std::string output_str;
getline(ifs, output_str);
EXPECT_THAT(output_str, testing::HasSubstr(" ELECTRONIC PART OF STRESS: 0.24609992 kbar"));
EXPECT_THAT(output_str, testing::HasSubstr(" ELECTRONIC PART OF STRESS: 0.24609992"));
getline(ifs, output_str);
EXPECT_THAT(output_str, testing::HasSubstr(" IONIC (KINETIC) PART OF STRESS: 0.83853919 kbar"));
EXPECT_THAT(output_str, testing::HasSubstr(" IONIC (KINETIC) PART OF STRESS: 0.83853919"));
getline(ifs, output_str);
EXPECT_THAT(output_str, testing::HasSubstr(" MD PRESSURE (ELECTRONS+IONS) : 1.0846391 kbar"));
EXPECT_THAT(output_str, testing::HasSubstr(" MD PRESSURE (ELECTRONS+IONS) : 1.0846391"));
getline(ifs, output_str);
getline(ifs, output_str);
EXPECT_THAT(
output_str,
testing::HasSubstr(
" ------------------------------------------------------------------------------------------------"));
" ----------------------------------------"));
getline(ifs, output_str);
EXPECT_THAT(
output_str,
testing::HasSubstr(
" Energy (Ry) Potential (Ry) Kinetic (Ry) Temperature (K) Pressure (kbar) "));
" Energy (Ry) Potential (Ry) Kinetic (Ry) "));
getline(ifs, output_str);
EXPECT_THAT(output_str, testing::HasSubstr("-0.015365236"));
EXPECT_THAT(output_str, testing::HasSubstr("-0.023915637"));
EXPECT_THAT(output_str, testing::HasSubstr("0.0085504016"));
getline(ifs, output_str);
EXPECT_THAT(
output_str,
testing::HasSubstr(
" -0.015365236 -0.023915637 0.0085504016 300 1.0846391 "));
" Temperature (K) Pressure (kbar) "));
getline(ifs, output_str);
EXPECT_THAT(output_str, testing::HasSubstr("1.08464"));
getline(ifs, output_str);
EXPECT_THAT(
output_str,
testing::HasSubstr(
" ------------------------------------------------------------------------------------------------"));
" ----------------------------------------"));
ifs.close();
// remove("running_verlet.log");
}
Loading