[cig-commits] r13195 - in cs/cigma/trunk: . src src/cigma src/cigma/util tests tests/pytests

luis at geodynamics.org luis at geodynamics.org
Wed Oct 29 15:22:02 PDT 2008


Author: luis
Date: 2008-10-29 15:22:02 -0700 (Wed, 29 Oct 2008)
New Revision: 13195

Added:
   cs/cigma/trunk/src/cigma/plot.py
   cs/cigma/trunk/src/cigma/quadrature.py
   cs/cigma/trunk/src/cigma/readers.py
   cs/cigma/trunk/src/cigma/util/
   cs/cigma/trunk/src/cigma/util/__init__.py
   cs/cigma/trunk/src/cigma/writers.py
Modified:
   cs/cigma/trunk/Makefile.am
   cs/cigma/trunk/src/MeshPart.h
   cs/cigma/trunk/src/Residuals.cpp
   cs/cigma/trunk/src/Residuals.h
   cs/cigma/trunk/src/cigma/api.py
   cs/cigma/trunk/src/cli_list_cmd.cpp
   cs/cigma/trunk/src/core_compare_op.cpp
   cs/cigma/trunk/src/core_compare_op.h
   cs/cigma/trunk/src/core_eval_op.cpp
   cs/cigma/trunk/src/core_eval_op.h
   cs/cigma/trunk/src/core_extract_op.cpp
   cs/cigma/trunk/src/core_extract_op.h
   cs/cigma/trunk/src/core_list_op.cpp
   cs/cigma/trunk/src/core_list_op.h
   cs/cigma/trunk/src/py_Cell.cpp
   cs/cigma/trunk/src/py_Cell.h
   cs/cigma/trunk/src/py_MeshPart.cpp
   cs/cigma/trunk/src/py_Misc.cpp
   cs/cigma/trunk/src/py_Quadrature.cpp
   cs/cigma/trunk/src/py_Quadrature.h
   cs/cigma/trunk/src/py_cigma_module.cpp
   cs/cigma/trunk/src/py_cigma_setup.py
   cs/cigma/trunk/tests/pytests/test_mesh_part.py
   cs/cigma/trunk/tests/pytests/test_quadrature.py
   cs/cigma/trunk/tests/test_registry.cpp
Log:
Rest of the bindings for previous commit (forgot to run
the command 'git stash apply' after committing to svn)

Modified: cs/cigma/trunk/Makefile.am
===================================================================
--- cs/cigma/trunk/Makefile.am	2008-10-29 22:22:01 UTC (rev 13194)
+++ cs/cigma/trunk/Makefile.am	2008-10-29 22:22:02 UTC (rev 13195)
@@ -126,6 +126,8 @@
 	src/eb_array.cpp \
 	src/MeshPart.h \
 	src/MeshPart.cpp \
+	src/FE.h \
+	src/FE.cpp \
 	src/DofHandler.h \
 	src/DofHandler.cpp \
 	src/Function.h \
@@ -134,6 +136,10 @@
 	src/FunctionRegistry.cpp \
 	src/fn_zero.h \
 	src/fn_zero.cpp \
+	src/Field.h \
+	src/Field.cpp \
+	src/Residuals.h \
+	src/Residuals.cpp \
 	src/io_file_reader.h \
 	src/io_file_reader.cpp \
 	src/io_null_reader.h \
@@ -148,6 +154,12 @@
 	src/io_text_writer.cpp \
 	src/core_base_op.h \
 	src/core_base_op.cpp \
+	src/core_compare_op.h \
+	src/core_compare_op.cpp \
+	src/core_eval_op.h \
+	src/core_eval_op.cpp \
+	src/core_extract_op.h \
+	src/core_extract_op.cpp \
 	src/core_list_op.h \
 	src/core_list_op.cpp \
 	src/ProgressTimer.h \
@@ -232,18 +244,26 @@
 _cigma_so_SOURCES = \
 	src/numpy_util.h \
 	src/numpy_util.cpp \
+	src/py_Common.cpp \
 	src/py_DataPath.cpp \
 	src/py_Point.cpp \
 	src/py_Points.cpp \
 	src/py_Quadrature.cpp \
 	src/py_Cell.cpp \
 	src/py_Locator.cpp \
-	src/py_MeshPart.cpp \
 	src/py_ElementBlock.cpp \
 	src/py_NodeCoordinates.cpp \
+	src/py_MeshPart.cpp \
+	src/py_FE.cpp \
+	src/py_DofHandler.cpp \
 	src/py_Function.cpp \
+	src/py_Field.cpp \
 	src/py_FileReader.cpp \
 	src/py_FileWriter.cpp \
+	src/py_CompareOp.cpp \
+	src/py_EvalOp.cpp \
+	src/py_ExtractOp.cpp \
+	src/py_ListOp.cpp \
 	src/py_Misc.cpp \
 	src/py_cigma_module.cpp
 
@@ -296,14 +316,26 @@
 	tests/libcigma/MeshPartTest.cpp \
 	tests/libcigma/LocatorTest.h \
 	tests/libcigma/LocatorTest.cpp \
+	tests/libcigma/FE_Test.h \
+	tests/libcigma/FE_Test.cpp \
 	tests/libcigma/DofHandlerTest.h \
 	tests/libcigma/DofHandlerTest.cpp \
 	tests/libcigma/FunctionTest.h \
 	tests/libcigma/FunctionTest.cpp \
+	tests/libcigma/FieldTest.h \
+	tests/libcigma/FieldTest.cpp \
+	tests/libcigma/ResidualsTest.h \
+	tests/libcigma/ResidualsTest.cpp \
 	tests/libcigma/ReaderTest.h \
 	tests/libcigma/ReaderTest.cpp \
 	tests/libcigma/WriterTest.h \
 	tests/libcigma/WriterTest.cpp \
+	tests/libcigma/CompareOpTest.h \
+	tests/libcigma/CompareOpTest.cpp \
+	tests/libcigma/EvalOpTest.h \
+	tests/libcigma/EvalOpTest.cpp \
+	tests/libcigma/ExtractOpTest.h \
+	tests/libcigma/ExtractOpTest.cpp \
 	tests/libcigma/MiscTest.h \
 	tests/libcigma/MiscTest.cpp \
 	tests/test_registry.cpp \

Modified: cs/cigma/trunk/src/MeshPart.h
===================================================================
--- cs/cigma/trunk/src/MeshPart.h	2008-10-29 22:22:01 UTC (rev 13194)
+++ cs/cigma/trunk/src/MeshPart.h	2008-10-29 22:22:02 UTC (rev 13195)
@@ -1,13 +1,14 @@
 #ifndef __CIGMA_MESH_PART_H__
 #define __CIGMA_MESH_PART_H__
 
+#include <boost/noncopyable.hpp>
+#include <boost/shared_ptr.hpp>
+
 #include "Cell.h"
 //#include "CellIterator.h"
 #include "Locator.h"
 #include "NodeCoordinates.h"
 #include "ElementBlock.h"
-#include <boost/noncopyable.hpp>
-#include <boost/shared_ptr.hpp>
 
 namespace cigma
 {

Modified: cs/cigma/trunk/src/Residuals.cpp
===================================================================
--- cs/cigma/trunk/src/Residuals.cpp	2008-10-29 22:22:01 UTC (rev 13194)
+++ cs/cigma/trunk/src/Residuals.cpp	2008-10-29 22:22:02 UTC (rev 13195)
@@ -1,5 +1,6 @@
 #include <iostream>
 #include <cassert>
+#include <cmath>
 #include "Residuals.h"
 
 using namespace std;
@@ -9,15 +10,10 @@
 
 // ----------------------------------------------------------------------------
 
-Residuals::Residuals(shared_ptr<MeshPart> meshPart) : meshPart(meshPart)
+Residuals::Residuals()
 {
     nel = 0;
     epsilon = 0;
-    if (meshPart)
-    {
-        nel = meshPart->n_cells();
-        epsilon = new double[nel];
-    }
 }
 
 Residuals::~Residuals()
@@ -30,8 +26,24 @@
     }
 }
 
-// ----------------------------------------------------------------------------
+void Residuals::setMesh(shared_ptr<MeshPart> meshPart)
+{
+    this->meshPart = meshPart;
 
+    if (meshPart)
+    {
+        nel = meshPart->connect->n_cells();
+
+        if (epsilon != 0)
+        {
+            delete [] epsilon;
+            epsilon = 0;
+        }
+
+        epsilon = new double[nel];
+    }
+}
+
 void Residuals::resetAccumulator()
 {
     assert(nel > 0);

Modified: cs/cigma/trunk/src/Residuals.h
===================================================================
--- cs/cigma/trunk/src/Residuals.h	2008-10-29 22:22:01 UTC (rev 13194)
+++ cs/cigma/trunk/src/Residuals.h	2008-10-29 22:22:02 UTC (rev 13195)
@@ -1,6 +1,7 @@
 #ifndef __CIGMA_RESIDUALS_H__
 #define __CIGMA_RESIDUALS_H__
 
+#include "MeshPart.h"
 #include <boost/noncopyable.hpp>
 #include <boost/shared_ptr.hpp>
 
@@ -12,9 +13,11 @@
 class cigma::Residuals : private boost::noncopyable
 {
 public:
-    Residuals(boost::shared_ptr<MeshPart> meshPart);
+    Residuals();
     ~Residuals();
 
+    void setMesh(boost::shared_ptr<MeshPart> meshPart);
+
     void resetAccumulator();
     void update(int e, double cell_residual, double cell_volume);
 

Modified: cs/cigma/trunk/src/cigma/api.py
===================================================================
--- cs/cigma/trunk/src/cigma/api.py	2008-10-29 22:22:01 UTC (rev 13194)
+++ cs/cigma/trunk/src/cigma/api.py	2008-10-29 22:22:02 UTC (rev 13195)
@@ -1,11 +1,47 @@
 import numpy
+import _cigma as core
+from cigma.quadrature import cell_shapes
 
-def quadrature(shape, order):
-    x = numpy.zeros((10,3))
-    w = numpy.zeros((10,))
-    return (x,w)
+def integration_points(shape, order):
+    """This function returns a core.Quadrature object initialized by FIAT"""
+    from cigma.quadrature import make_rule
+    x,w = make_rule(shape, order)
+    (npts, nsd) = x.shape
+    assert w.shape[0] == npts
+    Q = core.Quadrature(npts,nsd)
+    Q.points = x
+    Q.weights = w
+    return Q
 
-def tabulate(shape, degree, x):
-    tab = numpy.zeros((10,8))
-    return tab
+def compare_op(a, b, **kw):
+    """This function returns a core.Residuals object"""
+    op = core.CompareOp()
+    op.first = a
+    op.second = b
+    op.verbose = kw.get('verbose', False)
+    op.output_frequency = kw.get('output_frequency', 1000)
+    op.run()
+    return op.residuals
 
+def eval_op(fn, x, **kw):
+    """This function returns a core.Points object"""
+    op = core.EvalOp()
+    op.function = fn
+    op.points = x
+    op.verbose = kw.get('verbose', False)
+    op.run()
+    return op.values
+
+def extract_op(mesh, rule):
+    """This function returns a core.Points object"""
+    op = core.ExtractOp()
+    op.mesh = mesh
+    op.rule = rule
+    op.run()
+    return op.points
+
+def list_op(filename):
+    op = core.ListOp()
+    op.filename = filename
+    op.run()
+

Added: cs/cigma/trunk/src/cigma/plot.py
===================================================================
--- cs/cigma/trunk/src/cigma/plot.py	                        (rev 0)
+++ cs/cigma/trunk/src/cigma/plot.py	2008-10-29 22:22:02 UTC (rev 13195)
@@ -0,0 +1,40 @@
+#!/usr/bin/env python
+
+import numpy
+import matplotlib
+
+from pylab import *
+from scipy.optimize import leastsq
+
+def power_fit(X, Y, **kw):
+    
+    assert len(X) == len(Y)
+
+    # parametric function
+    fp = lambda v,x: v[0] * x ** v[1]
+
+    # error function
+    e = lambda v,x,y: (fp(v,x) - y)
+
+    # initial parameter value
+    v0 = (1,1)
+
+    # find optimal parameters
+    (v, success) = leastsq(e, v0, args=(X,Y), maxfev=1000)
+
+    # plot points and best-fit curve
+    print "Best fit: e =", v[0], "* h ^", v[1]
+
+    x = numpy.array(X)
+    y = numpy.array(Y)
+
+    plot_fn = kw.get('plot', loglog)
+    plot_fn(x, y, 'ro')
+    plot_fn(x, fp(v,x))
+    title(r"$\varepsilon\ =\ %f\ h%{%f}$" % (v[0],v[1]))
+
+    show()
+    #savefig('power-fit.png')
+    
+    return
+

Added: cs/cigma/trunk/src/cigma/quadrature.py
===================================================================
--- cs/cigma/trunk/src/cigma/quadrature.py	                        (rev 0)
+++ cs/cigma/trunk/src/cigma/quadrature.py	2008-10-29 22:22:02 UTC (rev 13195)
@@ -0,0 +1,11 @@
+#!/usr/bin/env python
+
+from _cigma import CellType as cell_shapes
+
+
+# move contents of FiatQuadrature here
+import cigma.FiatShapes as shapes
+import cigma.FiatQuadrature as fiat
+
+make_rule = fiat.make_rule
+

Added: cs/cigma/trunk/src/cigma/readers.py
===================================================================
--- cs/cigma/trunk/src/cigma/readers.py	                        (rev 0)
+++ cs/cigma/trunk/src/cigma/readers.py	2008-10-29 22:22:02 UTC (rev 13195)
@@ -0,0 +1,37 @@
+#!/usr/bin/env python
+
+import pyvtk
+import tables
+from Scientific.IO.NetCDF import NetCDFFile
+
+class Reader(object):
+    def __init__(self):
+        self.fp = None
+    def open(self, filename):
+        raise Exception('Not Implemented')
+    def close(self):
+        self.fp.close()
+
+class HDF5_Reader(Reader):
+    def __init__(self):
+        Reader.__init__(self)
+    def open(self, filename):
+        self.fp = tables.openFile(filename, 'r')
+
+def ExoReader(Reader):
+    def __init__(self):
+        Reader.__init__(self)
+    def open(self, filename):
+        self.fp = NetCDFFile(filename, 'r')
+
+def VtkReader(Reader):
+    def __init__(self):
+        Reader.__init__(self)
+    def open(self, filename):
+        pass
+
+def TextReader(Reader):
+    def __init__(self):
+        Reader.__init__(self)
+    def open(self, filename):
+        self.fp = open(filename, 'r')

Added: cs/cigma/trunk/src/cigma/util/__init__.py
===================================================================

Added: cs/cigma/trunk/src/cigma/writers.py
===================================================================
--- cs/cigma/trunk/src/cigma/writers.py	                        (rev 0)
+++ cs/cigma/trunk/src/cigma/writers.py	2008-10-29 22:22:02 UTC (rev 13195)
@@ -0,0 +1,3 @@
+#!/usr/bin/env python
+
+

Modified: cs/cigma/trunk/src/cli_list_cmd.cpp
===================================================================
--- cs/cigma/trunk/src/cli_list_cmd.cpp	2008-10-29 22:22:01 UTC (rev 13194)
+++ cs/cigma/trunk/src/cli_list_cmd.cpp	2008-10-29 22:22:02 UTC (rev 13195)
@@ -96,7 +96,7 @@
 
     cout << "Reading file '" << op.filename << "'\n";
 
-    int status = op.listContents();
+    int status = op.run();
 
     return status;
 }

Modified: cs/cigma/trunk/src/core_compare_op.cpp
===================================================================
--- cs/cigma/trunk/src/core_compare_op.cpp	2008-10-29 22:22:01 UTC (rev 13194)
+++ cs/cigma/trunk/src/core_compare_op.cpp	2008-10-29 22:22:02 UTC (rev 13195)
@@ -1,8 +1,9 @@
+#include <iostream>
 #include "core_compare_op.h"
+
+using namespace std;
 using namespace cigma;
 
-// ----------------------------------------------------------------------------
-
 CompareOp::CompareOp()
 {
 }
@@ -11,8 +12,8 @@
 {
 }
 
-// ----------------------------------------------------------------------------
+void CompareOp::run()
+{
+    cout << "CompareOp::run()" << endl;
+}
 
-
-
-// ----------------------------------------------------------------------------

Modified: cs/cigma/trunk/src/core_compare_op.h
===================================================================
--- cs/cigma/trunk/src/core_compare_op.h	2008-10-29 22:22:01 UTC (rev 13194)
+++ cs/cigma/trunk/src/core_compare_op.h	2008-10-29 22:22:02 UTC (rev 13195)
@@ -2,6 +2,10 @@
 #define __CIGMA_COMPARE_OP_H__
 
 #include "core_base_op.h"
+#include "Function.h"
+#include "MeshPart.h"
+#include "Quadrature.h"
+#include "Residuals.h"
 
 namespace cigma
 {
@@ -14,6 +18,15 @@
     CompareOp();
     ~CompareOp();
 
+    /*
+    void setMesh(..);
+    void setFirstFunction(...);
+    void setSecondFunction(...);
+    void computeResiduals();
+    */
+
+    void run();
+
 public:
     boost::shared_ptr<Function> first;
     boost::shared_ptr<Function> second;

Modified: cs/cigma/trunk/src/core_eval_op.cpp
===================================================================
--- cs/cigma/trunk/src/core_eval_op.cpp	2008-10-29 22:22:01 UTC (rev 13194)
+++ cs/cigma/trunk/src/core_eval_op.cpp	2008-10-29 22:22:02 UTC (rev 13195)
@@ -1,8 +1,9 @@
+#include <iostream>
 #include "core_eval_op.h"
+
+using namespace std;
 using namespace cigma;
 
-// ----------------------------------------------------------------------------
-
 EvalOp::EvalOp()
 {
 }
@@ -11,12 +12,8 @@
 {
 }
 
-// ----------------------------------------------------------------------------
-
-void EvalOp::eval()
+void EvalOp::run()
 {
-    // XXX: if (!field) raise exception
-    // XXX: if (!coords) raise exception
+    cout << "EvalOp::run()" << endl;
 }
 
-// ----------------------------------------------------------------------------

Modified: cs/cigma/trunk/src/core_eval_op.h
===================================================================
--- cs/cigma/trunk/src/core_eval_op.h	2008-10-29 22:22:01 UTC (rev 13194)
+++ cs/cigma/trunk/src/core_eval_op.h	2008-10-29 22:22:02 UTC (rev 13195)
@@ -16,12 +16,12 @@
     EvalOp();
     ~EvalOp();
 
-public:
-    void eval();
+    void run();
 
 public:
     boost::shared_ptr<Function> function;
     boost::shared_ptr<NodeCoordinates> coords;
+    //boost::shared_ptr<cigma::array> points; // XXX: array of points (2d or 3d)
 };
 
 #endif

Modified: cs/cigma/trunk/src/core_extract_op.cpp
===================================================================
--- cs/cigma/trunk/src/core_extract_op.cpp	2008-10-29 22:22:01 UTC (rev 13194)
+++ cs/cigma/trunk/src/core_extract_op.cpp	2008-10-29 22:22:02 UTC (rev 13195)
@@ -1,30 +1,19 @@
+#include <iostream>
 #include "core_extract_op.h"
+
+using namespace std;
 using namespace cigma;
 
-// ----------------------------------------------------------------------------
-
 ExtractOp::ExtractOp()
 {
-    mesh = 0;
-    quadrature = 0;
-    qpoints = 0;
 }
 
 ExtractOp::~ExtractOp()
 {
-    if (coords)     { delete coords; coords = 0; }
-    if (quadrature) { delete quadrature; quadrature = 0; }
-    if (qpoints)    { delete qpoints; qpoints = 0; }
 }
 
-// ----------------------------------------------------------------------------
-
-
-void ExtractOp::extractPoints()
+void ExtractOp::run()
 {
-    assert(mesh);
-    assert(quadrature);
-    assert(qpoints);
+    cout << "ExtractOp::run()" << endl;
 }
 
-// ----------------------------------------------------------------------------

Modified: cs/cigma/trunk/src/core_extract_op.h
===================================================================
--- cs/cigma/trunk/src/core_extract_op.h	2008-10-29 22:22:01 UTC (rev 13194)
+++ cs/cigma/trunk/src/core_extract_op.h	2008-10-29 22:22:02 UTC (rev 13195)
@@ -2,6 +2,11 @@
 #define __CIGMA_EXTRACT_OP_H__
 
 #include "core_base_op.h"
+#include "MeshPart.h"
+#include "Quadrature.h"
+//#include "Points.h"
+//#include "core_array.h"
+#include "nc_array.h"
 
 namespace cigma
 {
@@ -14,13 +19,13 @@
     ExtractOp();
     ~ExtractOp();
 
-public:
-    void extractPoints();
+    void run();
 
 public:
-    boost::shared_ptr<MeshParth> meshPart;
+    boost::shared_ptr<MeshPart> mesh;
     boost::shared_ptr<Quadrature> quadrature;
-    boost::shared_ptr<QPoints> points;
+    boost::shared_ptr<nc_array> points;
+    //boost::shared_ptr<cigma::array> points;
 };
 
 #endif

Modified: cs/cigma/trunk/src/core_list_op.cpp
===================================================================
--- cs/cigma/trunk/src/core_list_op.cpp	2008-10-29 22:22:01 UTC (rev 13194)
+++ cs/cigma/trunk/src/core_list_op.cpp	2008-10-29 22:22:02 UTC (rev 13195)
@@ -127,11 +127,13 @@
 }
 
 
-int ListOp::listContents()
+int ListOp::run()
 {
-    assert(filename != "");
+    cout << "ListOp::run()" << endl;
 
     // XXX: use file magic number instead of extension?
+    // Create static methods in each of the respective readers
+    // and 
 
     fs::path p(filename);
     string ext = fs::extension(p);

Modified: cs/cigma/trunk/src/core_list_op.h
===================================================================
--- cs/cigma/trunk/src/core_list_op.h	2008-10-29 22:22:01 UTC (rev 13194)
+++ cs/cigma/trunk/src/core_list_op.h	2008-10-29 22:22:02 UTC (rev 13195)
@@ -15,7 +15,7 @@
     ListOp();
     ~ListOp();
 
-    int listContents();
+    int run();
 
 public:
     std::string filename;

Modified: cs/cigma/trunk/src/py_Cell.cpp
===================================================================
--- cs/cigma/trunk/src/py_Cell.cpp	2008-10-29 22:22:01 UTC (rev 13194)
+++ cs/cigma/trunk/src/py_Cell.cpp	2008-10-29 22:22:02 UTC (rev 13195)
@@ -99,7 +99,15 @@
 {
     using namespace boost::python;
 
-    // XXX: export Cell::type enum
+    enum_<Cell::type>("CellType")
+        .value("NONE", Cell::NONE)
+        .value("TRI3", Cell::TRI3)
+        .value("QUAD4", Cell::QUAD4)
+        .value("TET4", Cell::TET4)
+        .value("HEX8", Cell::HEX8)
+        //.export_values()
+        ;
+
     class_<py_hex8, boost::noncopyable>("hex8")
         .def("n_nodes", &py_hex8::n_nodes)
         .def("n_celldim", &py_hex8::n_celldim)

Modified: cs/cigma/trunk/src/py_Cell.h
===================================================================
--- cs/cigma/trunk/src/py_Cell.h	2008-10-29 22:22:01 UTC (rev 13194)
+++ cs/cigma/trunk/src/py_Cell.h	2008-10-29 22:22:02 UTC (rev 13195)
@@ -8,38 +8,33 @@
 #include "fe_tri3.h"
 
 #include "numpy_util.h"
-//#include "py_Quadrature.h"
 
 
 struct py_hex8 : cigma::hex8
 {
     py_hex8();
     ~py_hex8();
-    //boost::shared_ptr<pyQuadrature> default_rule();
 
 public:
-    boost::python::numeric::array gv;
+    boost::python::numeric::array gv;   // XXX: how to export cell->globverts?
 };
 
 struct py_tet4 : cigma::tet4
 {
     py_tet4();
     ~py_tet4();
-    //boost::shared_ptr<pyQuadrature> default_rule();
 };
 
 struct py_quad4 : cigma::quad4
 {
     py_quad4();
     ~py_quad4();
-    //boost::shared_ptr<pyQuadrature> default_rule();
 };
 
 struct py_tri3 : cigma::tri3
 {
     py_tri3();
     ~py_tri3();
-    //boost::shared_ptr<pyQuadrature> default_rule();
 };
 
 

Modified: cs/cigma/trunk/src/py_MeshPart.cpp
===================================================================
--- cs/cigma/trunk/src/py_MeshPart.cpp	2008-10-29 22:22:01 UTC (rev 13194)
+++ cs/cigma/trunk/src/py_MeshPart.cpp	2008-10-29 22:22:02 UTC (rev 13195)
@@ -4,6 +4,7 @@
 using namespace boost::python;
 
 // ----------------------------------------------------------------------------
+
 pyMeshPart::pyMeshPart()
 {
 }
@@ -12,7 +13,6 @@
 {
 }
 
-
 // ----------------------------------------------------------------------------
 
 void export_MeshPart()

Modified: cs/cigma/trunk/src/py_Misc.cpp
===================================================================
--- cs/cigma/trunk/src/py_Misc.cpp	2008-10-29 22:22:01 UTC (rev 13194)
+++ cs/cigma/trunk/src/py_Misc.cpp	2008-10-29 22:22:02 UTC (rev 13195)
@@ -1,9 +1,10 @@
 #include "numpy_util.h"
-#include "/usr/include/python2.5/numpy/ndarrayobject.h"
-#include <boost/python.hpp>
+//#include "/usr/include/python2.5/numpy/ndarrayobject.h"
+//#include <boost/python.hpp>
 
 using namespace boost::python;
 
+/*
 numeric::array new_array()
 {
     return numeric::array(
@@ -13,17 +14,18 @@
             make_tuple(7,8,9)
         )
     );
-}
+} // */
 
 
+/*
 numeric::array new_array2()
 {
     return numpy_util::makeArray(new_array());
-}
+} // */
 
 void export_Misc()
 {
-    def("new_array", &new_array);
-    def("new_array2", &new_array2);
+    //def("new_array", &new_array);
+    //def("new_array2", &new_array2);
 }
 

Modified: cs/cigma/trunk/src/py_Quadrature.cpp
===================================================================
--- cs/cigma/trunk/src/py_Quadrature.cpp	2008-10-29 22:22:01 UTC (rev 13194)
+++ cs/cigma/trunk/src/py_Quadrature.cpp	2008-10-29 22:22:02 UTC (rev 13195)
@@ -4,6 +4,7 @@
 
 using namespace cigma;
 using namespace boost::python;
+using boost::shared_ptr;
 
 pyQuadrature::pyQuadrature() : na_points(0), na_weights(0)
 {
@@ -141,6 +142,17 @@
     }
 }
 
+shared_ptr<pyQuadrature> default_rules(Cell::type cell_type)
+{
+    shared_ptr<Quadrature> Q;
+    Q = Quadrature::default_rule(cell_type);
+
+    shared_ptr<pyQuadrature> pyQ(new pyQuadrature(*Q));
+    Q.reset();
+
+    return pyQ;
+}
+
 // ----------------------------------------------------------------------------
 
 void export_Quadrature()
@@ -149,7 +161,7 @@
 
     typedef pyQuadrature pq;
 
-    //def("default_rule", &pq::default_rule);
+    register_ptr_to_python< shared_ptr<pyQuadrature> >();
 
     class_<pyQuadrature, boost::noncopyable>("Quadrature", init<int,int>())
         
@@ -164,8 +176,13 @@
 
         .add_property("points", &pq::getPoints, &pq::setPoints)
         .add_property("weights", &pq::getWeights, &pq::setWeights)
+
+        // XXX: why doesn't the following work? try returning a naked pyQuadrature
+        // pointer and let python take care of the reference counting by setting a
+        // return_value policy
+        //.staticmethod("default_rule", &pq::default_rule);
         ;
-
-    register_ptr_to_python< boost::shared_ptr<pyQuadrature> >();
+    
+    def("default_rules", default_rules);
 }
 

Modified: cs/cigma/trunk/src/py_Quadrature.h
===================================================================
--- cs/cigma/trunk/src/py_Quadrature.h	2008-10-29 22:22:01 UTC (rev 13194)
+++ cs/cigma/trunk/src/py_Quadrature.h	2008-10-29 22:22:02 UTC (rev 13195)
@@ -1,6 +1,7 @@
 #ifndef __PY_QUADRATURE_H__
 #define __PY_QUADRATURE_H__
 
+#include "Cell.h"
 #include "Quadrature.h"
 #include "numpy_util.h"
 
@@ -23,9 +24,13 @@
     void setPoints(boost::python::numeric::array x);
     void setWeights(boost::python::numeric::array w);
 
+
 private:
     boost::python::numeric::array na_points;
     boost::python::numeric::array na_weights;
 };
 
+boost::shared_ptr<pyQuadrature> default_rules(cigma::Cell::type cell_type);
+
+
 #endif

Modified: cs/cigma/trunk/src/py_cigma_module.cpp
===================================================================
--- cs/cigma/trunk/src/py_cigma_module.cpp	2008-10-29 22:22:01 UTC (rev 13194)
+++ cs/cigma/trunk/src/py_cigma_module.cpp	2008-10-29 22:22:02 UTC (rev 13195)
@@ -3,20 +3,29 @@
 #include <boost/python.hpp>
 #include <boost/cstdint.hpp>
 
+extern void export_Common();
 extern void export_Exception();
 extern void export_Hello();
 extern void export_DataPath();
 extern void export_Point();
 extern void export_Points();
+extern void export_Cell();
 extern void export_Quadrature();
-extern void export_Cell();
 extern void export_Locator();
-extern void export_MeshPart();
 extern void export_ElementBlock();
 extern void export_NodeCoordinates();
+extern void export_MeshPart();
+extern void export_FE();
+extern void export_DofHandler();
 extern void export_Function();
+extern void export_Field();
+extern void export_Residuals();
 extern void export_FileReader();
 extern void export_FileWriter();
+extern void export_CompareOp();
+extern void export_EvalOp();
+extern void export_ExtractOp();
+extern void export_ListOp();
 extern void export_Misc();
 
 using namespace boost::python;
@@ -26,20 +35,29 @@
     import_array();
     numeric::array::set_module_and_type("numpy", "ndarray");
 
+    export_Common();
     export_Exception();
     export_Hello();
     export_DataPath();
     export_Point();
     export_Points();
+    export_Cell();
     export_Quadrature();
-    export_Cell();
     export_Locator();
-    export_MeshPart();
     export_ElementBlock();
     export_NodeCoordinates();
+    export_MeshPart();
+    export_FE();
+    export_DofHandler();
     export_Function();
+    export_Field();
+    export_Residuals();
     export_FileReader();
     export_FileWriter();
+    export_CompareOp();
+    export_EvalOp();
+    export_ExtractOp();
+    export_ListOp();
     export_Misc();
 }
 

Modified: cs/cigma/trunk/src/py_cigma_setup.py
===================================================================
--- cs/cigma/trunk/src/py_cigma_setup.py	2008-10-29 22:22:01 UTC (rev 13194)
+++ cs/cigma/trunk/src/py_cigma_setup.py	2008-10-29 22:22:02 UTC (rev 13195)
@@ -17,20 +17,29 @@
 sources = [
     'numpy_util.cpp',
     'py_cigma_module.cpp',
+    'py_Common.cpp',
     'py_Exception.cpp',
     'py_Hello.cpp',
     'py_DataPath.cpp',
     'py_Point.cpp',
     'py_Points.cpp',
+    'py_Cell.cpp',
     'py_Quadrature.cpp',
-    'py_Cell.cpp',
     'py_Locator.cpp',
-    'py_MeshPart.cpp',
     'py_ElementBlock.cpp',
     'py_NodeCoordinates.cpp',
+    'py_MeshPart.cpp',
+    'py_FE.cpp',
+    'py_DofHandler.cpp',
     'py_Function.cpp',
+    'py_Field.cpp',
+    'py_Residuals.cpp',
     'py_FileReader.cpp',
     'py_FileWriter.cpp',
+    'py_CompareOp.cpp',
+    'py_EvalOp.cpp',
+    'py_ExtractOp.cpp',
+    'py_ListOp.cpp',
     'py_Misc.cpp',
 ]
 

Modified: cs/cigma/trunk/tests/pytests/test_mesh_part.py
===================================================================
--- cs/cigma/trunk/tests/pytests/test_mesh_part.py	2008-10-29 22:22:01 UTC (rev 13194)
+++ cs/cigma/trunk/tests/pytests/test_mesh_part.py	2008-10-29 22:22:02 UTC (rev 13195)
@@ -16,7 +16,7 @@
         self.assertEqual(eb.n_cells(), 2)
         self.assertEqual(eb.n_dofs(), 8)
     def test_mesh_part(self):
-        pass
+        mesh = MeshPart()
 
 def create_suite():
     suite = unittest.TestSuite()

Modified: cs/cigma/trunk/tests/pytests/test_quadrature.py
===================================================================
--- cs/cigma/trunk/tests/pytests/test_quadrature.py	2008-10-29 22:22:01 UTC (rev 13194)
+++ cs/cigma/trunk/tests/pytests/test_quadrature.py	2008-10-29 22:22:02 UTC (rev 13195)
@@ -13,8 +13,6 @@
         w = numpy.random.rand(10)
         Q.points = x
         Q.weights = w
-        #Q.set_points(x)
-        #Q.set_weights(w)
         for q in xrange(10):
             self.assertEqual(Q.getWeight(q), w[q])
             for j in xrange(3):

Modified: cs/cigma/trunk/tests/test_registry.cpp
===================================================================
--- cs/cigma/trunk/tests/test_registry.cpp	2008-10-29 22:22:01 UTC (rev 13194)
+++ cs/cigma/trunk/tests/test_registry.cpp	2008-10-29 22:22:02 UTC (rev 13195)
@@ -30,18 +30,30 @@
 #include <libcigma/LocatorTest.h>
 CPPUNIT_TEST_SUITE_REGISTRATION(libcigma::LocatorTest);
 
+#include <libcigma/FE_Test.h>
+CPPUNIT_TEST_SUITE_REGISTRATION(libcigma::FE_Test);
+
 #include <libcigma/DofHandlerTest.h>
 CPPUNIT_TEST_SUITE_REGISTRATION(libcigma::DofHandlerTest);
 
 #include <libcigma/FunctionTest.h>
 CPPUNIT_TEST_SUITE_REGISTRATION(libcigma::FunctionTest);
 
+#include <libcigma/FieldTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION(libcigma::FieldTest);
+
+#include <libcigma/ResidualsTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION(libcigma::ResidualsTest);
+
 #include <libcigma/ReaderTest.h>
 CPPUNIT_TEST_SUITE_REGISTRATION(libcigma::ReaderTest);
 
 #include <libcigma/WriterTest.h>
 CPPUNIT_TEST_SUITE_REGISTRATION(libcigma::WriterTest);
 
+#include <libcigma/CompareOpTest.h>
+CPPUNIT_TEST_SUITE_REGISTRATION(libcigma::CompareOpTest);
+
 #include <libcigma/MiscTest.h>
 CPPUNIT_TEST_SUITE_REGISTRATION(libcigma::MiscTest);
 



More information about the CIG-COMMITS mailing list