StatMech
Loading...
Searching...
No Matches
IOManager Class Reference
Collaboration diagram for IOManager:
Collaboration graph

Public Member Functions

 IOManager (std::string outRootDir)
 
fs::path outDir ()
 
template<class Vector_t >
bool save_ResultsToFile (Vector_t const &eigVals, size_t hRep, size_t sysSize)
 
template<class Vector_t >
bool save_ResultsToFile (Vector_t const &opEigVals, Vector_t const &EEV, size_t hRep, size_t sysSize, size_t opRep)
 
 IOManager (std::string outRootDir)
 
fs::path outDir ()
 
template<class Vector_t , class Matrix_t , class iVector_t >
bool save_ResultsToFile (Vector_t const &eigVals, Matrix_t const &ETHmeasure, size_t hRep, size_t sysSize, iVector_t const &dimShell, double const maxDiff)
 

Private Member Functions

fs::path generate_filepath (size_t hRep, size_t sysSize)
 
fs::path generate_filepath (size_t hRep, size_t opRepMin, size_t sysSize)
 
fs::path generate_filepath (size_t hRep, size_t sysSize)
 

Private Attributes

std::string m_outRootDir
 

Constructor & Destructor Documentation

◆ IOManager() [1/2]

IOManager::IOManager ( std::string  outRootDir)
inline
55: m_outRootDir{outRootDir} {}
std::string m_outRootDir
Definition EigenExpValue.cpp:50

◆ IOManager() [2/2]

IOManager::IOManager ( std::string  outRootDir)
inline
53: m_outRootDir{outRootDir} {}

Member Function Documentation

◆ generate_filepath() [1/3]

fs::path IOManager::generate_filepath ( size_t  hRep,
size_t  opRepMin,
size_t  sysSize 
)
private
156 {
157 fs::path filename = this->outDir();
158 filename.append(HamiltonianEnsemble::dataname(hRep));
159 filename.append("SystemSize_L" + std::to_string(sysSize));
160 filename.append(ObservableEnsemble::dataname(opRep));
161 filename.append(std::string("EigenExpValue") + std::string(PRECISION) + std::string(".txt"));
162 return filename;
163}
static std::string dataname(size_t rep)
Definition Ensemble.cuh:92
fs::path outDir()
Definition EigenExpValue.cpp:141
static std::string dataname(size_t rep)
Definition Ensemble.cuh:139

◆ generate_filepath() [2/3]

fs::path IOManager::generate_filepath ( size_t  hRep,
size_t  sysSize 
)
private
148 {
149 fs::path filename = this->outDir();
150 filename.append(HamiltonianEnsemble::dataname(hRep));
151 filename.append("SystemSize_L" + std::to_string(sysSize));
152 filename.append(std::string("EigenEnergy") + std::string(PRECISION) + std::string(".txt"));
153 return filename;
154}

◆ generate_filepath() [3/3]

fs::path IOManager::generate_filepath ( size_t  hRep,
size_t  sysSize 
)
private

◆ outDir() [1/2]

fs::path IOManager::outDir ( )
141 {
142 fs::path filename(m_outRootDir);
143 filename.append(QUOTE(DATA_PREFIX));
144 filename.append(QUOTE(ENSEMBLE));
145 return filename;
146}

◆ outDir() [2/2]

fs::path IOManager::outDir ( )

◆ save_ResultsToFile() [1/3]

template<class Vector_t , class Matrix_t , class iVector_t >
bool IOManager::save_ResultsToFile ( Vector_t const &  eigVals,
Matrix_t const &  ETHmeasure,
size_t  hRep,
size_t  sysSize,
iVector_t const &  dimShell,
double const  maxDiff 
)
231 {
232 auto gE = *std::min_element(eigVals.begin(), eigVals.end());
233 auto energyRange = *std::max_element(eigVals.begin(), eigVals.end()) - gE;
234
235 fs::path outFilePath = this->generate_filepath(hRep, sysSize);
236 fs::create_directories(outFilePath.parent_path());
237 if(!fs::exists(outFilePath.parent_path())) {
238 std::cerr << "Error: Failed to create a directory " << outFilePath.parent_path()
239 << std::endl;
240 std::exit(EXIT_FAILURE);
241 }
242 std::ofstream resFile(outFilePath);
243 if(!resFile) {
244 std::cerr << "Error: Can't open a file (" << outFilePath << ")" << std::endl;
245 std::exit(EXIT_FAILURE);
246 }
247
248 std::stringstream headers("");
249 headers << std::setprecision(6) << std::scientific << std::showpos;
250 headers << "#energyRange = " << energyRange << "\n"
251 << "#gE = " << gE << "\n"
252 << "#maxDiff = " << maxDiff << "\n\n";
253 resFile << headers.str();
254 resFile << "# 1.(Normalized energy) 2.(dimShell) 3.4. ...(ETH measures)\n";
255
256 resFile << std::setprecision(6) << std::scientific << std::showpos;
257 for(size_t j = 0; j < eigVals.size(); ++j) {
258 resFile << (eigVals[j] - gE) / energyRange << " " << dimShell[j] << " ";
259 for(size_t m = 1; m <= sysSize; ++m) { resFile << ETHmeasure(j, m) << " "; }
260 resFile << "\n";
261 }
262 resFile.close();
263
264 return true;
265}
fs::path generate_filepath(size_t hRep, size_t sysSize)
Definition EigenExpValue.cpp:148

◆ save_ResultsToFile() [2/3]

template<class Vector_t >
bool IOManager::save_ResultsToFile ( Vector_t const &  eigVals,
size_t  hRep,
size_t  sysSize 
)
166 {
167 auto gE = *std::min_element(eigVals.begin(), eigVals.end());
168 auto energyRange = *std::max_element(eigVals.begin(), eigVals.end()) - gE;
169 fs::path outFilePath = this->generate_filepath(hRep, sysSize);
170 fs::create_directories(outFilePath.parent_path());
171 if(!fs::exists(outFilePath.parent_path())) {
172 std::cerr << "Error: Failed to create a directory " << outFilePath.parent_path()
173 << std::endl;
174 std::exit(EXIT_FAILURE);
175 }
176 std::ofstream resFile(outFilePath);
177 if(!resFile) {
178 std::cerr << "Error: Can't open a file (" << outFilePath << ")" << std::endl;
179 std::exit(EXIT_FAILURE);
180 }
181
182 std::stringstream headers("");
183 headers << std::setprecision(6) << std::scientific << std::showpos;
184 headers << "#energyRange = " << energyRange << "\n"
185 << "#gE = " << gE << "\n\n";
186 resFile << headers.str();
187 resFile << std::setprecision(6) << std::scientific << std::showpos;
188 resFile << "# 1.(Normalized energy) \n";
189 for(size_t j = 0; j < eigVals.size(); ++j) {
190 resFile << (eigVals[j] - gE) / energyRange << "\n";
191 }
192 resFile.close();
193
194 return true;
195}

◆ save_ResultsToFile() [3/3]

template<class Vector_t >
bool IOManager::save_ResultsToFile ( Vector_t const &  opEigVals,
Vector_t const &  EEV,
size_t  hRep,
size_t  sysSize,
size_t  opRep 
)
199 {
200 auto opMin = *std::min_element(opEigVals.begin(), opEigVals.end());
201 auto opRange = *std::max_element(opEigVals.begin(), opEigVals.end()) - opMin;
202
203 fs::path outFilePath = this->generate_filepath(hRep, opRep, sysSize);
204 fs::create_directories(outFilePath.parent_path());
205 if(!fs::exists(outFilePath.parent_path())) {
206 std::cerr << "Error: Failed to create a directory " << outFilePath.parent_path()
207 << std::endl;
208 std::exit(EXIT_FAILURE);
209 }
210 std::ofstream resFile(outFilePath);
211 if(!resFile) {
212 std::cerr << "Error: Can't open a file (" << outFilePath << ")" << std::endl;
213 std::exit(EXIT_FAILURE);
214 }
215
216 std::stringstream headers("");
217 headers << std::setprecision(6) << std::scientific << std::showpos;
218 headers << "#opRange = " << opRange << "\n"
219 << "#opMin = " << opMin << "\n\n";
220 resFile << headers.str();
221 resFile << std::setprecision(6) << std::scientific << std::showpos;
222 resFile << "# 1.(Normalized energy) 2.(Normalized Exp value)\n";
223 for(size_t j = 0; j < EEV.size(); ++j) { resFile << (EEV[j] - opMin) / opRange << "\n"; }
224 resFile.close();
225
226 return true;
227}

Member Data Documentation

◆ m_outRootDir

std::string IOManager::m_outRootDir
private

The documentation for this class was generated from the following files: