11#include " init_info.h"
22
3- #include " source_io/module_parameter/parameter .h"
3+ #include " source_io/module_parameter/input_parameter .h"
44#include " para_json.h"
55#include " abacusjson.h"
66
@@ -10,7 +10,7 @@ namespace Json
1010
1111#ifdef __RAPIDJSON
1212
13- void gen_init (UnitCell* ucell)
13+ void gen_init (UnitCell* ucell, const Input_para& inp )
1414{
1515 std::string pgname = ucell->symm .pgname ;
1616 std::string spgname = ucell->symm .spgname ;
@@ -22,7 +22,7 @@ void gen_init(UnitCell* ucell)
2222
2323 int numAtoms = ucell->nat ;
2424 AbacusJson::add_json ({" init" , " natom" }, numAtoms, false );
25- AbacusJson::add_json ({" init" , " nband" }, PARAM . inp .nbands , false );
25+ AbacusJson::add_json ({" init" , " nband" }, inp.nbands , false );
2626
2727 // Json::AbacusJson::add_Json(numAtoms,false,"init", "natom");
2828 // Json::AbacusJson::add_Json(PARAM.inp.nbands,false,"init", "nband");
@@ -44,6 +44,28 @@ void gen_init(UnitCell* ucell)
4444 AbacusJson::add_json ({" init" , " nelectron" }, nelec_total, false );
4545
4646 // Json::AbacusJson::add_Json(nelec_total,false,"init", "nelectron");
47+
48+ // energy cutoff for wavefunctions (Ry)
49+ AbacusJson::add_json ({" init" , " ecutwfc" }, inp.ecutwfc , false );
50+ AbacusJson::add_json ({" init" , " ecutwfc_unit" }, " Ry" , false );
51+
52+ // smearing method and sigma (Ry)
53+ AbacusJson::add_json ({" init" , " smearing_method" }, inp.smearing_method , false );
54+ AbacusJson::add_json ({" init" , " smearing_sigma" }, inp.smearing_sigma , false );
55+ AbacusJson::add_json ({" init" , " smearing_sigma_unit" }, " Ry" , false );
56+
57+ // k-point mesh generation parameters
58+ AbacusJson::add_json ({" init" , " kmesh_type" }, inp.kmesh_type , false );
59+ Json::jsonValue kspacing_array (JarrayType);
60+ kspacing_array.JPushBack (inp.kspacing [0 ]);
61+ kspacing_array.JPushBack (inp.kspacing [1 ]);
62+ kspacing_array.JPushBack (inp.kspacing [2 ]);
63+ AbacusJson::add_json ({" init" , " kspacing" }, kspacing_array, false );
64+ Json::jsonValue koffset_array (JarrayType);
65+ koffset_array.JPushBack (inp.koffset [0 ]);
66+ koffset_array.JPushBack (inp.koffset [1 ]);
67+ koffset_array.JPushBack (inp.koffset [2 ]);
68+ AbacusJson::add_json ({" init" , " koffset" }, koffset_array, false );
4769}
4870
4971void add_nkstot (int nkstot)
@@ -54,7 +76,7 @@ void add_nkstot(int nkstot)
5476 // Json::AbacusJson::add_Json(nkstot_ibz,false,"init", "nkstot_ibz");
5577}
5678
57- void gen_stru (UnitCell* ucell)
79+ void gen_stru (UnitCell* ucell, const Input_para& inp )
5880{
5981 AbacusJson::add_json ({" comment" },
6082 " Unless otherwise specified, the unit of energy is eV and the unit of length is Angstrom" ,
@@ -77,7 +99,7 @@ void gen_stru(UnitCell* ucell)
7799
78100 Json::AbacusJson::add_json ({" init" , " element" , atom_label}, atom_element, false );
79101
80- std::string orbital_str = PARAM . inp .orbital_dir + orbital_fn[i];
102+ std::string orbital_str = inp.orbital_dir + orbital_fn[i];
81103 if (!orbital_str.compare (" " ))
82104 {
83105 Json::jsonValue nullValue;
0 commit comments