TBTK
FileWriter.h
Go to the documentation of this file.
1 /* Copyright 2016 Kristofer Björnson and Andreas Theiler
2  *
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  * http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
24 #ifndef COM_DAFER45_TBTK_FILE_WRITER
25 #define COM_DAFER45_TBTK_FILE_WRITER
26 
27 #include "Model.h"
28 #include "AmplitudeSet.h"
29 #include "Geometry.h"
30 #include "EigenValues.h"
31 #include "DOS.h"
32 #include "Density.h"
33 #include "Magnetization.h"
34 #include "LDOS.h"
35 #include "SpinPolarizedLDOS.h"
36 #include "ParameterSet.h"
37 #include <fstream>
38 #include <stdio.h>
39 
40 namespace TBTK{
41 
49 class FileWriter{
50 public:
52  static void writeModel(
53  Model *model,
54  std::string name = "Model",
55  std::string path = "/"
56  );
57 
59  static void writeAmplitudeSet(
60  AmplitudeSet *amplitudeSet,
61  std::string name = "AmplitudeSet",
62  std::string path = "/"
63  );
64 
65  static void writeGeometry(
66  const Geometry *geometry,
67  std::string name = "Geometry",
68  std::string path = "/"
69  );
70 
72 /* static void writeEigenValues(
73  const double *ev,
74  int size,
75  std::string name = "EV",
76  std::string path = "/"
77  );*/
78  static void writeEigenValues(
79  const Property::EigenValues *ev,
80  std::string name = "EigenValues",
81  std::string path = "/"
82  );
83 
85 /* static void writeDOS(
86  const double *dos,
87  double l_lim,
88  double u_lim,
89  int resolution,
90  std::string name = "DOS",
91  std::string path = "/"
92  );*/
93  static void writeDOS(
94  const Property::DOS *dos,
95  std::string name = "DOS",
96  std::string path = "/"
97  );
98 
100 /* static void writeDensity(
101  const double *density,
102  int rank,
103  const int *dims,
104  std::string name = "Density",
105  std::string path = "/"
106  );*/
107  static void writeDensity(
108  const Property::Density *density,
109  std::string name = "Density",
110  std::string path = "/"
111  );
112 
114 /* static void writeMAG(
115  const std::complex<double> *mag,
116  int rank,
117  const int *dims,
118  std::string name = "MAG",
119  std::string path = "/"
120  );*/
121  static void writeMagnetization(
122  const Property::Magnetization *magnetization,
123  std::string name = "Magnetization",
124  std::string path = "/"
125  );
126 
128 /* static void writeLDOS(
129  const double *ldos,
130  int rank,
131  const int *dims,
132  double l_lim,
133  double u_lim,
134  int resolution,
135  std::string name = "LDOS",
136  std::string path = "/"
137  );*/
138  static void writeLDOS(
139  const Property::LDOS *ldos,
140  std::string name = "LDOS",
141  std::string path = "/"
142  );
143 
145 /* static void writeSP_LDOS(
146  const std::complex<double> *sp_ldos,
147  int rank,
148  const int *dims,
149  double l_lim,
150  double u_lim,
151  int resolution,
152  std::string name = "SP_LDOS",
153  std::string path = "/"
154  );*/
155  static void writeSpinPolarizedLDOS(
156  const Property::SpinPolarizedLDOS *spinPolarizedLDOS,
157  std::string name = "SpinPolarizedLDOS",
158  std::string path = "/"
159  );
160 
162  static void write(
163  const double *data,
164  int rank,
165  const int *dims,
166  std::string name,
167  std::string path = "/"
168  );
169 
171  static void writeAttributes(
172  const int *attributes,
173  const std::string *attribute_names,
174  int num,
175  std::string name,
176  std::string path = "/"
177  );
178 
180  static void writeAttributes(
181  const double *attributes,
182  const std::string *attribute_names,
183  int num,
184  std::string name,
185  std::string path = "/"
186  );
187 
189  static void writeParameterSet(
190  const Util::ParameterSet *parameterSet,
191  std::string name = "ParameterSet",
192  std::string path = "/"
193  );
194 
196  static void setFileName(std::string filename);
197 
200  static void clear();
201 
203  static bool exists();
204 private:
206  static bool isInitialized;
207 
209  static void init();
210 
212  static std::string filename;
213 };
214 
215 inline void FileWriter::setFileName(std::string filename){
216  FileWriter::filename = filename;
217  isInitialized = false;
218 }
219 
220 inline void FileWriter::clear(){
221  remove(filename.c_str());
222  isInitialized = false;
223 }
224 
225 }; //End of namespace TBTK
226 
227 #endif
228 
static void writeEigenValues(const Property::EigenValues *ev, std::string name="EigenValues", std::string path="/")
Definition: FileWriter.cpp:289
static void writeModel(Model *model, std::string name="Model", std::string path="/")
Definition: FileWriter.cpp:57
Definition: LDOS.h:33
Definition: EigenValues.h:33
static void writeDensity(const Property::Density *density, std::string name="Density", std::string path="/")
Definition: FileWriter.cpp:496
Definition: Magnetization.h:35
static void writeLDOS(const Property::LDOS *ldos, std::string name="LDOS", std::string path="/")
Definition: FileWriter.cpp:731
static void writeParameterSet(const Util::ParameterSet *parameterSet, std::string name="ParameterSet", std::string path="/")
Definition: FileWriter.cpp:1149
Property container for eigen values.
Property container for local density of states (LDOS)
static void writeAmplitudeSet(AmplitudeSet *amplitudeSet, std::string name="AmplitudeSet", std::string path="/")
Definition: FileWriter.cpp:86
Model Hamiltonian.
static void writeDOS(const Property::DOS *dos, std::string name="DOS", std::string path="/")
Definition: FileWriter.cpp:395
static void writeSpinPolarizedLDOS(const Property::SpinPolarizedLDOS *spinPolarizedLDOS, std::string name="SpinPolarizedLDOS", std::string path="/")
Definition: FileWriter.cpp:872
Set of parameters.
Property container for spin-polarized local density of states (spin-polarized LDOS) ...
Property container for density.
static void setFileName(std::string filename)
Definition: FileWriter.h:215
Property container for magnetization.
Definition: FileWriter.h:49
HoppingAmplitude container.
static void writeAttributes(const int *attributes, const std::string *attribute_names, int num, std::string name, std::string path="/")
static bool exists()
Definition: FileWriter.cpp:1141
static void writeMagnetization(const Property::Magnetization *magnetization, std::string name="Magnetization", std::string path="/")
Definition: FileWriter.cpp:606
Definition: AbstractOperator.h:26
static void write(const double *data, int rank, const int *dims, std::string name, std::string path="/")
Definition: FileWriter.cpp:962
Definition: SpinPolarizedLDOS.h:37
Definition: Density.h:33
Property container for density of states (DOS)
Definition: Geometry.h:32
Definition: ParameterSet.h:35
static void clear()
Definition: FileWriter.h:220
Definition: DOS.h:33
Definition: Model.h:40
Contains geometric inforamtion about a model.
Definition: AmplitudeSet.h:45