ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
read_input.h
Go to the documentation of this file.
1#ifndef READ_INPUT_H
2#define READ_INPUT_H
3
4#include "input_item.h"
6
7#include <string>
8#include <fstream>
9#include <sstream>
10
11
12namespace ModuleIO
13{
15{
16 public:
17 ReadInput(const int& rank);
22 void clear()
23 {
24 for (auto& item: input_lists)
25 {
26 item.second.final_value.str("");
27 item.second.str_values.clear();
28 }
29 readvalue_items.clear();
30 }
31
36 const std::vector<std::pair<std::string, Input_Item>>& get_input_lists() const
37 {
38 return input_lists;
39 }
46 void read_parameters(Parameter& param, const std::string& filename_in);
47
53 void create_directory(const Parameter& param);
54
61 void write_parameters(const Parameter& param, const std::string& filename_out);
62 static bool check_mode;
63 bool check_ntype_flag = true;
64
65 private:
72 void read_txt_input(Parameter& param, const std::string& filename);
79 void write_txt_input(const Parameter& param, const std::string& filename);
86 int current_md_step(const std::string& file_dir);
91 void check_ntype(const std::string& fn, int& param_ntype);
97 void add_item(const Input_Item& item);
101 void set_global_dir(const Input_para& inp, System_para& sys);
102 // set System_para according to input parameters
103 void set_globalv(const Input_para& inp, System_para& sys);
104 // system items
105 void item_system();
106 // items for electronic structure
107 void item_elec_stru();
108 // items for lcao
109 void item_lcao();
110 // items for relax
111 void item_relax();
112 // items for md
113 void item_md();
114 // items for ofdft
115 void item_ofdft();
116 // items for sdft
117 void item_sdft();
118 // items for deepks
119 void item_deepks();
120 // items for real time tddft
121 void item_rt_tddft();
122 // items for linear response tddft
123 void item_tdofdft();
124 // items for td-ofdft
125 void item_lr_tddft();
126 // items for output
127 void item_output();
128 // items for postprocess
129 void item_postprocess();
130 // items for some models
131 void item_model();
132 // items for exx
133 void item_exx();
134 // items for dft+u
135 void item_dftu();
136 // items for other
137 void item_others();
138
139 private:
140 int rank = 0;
141
142 // All input items
143 // std::map<std::string, Input_Item> input_lists;
144 // use vector instead of map to keep the order of input items
145 std::vector<std::pair<std::string, Input_Item>> input_lists;
146
147 // read value if INPUT file has this item
148 // This function will be done only when INPUT file has them.
149 std::vector<Input_Item*> readvalue_items;
150 //-----------------------------------------------------------------
151
152 // bcast all values function
153 // if no MPI, this function will resize the vector
154 // This function must be done, no matter INPUT file has them or not.
155 std::vector<std::function<void(Parameter&)>> bcastfuncs;
156};
157
158// convert string vector to a long string
159std::string longstring(const std::vector<std::string>& str_values);
160// convert string to bool
161bool assume_as_boolean(const std::string& val);
162// convert to directory format
163std::string to_dir(const std::string& str);
164// return a warning string if the string is not found in the vector
165std::string nofound_str(std::vector<std::string> init_chgs, const std::string& str);
166
167
168// filter non-ASCII characters from ifstream and output to stringstream
169// return true if successful, false otherwise
170bool filter_nonascii_and_comment(std::ifstream& ifs,
171 std::stringstream& out_ascii_stream);
172
173
174} // namespace ModuleIO
175
176#endif
Definition input_item.h:13
Definition read_input.h:15
static bool check_mode
Definition read_input.h:62
void item_tdofdft()
Definition read_input_item_tddft.cpp:542
void item_others()
Definition read_input_item_other.cpp:12
std::vector< std::function< void(Parameter &)> > bcastfuncs
Definition read_input.h:155
void item_exx()
Definition read_input_item_exx_dftu.cpp:7
void write_parameters(const Parameter &param, const std::string &filename_out)
write out parameters to output file
Definition read_input.cpp:293
int current_md_step(const std::string &file_dir)
determine the md step in restart case
Definition read_input.cpp:565
void add_item(const Input_Item &item)
add item to input list
Definition read_input.cpp:583
const std::vector< std::pair< std::string, Input_Item > > & get_input_lists() const
Get all registered input items (for help system)
Definition read_input.h:36
void item_model()
Definition read_input_item_model.cpp:7
void clear()
clear all input items
Definition read_input.h:22
void item_system()
Definition read_input_item_system.cpp:48
void write_txt_input(const Parameter &param, const std::string &filename)
write INPUT file of txt format
Definition read_input.cpp:418
void read_parameters(Parameter &param, const std::string &filename_in)
read in parameters from input file
Definition read_input.cpp:184
void item_sdft()
Definition read_input_item_sdft.cpp:8
int rank
rank of MPI
Definition read_input.h:140
void read_txt_input(Parameter &param, const std::string &filename)
read INPUT file of txt format
Definition read_input.cpp:301
void item_elec_stru()
Definition read_input_item_elec_stru.cpp:8
void set_globalv(const Input_para &inp, System_para &sys)
Definition read_set_globalv.cpp:10
void check_ntype(const std::string &fn, int &param_ntype)
count_nype from STRU file
Definition read_input.cpp:514
void item_dftu()
Definition read_input_item_exx_dftu.cpp:604
~ReadInput()
Definition read_input.h:18
void item_relax()
Definition read_input_item_relax.cpp:10
std::vector< Input_Item * > readvalue_items
Definition read_input.h:149
void set_global_dir(const Input_para &inp, System_para &sys)
set System_para according to input parameters INPUT and STRU need to refer to each other in ABACUS,...
Definition read_set_globalv.cpp:81
void item_lr_tddft()
Definition read_input_item_tddft.cpp:575
void item_ofdft()
Definition read_input_item_ofdft.cpp:8
void item_deepks()
Definition read_input_item_deepks.cpp:8
void item_postprocess()
Definition read_input_item_postprocess.cpp:7
void create_directory(const Parameter &param)
Create a directory for output files.
Definition read_input.cpp:246
std::vector< std::pair< std::string, Input_Item > > input_lists
Definition read_input.h:145
void item_md()
Definition read_input_item_md.cpp:7
bool check_ntype_flag
check ntype from STRU file
Definition read_input.h:63
void item_output()
Definition read_input_item_output.cpp:7
void item_rt_tddft()
Definition read_input_item_tddft.cpp:8
Definition parameter.h:13
Parameter param
Definition io_system_variable_test.cpp:38
Definition input_help.cpp:10
std::string longstring(const std::vector< std::string > &words)
Definition read_input.cpp:28
bool assume_as_boolean(const std::string &val)
Definition read_input.cpp:33
bool filter_nonascii_and_comment(std::ifstream &ifs, std::stringstream &out_ascii_stream)
Definition read_input.cpp:97
std::string nofound_str(std::vector< std::string > init_chgs, const std::string &str)
Definition read_input.cpp:593
std::string to_dir(const std::string &str)
Definition read_input.cpp:63
Definition input_parameter.h:12
Definition system_parameter.h:7