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_lr_tddft();
112 // items for output
113 void item_output();
114 // items for postprocess
115 void item_postprocess();
116 // items for some models
117 void item_model();
118 // items for exx
119 void item_exx();
120 // items for dft+u
121 void item_dftu();
122 // items for other
123 void item_others();
124
125 private:
126 int rank = 0;
127
128 // All input items
129 // std::map<std::string, Input_Item> input_lists;
130 // use vector instead of map to keep the order of input items
131 std::vector<std::pair<std::string, Input_Item>> input_lists;
132
133 // read value if INPUT file has this item
134 // This function will be done only when INPUT file has them.
135 std::vector<Input_Item*> readvalue_items;
136 //-----------------------------------------------------------------
137
138 // bcast all values function
139 // if no MPI, this function will resize the vector
140 // This function must be done, no matter INPUT file has them or not.
141 std::vector<std::function<void(Parameter&)>> bcastfuncs;
142};
143
144// convert string vector to a long string
145std::string longstring(const std::vector<std::string>& str_values);
146// convert string to bool
147bool assume_as_boolean(const std::string& val);
148// convert to directory format
149std::string to_dir(const std::string& str);
150// return a warning string if the string is not found in the vector
151std::string nofound_str(std::vector<std::string> init_chgs, const std::string& str);
152
153} // namespace ModuleIO
154
155#endif
Definition input_item.h:13
Definition read_input.h:12
static bool check_mode
Definition read_input.h:50
void item_others()
Definition read_input_item_other.cpp:12
std::vector< std::function< void(Parameter &)> > bcastfuncs
Definition read_input.h:141
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:218
int current_md_step(const std::string &file_dir)
determine the md step in restart case
Definition read_input.cpp:487
void add_item(const Input_Item &item)
add item to input list
Definition read_input.cpp:505
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:340
void read_parameters(Parameter &param, const std::string &filename_in)
read in parameters from input file
Definition read_input.cpp:113
void item_sdft()
Definition read_input_item_sdft.cpp:8
int rank
rank of MPI
Definition read_input.h:126
void read_txt_input(Parameter &param, const std::string &filename)
read INPUT file of txt format
Definition read_input.cpp:226
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:436
void item_dftu()
Definition read_input_item_exx_dftu.cpp:403
~ReadInput()
Definition read_input.h:15
void item_relax()
Definition read_input_item_relax.cpp:8
std::vector< Input_Item * > readvalue_items
Definition read_input.h:135
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:309
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:177
std::vector< std::pair< std::string, Input_Item > > input_lists
Definition read_input.h:131
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
This class has two functions: restart psi from the previous calculation, and write psi to the disk.
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:515
std::string to_dir(const std::string &str)
Definition read_input.cpp:57
Definition input_parameter.h:12
Definition system_parameter.h:7