[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