[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