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