35 MPI_Allreduce(
bins, tempbuf,
num_bins, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD);
37 int fd = open(filename, O_CREAT|O_TRUNC|O_WRONLY,0644);
39 ERROR(
"unable to write histogram file %s: %s\n", filename, strerror(errno));
43 for(ssize_t remain=
sizeof(
double) *
num_bins; remain > 0;) {
44 remain -=
write(fd, ((
char*)tempbuf) + remain -
sizeof(
double) *
num_bins, remain);
52 FILE* f = fopen(filename,
"w");
54 ERROR(
"unable to write histogram file %s: %s\n", filename, strerror(errno));
61 fprintf(f,
"%lf\n",
bins[
i]);
69 FILE* f = fopen(filename,
"w");
71 ERROR(
"unable to write histogram file %s: %s\n", filename, strerror(errno));
85 int fd = open(filename, O_RDONLY);
88 ERROR(
"unable to open histogram file %s for reading: %s\n", filename, strerror(errno));
93 size_t size =
sizeof(double) *
num_bins;
95 for(ssize_t remain=size; remain > 0;) {
96 ret = read(fd, ((
char*)
bins) + remain - size, remain);
97 if(ret == 0 || !ret) {
110 tempbuf =
new double[num_bins_tot];
112 MPI_Allreduce(
bins, tempbuf, num_bins_tot, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD);
114 int fd = open(filename, O_CREAT|O_TRUNC|O_WRONLY,0644);
115 if(!fd || fd == -1) {
116 ERROR(
"unable to write histogram file %s: %s\n", filename, strerror(errno));
120 size_t size =
sizeof(double) * num_bins_tot;
122 for(ssize_t remain=size; remain > 0;) {
123 remain -=
write(fd, ((
char*)tempbuf) + remain - size, remain);
130 int fd = open(filename, O_RDONLY);
132 if(!fd || fd == -1) {
133 ERROR(
"unable to open histogram file %s for reading: %s\n", filename, strerror(errno));
140 for(ssize_t remain=size; remain > 0;) {
141 ret = read(fd, ((
char*)
bins) + remain - size, remain);
142 if(ret == 0 || !ret) {
144 ERROR(
"Read error: %s.\n", strerror(errno));
157 tempbuf =
new double[num_bins_tot];
159 MPI_Allreduce(
bins, tempbuf, num_bins_tot, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD);
161 int fd = open(filename, O_CREAT|O_TRUNC|O_WRONLY, 0644);
162 if(!fd || fd == -1) {
163 ERROR(
"unable to write histogram file %s: %s\n", filename, strerror(errno));
167 size_t size =
sizeof(float) * num_bins_tot;
169 for(ssize_t remain=size; remain > 0;) {
170 remain -=
write(fd, ((
char*)tempbuf) + remain - size, remain);
177 int fd = open(filename, O_RDONLY);
179 if(!fd || fd == -1) {
180 ERROR(
"unable to open histogram file %s for reading: %s\n", filename, strerror(errno));
187 for(ssize_t remain=size; remain > 0;) {
188 ret = read(fd, ((
char*)
bins) + remain - size, remain);
189 if(ret == 0 || !ret) {
191 ERROR(
"Read error: %s.\n", strerror(errno));
202 FILE* f = fopen(filename,
"w");
204 ERROR(
"unable to write BOV ascii file %s: %s\n", filename, strerror(errno));
208 fprintf(f,
"TIME: %i\n",
index);
209 fprintf(f,
"DATA_FILE: %s\n", datafilename);
211 fprintf(f,
"DATA_FORMAT: DOUBLE\nVARIABLE: f\nDATA_ENDIAN: LITTLE\nCENTERING: zonal\n");
212 fprintf(f,
"BRICK_ORIGIN: %lf %lf 0\n",
low[0],
low[1]);
213 fprintf(f,
"BRICK_SIZE: %lf %lf 1\n",
high[0] -
low[0],
high[1] -
low[1]);
214 fprintf(f,
"DATA_COMPONENTS: 1\n");
221 FILE* f = fopen(filename,
"w");
223 ERROR(
"unable to write BOV ascii file %s: %s\n", filename, strerror(errno));
227 fprintf(f,
"TIME: %i\n",
index);
228 fprintf(f,
"DATA_FILE: %s\n", datafilename);
230 fprintf(f,
"DATA_FORMAT: FLOAT\nVARIABLE: f\nDATA_ENDIAN: LITTLE\nCENTERING: zonal\n");
231 fprintf(f,
"BRICK_ORIGIN: %lf %lf %lf\n",
low[0],
low[1],
low[2]);
233 fprintf(f,
"DATA_COMPONENTS: 1\n");
240 char datafilename[256];
242 bool filenameread=
false;
243 FILE* f = fopen(filename,
"r");
245 ERROR(
"unable to read BOV ascii file %s: %s\n", filename, strerror(errno));
250 if(!fgets(buffer, 256, f)) {
255 if(!strncmp(
"DATA_FILE:", buffer, 10)) {
256 sscanf(buffer,
"DATA_FILE: %s\n", datafilename);
260 if(!strncmp(
"BRICK_ORIGIN:", buffer, 13)) {
262 sscanf(buffer,
"BRICK_ORIGIN: %lf %lf %lf", &l[0], &l[1], &l[2]);
266 if(!strncmp(
"BRICK_SIZE:", buffer, 11)) {
268 sscanf(buffer,
"BRICK_SIZE: %lf %lf %lf\n", &s[0], &s[1], &s[2]);
276 ERROR(
"BOV file %s did not contain a DATA_FILE statement!\n", filename);
294 ERROR(
"Attempted arithmetic on LinearHistogram2D with different bounds.\n");
311 ERROR(
"Attempted arithmetic on LinearHistogram2D with different bounds.\n");
328 ERROR(
"Attempted arithmetic on LogHistogram2D with different bounds.\n");
345 ERROR(
"Attempted arithmetic on LogHistogram2D with different bounds.\n");
virtual void saveAscii(const char *filename) const
void save(const char *filename) const
void load(const char *filename)
void load(const char *filename)
void save(const char *filename) const
void load(const char *filename)
void save(const char *filename) const
virtual void saveAscii(const char *filename) const
LinearHistogram2D(size_t n[2], Vec2d _low, Vec2d _high)
void operator+=(LinearHistogram2D &other)
void operator-=(LinearHistogram2D &other)
void writeBovAscii(const char *filename, int index, const char *datafilename)
void readBov(const char *filename)
void writeBovAscii(const char *filename, int index, const char *datafilename)
void operator-=(LogHistogram2D &other)
void operator+=(LogHistogram2D &other)
LogHistogram2D(size_t n[2], Vec2d _low, Vec2d _high)
#define ERROR(format,...)
Logger & write(Logger &logger)