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
9namespace ModuleIO
10{
12{
13 public:
14 ReadInput(const int& rank);
19 void clear()
20 {
21 for (auto& item: input_lists)
22 {
23 item.second.final_value.str("");
24 item.second.str_values.clear();
25 }
26 readvalue_items.clear();
27 }
34 void read_parameters(Parameter& param, const std::string& filename_in);
35
41 void create_directory(const Parameter& param);
42
49 void write_parameters(const Parameter& param, const std::string& filename_out);
50 static bool check_mode;
51 bool check_ntype_flag = true;
52
53 private:
60 void read_txt_input(Parameter& param, const std::string& filename);
67 void write_txt_input(const Parameter& param, const std::string& filename);
74 int current_md_step(const std::string& file_dir);
79 void check_ntype(const std::string& fn, int& param_ntype);
85 void add_item(const Input_Item& item);
89 void set_global_dir(const Input_para& inp, System_para& sys);
90 // set System_para according to input parameters
91 void set_globalv(const Input_para& inp, System_para& sys);
92 // system items
93 void item_system();
94 // items for electronic structure
95 void item_elec_stru();
96 // items for lcao
97 void item_lcao();
98 // items for relax
99 void item_relax();
100 // items for md
101 void item_md();
102 // items for ofdft
103 void item_ofdft();
104 // items for sdft
105 void item_sdft();
106 // items for deepks
107 void item_deepks();
108 // items for real time tddft
109 void item_rt_tddft();
110 // items for linear response tddft
111 void item_tdofdft();
112 // items for td-ofdft
113 void item_lr_tddft();
114 // items for output
115 void item_output();
116 // items for postprocess
117 void item_postprocess();
118 // items for some models
119 void item_model();
120 // items for exx
121 void item_exx();
122 // items for dft+u
123 void item_dftu();
124 // items for other
125 void item_others();
126
127 private:
128 int rank = 0;
129
130 // All input items
131 // std::map<std::string, Input_Item> input_lists;
132 // use vector instead of map to keep the order of input items
133 std::vector<std::pair<std::string, Input_Item>> input_lists;
134
135 // read value if INPUT file has this item
136 // This function will be done only when INPUT file has them.
137 std::vector<Input_Item*> readvalue_items;
138 //-----------------------------------------------------------------
139
140 // bcast all values function
141 // if no MPI, this function will resize the vector
142 // This function must be done, no matter INPUT file has them or not.
143 std::vector<std::function<void(Parameter&)>> bcastfuncs;
144};
145
146// convert string vector to a long string
147std::string longstring(const std::vector<std::string>& str_values);
148// convert string to bool
149bool assume_as_boolean(const std::string& val);
150// convert to directory format
151std::string to_dir(const std::string& str);
152// return a warning string if the string is not found in the vector
153std::string nofound_str(std::vector<std::string> init_chgs, const std::string& str);
154
155} // namespace ModuleIO
156
157#endif
Definition input_item.h:13
Definition read_input.h:12
static bool check_mode
Definition read_input.h:50
void item_tdofdft()
Definition read_input_item_tddft.cpp:309
void item_others()
Definition read_input_item_other.cpp:12
std::vector< std::function< void(Parameter &)> > bcastfuncs
Definition read_input.h:143
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:219
int current_md_step(const std::string &file_dir)
determine the md step in restart case
Definition read_input.cpp:488
void add_item(const Input_Item &item)
add item to input list
Definition read_input.cpp:506
void item_model()
Definition read_input_item_model.cpp:7
void clear()
clear all input items
Definition read_input.h:19
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:341
void read_parameters(Parameter &param, const std::string &filename_in)
read in parameters from input file
Definition read_input.cpp:114
void item_sdft()
Definition read_input_item_sdft.cpp:8
int rank
rank of MPI
Definition read_input.h:128
void read_txt_input(Parameter &param, const std::string &filename)
read INPUT file of txt format
Definition read_input.cpp:227
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:437
void item_dftu()
Definition read_input_item_exx_dftu.cpp:397
~ReadInput()
Definition read_input.h:15
void item_relax()
Definition read_input_item_relax.cpp:10
std::vector< Input_Item * > readvalue_items
Definition read_input.h:137
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:325
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:178
std::vector< std::pair< std::string, Input_Item > > input_lists
Definition read_input.h:133
void item_md()
Definition read_input_item_md.cpp:7
bool check_ntype_flag
check ntype from STRU file
Definition read_input.h:51
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 cal_dos.h:9
std::string longstring(const std::vector< std::string > &words)
Definition read_input.cpp:22
bool assume_as_boolean(const std::string &val)
Definition read_input.cpp:27
std::string nofound_str(std::vector< std::string > init_chgs, const std::string &str)
Definition read_input.cpp:516
std::string to_dir(const std::string &str)
Definition read_input.cpp:57
Definition input_parameter.h:13
Definition system_parameter.h:7