[cig-commits] r11482 - cs/benchmark/cigma/trunk/src
luis at geodynamics.org
luis at geodynamics.org
Wed Mar 19 12:00:21 PDT 2008
Author: luis
Date: 2008-03-19 12:00:20 -0700 (Wed, 19 Mar 2008)
New Revision: 11482
Added:
cs/benchmark/cigma/trunk/src/NullWriter.cpp
cs/benchmark/cigma/trunk/src/NullWriter.h
Modified:
cs/benchmark/cigma/trunk/src/HdfWriter.cpp
cs/benchmark/cigma/trunk/src/HdfWriter.h
cs/benchmark/cigma/trunk/src/TextWriter.cpp
cs/benchmark/cigma/trunk/src/TextWriter.h
cs/benchmark/cigma/trunk/src/VtkWriter.cpp
cs/benchmark/cigma/trunk/src/VtkWriter.h
cs/benchmark/cigma/trunk/src/Writer.cpp
cs/benchmark/cigma/trunk/src/Writer.h
Log:
Miscellaneous improvements to writer classes
Modified: cs/benchmark/cigma/trunk/src/HdfWriter.cpp
===================================================================
--- cs/benchmark/cigma/trunk/src/HdfWriter.cpp 2008-03-19 19:00:17 UTC (rev 11481)
+++ cs/benchmark/cigma/trunk/src/HdfWriter.cpp 2008-03-19 19:00:20 UTC (rev 11482)
@@ -1,7 +1,8 @@
#include <cassert>
#include <cstdlib>
+
#include "HdfWriter.h"
-#include "h5io.h"
+#include "HdfDataset.h"
using namespace std;
using namespace cigma;
@@ -11,61 +12,55 @@
HdfWriter::HdfWriter()
{
- file_id = -1;
}
HdfWriter::~HdfWriter()
{
- close();
}
// ---------------------------------------------------------------------------
-int HdfWriter::open(string filename)
+int HdfWriter::open(const char *filename)
{
- file_id = h5io_file_open(filename.c_str(), "rw+");
+ h5.open(filename, "rw+");
- if (file_id < 0)
+ if (h5.file_id < 0)
{
return -1;
}
+
return 0;
}
-void HdfWriter::close()
+int HdfWriter::close()
{
- herr_t status;
- if (file_id != -1)
- {
- status = H5Fclose(file_id);
- }
- file_id = -1;
+ return h5.close();
}
// ---------------------------------------------------------------------------
-int HdfWriter::write_coordinates(const char *loc, double *coordinates, int nno, int nsd)
+int HdfWriter::write_dataset(const char *loc, double *data, int nno, int ndim)
{
int ierr;
- ierr = h5io_dset_write2(file_id, loc, "coordinates array", H5T_NATIVE_DOUBLE, coordinates, nno, nsd);
+ ierr = HdfDataset::write2(h5.file_id, loc, "dataset array", H5T_NATIVE_DOUBLE, (void **)data, nno, ndim);
return ierr;
}
-int HdfWriter::write_connectivity(const char *loc, int *connectivity, int nel, int ndofs)
+int HdfWriter::write_coordinates(const char *loc, double *coordinates, int nno, int nsd)
{
int ierr;
- ierr = h5io_dset_write2(file_id, loc, "connectivity array", H5T_NATIVE_INT, connectivity, nel, ndofs);
+ ierr = HdfDataset::write2(h5.file_id, loc, "coordinates array", H5T_NATIVE_DOUBLE, coordinates, nno, nsd);
return ierr;
}
-// ---------------------------------------------------------------------------
-
-void cigma::HdfWriter::
-write_field(FE_Field *field)
+int HdfWriter::write_connectivity(const char *loc, int *connectivity, int nel, int ndofs)
{
- assert(field != 0);
+ int ierr;
+ ierr = HdfDataset::write2(h5.file_id, loc, "connectivity array", H5T_NATIVE_INT, connectivity, nel, ndofs);
+ return ierr;
}
+
// ---------------------------------------------------------------------------
Modified: cs/benchmark/cigma/trunk/src/HdfWriter.h
===================================================================
--- cs/benchmark/cigma/trunk/src/HdfWriter.h 2008-03-19 19:00:17 UTC (rev 11481)
+++ cs/benchmark/cigma/trunk/src/HdfWriter.h 2008-03-19 19:00:20 UTC (rev 11482)
@@ -2,7 +2,7 @@
#define __HDF_WRITER_H__
#include "Writer.h"
-#include "hdf5.h"
+#include "HdfFile.h"
namespace cigma
@@ -19,18 +19,18 @@
public:
WriterType getType() { return HDF_WRITER; }
- int open(std::string filename);
- void close();
public:
+ int open(const char *filename);
+ int close();
+
+public:
+ int write_dataset(const char *loc, double *data, int nno, int ndim);
int write_coordinates(const char *loc, double *coordinates, int nno, int nsd);
int write_connectivity(const char *loc, int *connectivity, int nel, int ndofs);
public:
- void write_field(FE_Field *field);
-
-public:
- hid_t file_id;
+ HdfFile h5;
};
Added: cs/benchmark/cigma/trunk/src/NullWriter.cpp
===================================================================
--- cs/benchmark/cigma/trunk/src/NullWriter.cpp (rev 0)
+++ cs/benchmark/cigma/trunk/src/NullWriter.cpp 2008-03-19 19:00:20 UTC (rev 11482)
@@ -0,0 +1,47 @@
+#include "NullWriter.h"
+
+
+using namespace cigma;
+
+// ---------------------------------------------------------------------------
+
+NullWriter::NullWriter()
+{
+}
+
+NullWriter::~NullWriter()
+{
+}
+
+// ---------------------------------------------------------------------------
+
+int NullWriter::open(const char *filename)
+{
+ return -1;
+}
+
+int NullWriter::close()
+{
+ return -1;
+}
+
+// ---------------------------------------------------------------------------
+
+int NullWriter::write_connectivity(const char *loc, int *connectivity, int nel, int ndofs)
+{
+ return -1;
+}
+
+int NullWriter::write_coordinates(const char *loc, double *coordinates, int nno, int nsd)
+{
+ return -1;
+}
+
+int NullWriter::write_dataset(const char *loc, double *data, int nno, int ndim)
+{
+ return -1;
+}
+
+// ---------------------------------------------------------------------------
+
+
Added: cs/benchmark/cigma/trunk/src/NullWriter.h
===================================================================
--- cs/benchmark/cigma/trunk/src/NullWriter.h (rev 0)
+++ cs/benchmark/cigma/trunk/src/NullWriter.h 2008-03-19 19:00:20 UTC (rev 11482)
@@ -0,0 +1,30 @@
+#ifndef __NULL_WRITER_H__
+#define __NULL_WRITER_H__
+
+#include "Writer.h"
+
+namespace cigma
+{
+ class NullWriter;
+}
+
+class cigma::NullWriter : public Writer
+{
+public:
+ NullWriter();
+ ~NullWriter();
+
+public:
+ WriterType getType() { return TEXT_WRITER; }
+
+public:
+ int open(const char *filename);
+ int close();
+
+public:
+ int write_dataset(const char *loc, double *data, int nno, int ndim);
+ int write_connectivity(const char *loc, int *connectivity, int nel, int ndofs);
+ int write_coordinates(const char *loc, double *coordinates, int nno, int nsd);
+};
+
+#endif
Modified: cs/benchmark/cigma/trunk/src/TextWriter.cpp
===================================================================
--- cs/benchmark/cigma/trunk/src/TextWriter.cpp 2008-03-19 19:00:17 UTC (rev 11481)
+++ cs/benchmark/cigma/trunk/src/TextWriter.cpp 2008-03-19 19:00:20 UTC (rev 11482)
@@ -1,27 +1,32 @@
-#include "TextWriter.h"
#include <cassert>
#include <cstdlib>
+#include "TextWriter.h"
+
+
+using namespace cigma;
+
+
// ---------------------------------------------------------------------------
-cigma::TextWriter::TextWriter()
+
+TextWriter::TextWriter()
{
fp = NULL;
}
-cigma::TextWriter::~TextWriter()
+TextWriter::~TextWriter()
{
close();
}
+
// ---------------------------------------------------------------------------
-int cigma::TextWriter::open(std::string filename)
+int TextWriter::open(const char *filename)
{
- fp = NULL;
-
- if (filename != "")
+ if (filename != NULL)
{
- fp = fopen(filename.c_str(), "w");
+ fp = fopen(filename, "w");
}
else
{
@@ -32,29 +37,23 @@
{
return -1;
}
+
return 0;
}
-void cigma::TextWriter::close()
+int TextWriter::close()
{
if (fp != NULL)
{
fclose(fp);
+ fp = NULL;
}
+ return 0;
}
// ---------------------------------------------------------------------------
-void cigma::TextWriter::
-write_field(FE_Field *field)
-{
- assert(field != 0);
-}
-
-
-// ---------------------------------------------------------------------------
-
static bool write_dmat(FILE *fp, double *mat, int rows, int cols)
{
assert(fp != NULL);
@@ -93,21 +92,23 @@
return true;
}
+
// ---------------------------------------------------------------------------
-void cigma::TextWriter::write_connectivity(int *connectivity, int nel, int ndofs)
+int TextWriter::write_connectivity(int *connectivity, int nel, int ndofs)
{
write_imat(fp, connectivity, nel, ndofs);
}
-void cigma::TextWriter::write_coordinates(double *coordinates, int nno, int nsd)
+int TextWriter::write_coordinates(double *coordinates, int nno, int nsd)
{
write_dmat(fp, coordinates, nno, nsd);
}
-void cigma::TextWriter::write_dofs(double *dofs, int num, int ndim)
+int TextWriter::write_dataset(double *data, int num, int ndim)
{
- write_dmat(fp, dofs, num, ndim);
+ write_dmat(fp, data, num, ndim);
}
+
// ---------------------------------------------------------------------------
Modified: cs/benchmark/cigma/trunk/src/TextWriter.h
===================================================================
--- cs/benchmark/cigma/trunk/src/TextWriter.h 2008-03-19 19:00:17 UTC (rev 11481)
+++ cs/benchmark/cigma/trunk/src/TextWriter.h 2008-03-19 19:00:20 UTC (rev 11482)
@@ -20,17 +20,16 @@
~TextWriter();
public:
- WriterType getType() { return TXT_WRITER; }
- int open(std::string filename);
- void close();
+ WriterType getType() { return TEXT_WRITER; }
public:
- void write_field(FE_Field *field);
+ int open(const char *filename);
+ int close();
public:
- void write_connectivity(int *connectivity, int nel, int ndofs);
- void write_coordinates(double *coordinates, int nno, int nsd);
- void write_dofs(double *dofs, int nno, int ndim);
+ int write_connectivity(int *connectivity, int nel, int ndofs);
+ int write_coordinates(double *coordinates, int nno, int nsd);
+ int write_dataset(double *data, int nno, int ndim);
public:
FILE *fp;
Modified: cs/benchmark/cigma/trunk/src/VtkWriter.cpp
===================================================================
--- cs/benchmark/cigma/trunk/src/VtkWriter.cpp 2008-03-19 19:00:17 UTC (rev 11481)
+++ cs/benchmark/cigma/trunk/src/VtkWriter.cpp 2008-03-19 19:00:20 UTC (rev 11482)
@@ -2,23 +2,27 @@
#include <cassert>
#include <cstdlib>
+using namespace cigma;
+
+
// ---------------------------------------------------------------------------
-cigma::VtkWriter::VtkWriter()
+
+VtkWriter::VtkWriter()
{
fp = NULL;
}
-cigma::VtkWriter::~VtkWriter()
+VtkWriter::~VtkWriter()
{
close();
}
+
// ---------------------------------------------------------------------------
-int cigma::VtkWriter::
-open(std::string filename)
+int VtkWriter::open(const char *filename)
{
- fp = fopen(filename.c_str(), "w");
+ fp = fopen(filename, "w");
if (fp == NULL)
{
return -1;
@@ -26,30 +30,21 @@
return 0;
}
-void cigma::VtkWriter::
-close()
+int VtkWriter::close()
{
if (fp != NULL)
{
fclose(fp);
fp = NULL;
}
+ return 0;
}
// ---------------------------------------------------------------------------
-void cigma::VtkWriter::
-write_field(FE_Field *field)
+void VtkWriter::write_header()
{
- assert(field != 0);
-}
-
-// ---------------------------------------------------------------------------
-
-void cigma::VtkWriter::
-write_header()
-{
assert(fp != NULL);
fprintf(fp, "# vtk DataFile Version 3.0\n");
fprintf(fp, "This line is a comment\n");
@@ -58,8 +53,7 @@
}
-void cigma::VtkWriter::
-write_points(double *points, int npts, int ndim)
+void VtkWriter::write_points(double *points, int npts, int ndim)
{
assert(fp != NULL);
assert(ndim > 1);
@@ -77,8 +71,7 @@
}
}
-void cigma::VtkWriter::
-write_cells(int *cells, int nel, int ndofs)
+void VtkWriter::write_cells(int *cells, int nel, int ndofs)
{
assert(fp != NULL);
@@ -95,8 +88,7 @@
}
-void cigma::VtkWriter::
-write_cell_types(int nsd, int nel, int ndofs)
+void VtkWriter::write_cell_types(int nsd, int nel, int ndofs)
{
assert(fp != NULL);
@@ -133,8 +125,7 @@
}
}
-void cigma::VtkWriter::
-write_point_data(const char *name, double *data, int nno, int ndim)
+void VtkWriter::write_point_data(const char *name, double *data, int nno, int ndim)
{
assert(fp != NULL);
@@ -177,8 +168,7 @@
}
}
-void cigma::VtkWriter::
-write_cell_data(const char *name, double *data, int nel, int ndim)
+void VtkWriter::write_cell_data(const char *name, double *data, int nel, int ndim)
{
assert(fp != NULL);
Modified: cs/benchmark/cigma/trunk/src/VtkWriter.h
===================================================================
--- cs/benchmark/cigma/trunk/src/VtkWriter.h 2008-03-19 19:00:17 UTC (rev 11481)
+++ cs/benchmark/cigma/trunk/src/VtkWriter.h 2008-03-19 19:00:20 UTC (rev 11482)
@@ -2,7 +2,6 @@
#define __VTK_WRITER_H__
#include <cstdio>
-
#include "Writer.h"
@@ -20,11 +19,10 @@
public:
WriterType getType() { return VTK_WRITER; }
- int open(std::string filename);
- void close();
public:
- void write_field(FE_Field *field);
+ int open(const char *filename);
+ int close();
public:
void write_header();
@@ -38,4 +36,5 @@
FILE *fp;
};
+
#endif
Modified: cs/benchmark/cigma/trunk/src/Writer.cpp
===================================================================
--- cs/benchmark/cigma/trunk/src/Writer.cpp 2008-03-19 19:00:17 UTC (rev 11481)
+++ cs/benchmark/cigma/trunk/src/Writer.cpp 2008-03-19 19:00:20 UTC (rev 11482)
@@ -1,6 +1,8 @@
#include <cassert>
#include <cstdlib>
+
#include "Writer.h"
+#include "NullWriter.h"
#include "HdfWriter.h"
#include "TextWriter.h"
#include "VtkWriter.h"
@@ -11,26 +13,26 @@
// ---------------------------------------------------------------------------
-void new_writer(cigma::Writer **writer, std::string ext)
+Writer* NewWriter(const char *fileext)
{
+ std::string ext = fileext;
+
if (ext == ".h5")
{
- *writer = new HdfWriter();
- return;
+ return new HdfWriter();
}
if (ext == ".txt")
{
- *writer = new TextWriter();
- return;
+ return new TextWriter();
}
if (ext == ".vtk")
{
- *writer = new VtkWriter();
- return;
+ return new VtkWriter();
}
+ return new NullWriter();
}
// ---------------------------------------------------------------------------
Modified: cs/benchmark/cigma/trunk/src/Writer.h
===================================================================
--- cs/benchmark/cigma/trunk/src/Writer.h 2008-03-19 19:00:17 UTC (rev 11481)
+++ cs/benchmark/cigma/trunk/src/Writer.h 2008-03-19 19:00:20 UTC (rev 11482)
@@ -1,12 +1,7 @@
#ifndef __WRITER_H__
#define __WRITER_H__
-#include <cstdio>
-#include <string>
-#include "FE_Field.h"
-
-
namespace cigma
{
class Writer;
@@ -20,7 +15,7 @@
NULL_WRITER,
HDF_WRITER,
VTK_WRITER,
- TXT_WRITER
+ TEXT_WRITER
} WriterType;
public:
@@ -29,15 +24,12 @@
public:
virtual WriterType getType() = 0;
- virtual int open(std::string filename) = 0;
- virtual void close() = 0;
-
-public:
- virtual void write_field(FE_Field *field) = 0;
+ virtual int open(const char *filename) = 0;
+ virtual int close() = 0;
};
-void new_writer(cigma::Writer **writer, std::string ext);
+cigma::Writer* NewWriter(const char *ext);
#endif
More information about the cig-commits
mailing list