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 }
37 void read_parameters(Parameter& param, const std::string& filename_in);
38
44 void create_directory(const Parameter& param);
45
52 void write_parameters(const Parameter& param, const std::string& filename_out);
53 static bool check_mode;
54 bool check_ntype_flag = true;
55
56 private:
63 void read_txt_input(Parameter& param, const std::string& filename);
70 void write_txt_input(const Parameter& param, const std::string& filename);
77 int current_md_step(const std::string& file_dir);
82 void check_ntype(const std::string& fn, int& param_ntype);
88 void add_item(const Input_Item& item);
92 void set_global_dir(const Input_para& inp, System_para& sys);
93 // set System_para according to input parameters
94 void set_globalv(const Input_para& inp, System_para& sys);
95 // system items
96 void item_system();
97 // items for electronic structure
98 void item_elec_stru();
99 // items for lcao
100 void item_lcao();
101 // items for relax
102 void item_relax();
103 // items for md
104 void item_md();
105 // items for ofdft
106 void item_ofdft();
107 // items for sdft
108 void item_sdft();
109 // items for deepks
110 void item_deepks();
111 // items for real time tddft
112 void item_rt_tddft();
113 // items for linear response tddft
114 void item_tdofdft();
115 // items for td-ofdft
116 void item_lr_tddft();
117 // items for output
118 void item_output();
119 // items for postprocess
120 void item_postprocess();
121 // items for some models
122 void item_model();
123 // items for exx
124 void item_exx();
125 // items for dft+u
126 void item_dftu();
127 // items for other
128 void item_others();
129
130 private:
131 int rank = 0;
132
133 // All input items
134 // std::map<std::string, Input_Item> input_lists;
135 // use vector instead of map to keep the order of input items
136 std::vector<std::pair<std::string, Input_Item>> input_lists;
137
138 // read value if INPUT file has this item
139 // This function will be done only when INPUT file has them.
140 std::vector<Input_Item*> readvalue_items;
141 //-----------------------------------------------------------------
142
143 // bcast all values function
144 // if no MPI, this function will resize the vector
145 // This function must be done, no matter INPUT file has them or not.
146 std::vector<std::function<void(Parameter&)>> bcastfuncs;
147};
148
149// convert string vector to a long string
150std::string longstring(const std::vector<std::string>& str_values);
151// convert string to bool
152bool assume_as_boolean(const std::string& val);
153// convert to directory format
154std::string to_dir(const std::string& str);
155// return a warning string if the string is not found in the vector
156std::string nofound_str(std::vector<std::string> init_chgs, const std::string& str);
157
158
159// filter non-ASCII characters from ifstream and output to stringstream
160// return true if successful, false otherwise
161bool filter_nonascii_and_comment(std::ifstream& ifs,
162 std::stringstream& out_ascii_stream);
163
164
165} // namespace ModuleIO
166
167#endif
Definition input_item.h:13
Definition read_input.h:15
static bool check_mode
Definition read_input.h:53
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:146
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:275
int current_md_step(const std::string &file_dir)
determine the md step in restart case
Definition read_input.cpp:548
void add_item(const Input_Item &item)
add item to input list
Definition read_input.cpp:566
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:401
void read_parameters(Parameter &param, const std::string &filename_in)
read in parameters from input file
Definition read_input.cpp:170
void item_sdft()
Definition read_input_item_sdft.cpp:8
int rank
rank of MPI
Definition read_input.h:131
void read_txt_input(Parameter &param, const std::string &filename)
read INPUT file of txt format
Definition read_input.cpp:283
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:497
void item_dftu()
Definition read_input_item_exx_dftu.cpp:397
~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:140
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:234
std::vector< std::pair< std::string, Input_Item > > input_lists
Definition read_input.h:136
void item_md()
Definition read_input_item_md.cpp:7
bool check_ntype_flag
check ntype from STRU file
Definition read_input.h:54
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
bool filter_nonascii_and_comment(std::ifstream &ifs, std::stringstream &out_ascii_stream)
Definition read_input.cpp:91
std::string nofound_str(std::vector< std::string > init_chgs, const std::string &str)
Definition read_input.cpp:576
std::string to_dir(const std::string &str)
Definition read_input.cpp:57
Definition input_parameter.h:13
Definition system_parameter.h:7