Bridge++
Ver. 1.3.x
Main Page
Namespaces
Classes
Files
File List
File Members
dataIO_Text_impl.h
Go to the documentation of this file.
1
14
#ifndef DATAIO_TEXT_IMPL_INCLUDED
15
#define DATAIO_TEXT_IMPL_INCLUDED
16
17
template
<
typename
T>
18
void
DataIO_Text::read_file_base
(T *v,
const
size_t
n,
const
string
& filename)
19
{
20
ENTER
;
21
22
if
(
Communicator::is_primary
()) {
23
vout
.
detailed
(
m_vl
,
"reading data to %s.\n"
, filename.c_str());
24
25
std::fstream fs(filename.c_str(), std::ios::in);
26
if
(!fs.is_open()) {
27
vout
.
crucial
(
m_vl
,
"read file failed.\n"
);
28
exit(EXIT_FAILURE);
29
}
30
31
for
(
size_t
i = 0; i < n; ++i) {
32
fetch_data<T>(v[i], fs);
33
}
34
35
fs.close();
36
}
37
38
vout
.
general
(
m_vl
,
"read successful.\n"
);
39
}
40
41
42
template
<
typename
T>
43
void
DataIO_Text::write_file_base
(
const
T *v,
const
size_t
n,
const
string
& filename,
const
bool
append)
44
{
45
ENTER
;
46
47
if
(
Communicator::is_primary
()) {
48
vout
.
detailed
(
m_vl
,
"writing data to %s.\n"
, filename.c_str());
49
50
std::fstream fs(filename.c_str(), std::ios::out | (append ? std::ios::app : std::ios::trunc));
51
if
(!fs.is_open()) {
52
vout
.
crucial
(
m_vl
,
"write file failed.\n"
);
53
exit(EXIT_FAILURE);
54
}
55
56
fs.setf(std::ios_base::scientific, std::ios_base::floatfield);
57
fs.precision(
m_format_precision
);
58
59
for
(
size_t
i = 0; i < n; ++i) {
60
store_data<T>(v[i], fs);
61
}
62
63
fs.close();
64
}
65
66
vout
.
general
(
m_vl
,
"write successful.\n"
);
67
}
68
69
70
template
<>
71
inline
void
72
DataIO_Text::store_data<double> (
const
double
& v, fstream& fs)
73
{
74
fs << v << std::endl;
75
}
76
77
78
template
<>
79
inline
void
80
DataIO_Text::store_data<dcomplex> (
const
dcomplex& v, fstream& fs)
81
{
82
fs << real(v) <<
"\t"
<< imag(v) << std::endl;
83
}
84
85
86
template
<>
87
inline
void
88
DataIO_Text::fetch_data<double> (
double
& v, fstream& fs)
89
{
90
double
val;
91
92
fs >> val;
93
v = val;
94
}
95
96
97
template
<>
98
inline
void
99
DataIO_Text::fetch_data<dcomplex> (dcomplex& v, fstream& fs)
100
{
101
double
valr, vali;
102
103
fs >> valr >> vali;
104
v = cmplx(valr, vali);
105
}
106
#endif
/* DATAIO_TEXT_IMPL_INCLUDED */
DataIO_Text::read_file_base
void read_file_base(T *v, const size_t n, const string &)
Definition:
dataIO_Text_impl.h:18
Bridge::vout
BridgeIO vout
Definition:
bridgeIO.cpp:278
Bridge::BridgeIO::detailed
void detailed(const char *format,...)
Definition:
bridgeIO.cpp:82
Bridge::BridgeIO::general
void general(const char *format,...)
Definition:
bridgeIO.cpp:65
DataIO_Text::m_format_precision
int m_format_precision
Definition:
dataIO_Text.h:83
Bridge::BridgeIO::crucial
void crucial(const char *format,...)
Definition:
bridgeIO.cpp:48
DataIO::m_vl
Bridge::VerboseLevel m_vl
Definition:
dataIO.h:72
DataIO_Text::write_file_base
void write_file_base(const T *v, const size_t n, const string &, const bool append=true)
Definition:
dataIO_Text_impl.h:43
ENTER
#define ENTER
Definition:
dataIO.h:22
Communicator::is_primary
static bool is_primary()
check if the present node is primary in small communicator.
Definition:
communicator.cpp:55
work
sueda3
svn
bridge
branches
release
version1.3
src
IO
dataIO_Text_impl.h
Generated on Mon Nov 2 2015 22:38:55 for Bridge++ by
1.8.10