From 9f55e3a10e8f1994fba576aae7fecd58ee38337e Mon Sep 17 00:00:00 2001 From: Qianrui Liu <76200646+Qianruipku@users.noreply.github.com> Date: Tue, 6 Aug 2024 19:38:14 +0800 Subject: [PATCH] fix: wrong when use absolute path in STRU (#4881) --- source/module_io/read_input_item_system.cpp | 48 +++++++++++++++++++-- source/module_parameter/input_parameter.h | 4 +- 2 files changed, 46 insertions(+), 6 deletions(-) diff --git a/source/module_io/read_input_item_system.cpp b/source/module_io/read_input_item_system.cpp index dc64db337e..f465c26590 100644 --- a/source/module_io/read_input_item_system.cpp +++ b/source/module_io/read_input_item_system.cpp @@ -605,18 +605,58 @@ void ReadInput::item_system() Input_Item item("pseudo_dir"); item.annotation = "the directory containing pseudo files"; item.read_value = [](const Input_Item& item, Parameter& para) { - para.input.pseudo_dir = to_dir(strvalue); + para.input.pseudo_dir = strvalue; }; - sync_string(input.pseudo_dir); + item.reset_value = [](const Input_Item& item, Parameter& para) { + if(para.input.pseudo_dir == "auto") + { + para.input.pseudo_dir = ""; + } + else + { + para.input.pseudo_dir = to_dir(para.input.pseudo_dir); + } + }; + item.get_final_value = [](Input_Item& item, const Parameter& para) { + if (para.input.pseudo_dir == "") + { + item.final_value << "auto"; + } + else + { + item.final_value << para.input.pseudo_dir; + } + }; + add_string_bcast(input.pseudo_dir); this->add_item(item); } { Input_Item item("orbital_dir"); item.annotation = "the directory containing orbital files"; item.read_value = [](const Input_Item& item, Parameter& para) { - para.input.orbital_dir = to_dir(strvalue); + para.input.orbital_dir = strvalue; + }; + item.reset_value = [](const Input_Item& item, Parameter& para) { + if(para.input.orbital_dir == "auto") + { + para.input.orbital_dir = ""; + } + else + { + para.input.orbital_dir = to_dir(para.input.orbital_dir); + } + }; + item.get_final_value = [](Input_Item& item, const Parameter& para) { + if (para.input.orbital_dir == "") + { + item.final_value << "auto"; + } + else + { + item.final_value << para.input.orbital_dir; + } }; - sync_string(input.orbital_dir); + add_string_bcast(input.orbital_dir); this->add_item(item); } { diff --git a/source/module_parameter/input_parameter.h b/source/module_parameter/input_parameter.h index e84ae1719f..2a41fb6da5 100644 --- a/source/module_parameter/input_parameter.h +++ b/source/module_parameter/input_parameter.h @@ -56,8 +56,8 @@ struct Input_para std::string stru_file = "STRU"; ///< file contains atomic positions -- ///< xiaohui modify 2015-02-01 std::string kpoint_file = "KPT"; ///< file contains k-points -- xiaohui modify 2015-02-01 - std::string pseudo_dir = "./"; ///< directory of pseudopotential - std::string orbital_dir = "./"; ///< directory of orbital file + std::string pseudo_dir = "auto"; ///< directory of pseudopotential + std::string orbital_dir = "auto"; ///< directory of orbital file std::string read_file_dir = "auto"; ///< directory of files for reading bool restart_load = false; std::string wannier_card = "none"; ///< input card for wannier functions.