[cig-commits] r6174 - in short/3D/PyLith/trunk: . examples/twotri3 modulesrc/feassemble modulesrc/meshio modulesrc/topology modulesrc/utils pylith/feassemble pylith/feassemble/quadrature pylith/problems

brad at geodynamics.org brad at geodynamics.org
Sun Mar 4 20:17:54 PST 2007


Author: brad
Date: 2007-03-04 20:17:53 -0800 (Sun, 04 Mar 2007)
New Revision: 6174

Modified:
   short/3D/PyLith/trunk/TODO
   short/3D/PyLith/trunk/examples/twotri3/pylithapp.cfg
   short/3D/PyLith/trunk/modulesrc/feassemble/feassemble.pyxe.src
   short/3D/PyLith/trunk/modulesrc/meshio/meshio.pyxe.src
   short/3D/PyLith/trunk/modulesrc/topology/topology.pyxe.src
   short/3D/PyLith/trunk/modulesrc/utils/petsc.pyxe.src
   short/3D/PyLith/trunk/pylith/feassemble/Integrator.py
   short/3D/PyLith/trunk/pylith/feassemble/quadrature/Quadrature.py
   short/3D/PyLith/trunk/pylith/problems/Explicit.py
Log:
Added catching C++ exceptions in module. Found major bug in casting C++ objects in module (we lose what type an inherited object really is). Working on verification and fix.

Modified: short/3D/PyLith/trunk/TODO
===================================================================
--- short/3D/PyLith/trunk/TODO	2007-03-05 00:32:23 UTC (rev 6173)
+++ short/3D/PyLith/trunk/TODO	2007-03-05 04:17:53 UTC (rev 6174)
@@ -2,6 +2,12 @@
 MAIN PRIORITIES (Brad)
 ======================================================================
 
+Fix bug related to casting C++ objects in module. This is bad because
+we lose what type the abstract base class is.
+
+Unit tests:
+  petsc module
+
 0. Create element families for materials.
    a. Move quadrature component from Integrator to Material?
       [Integrator will hold material; user configures quadrature w/material]

Modified: short/3D/PyLith/trunk/examples/twotri3/pylithapp.cfg
===================================================================
--- short/3D/PyLith/trunk/examples/twotri3/pylithapp.cfg	2007-03-05 00:32:23 UTC (rev 6173)
+++ short/3D/PyLith/trunk/examples/twotri3/pylithapp.cfg	2007-03-05 04:17:53 UTC (rev 6174)
@@ -9,6 +9,8 @@
 journal.info.meshioascii = 1
 journal.info.homogeneous = 1
 journal.info.explicitelasticity = 1
+journal.info.quadrature2d = 1
+journal.info.fiatsimplex = 1
 
 # ----------------------------------------------------------------------
 # launcher

Modified: short/3D/PyLith/trunk/modulesrc/feassemble/feassemble.pyxe.src
===================================================================
--- short/3D/PyLith/trunk/modulesrc/feassemble/feassemble.pyxe.src	2007-03-05 00:32:23 UTC (rev 6173)
+++ short/3D/PyLith/trunk/modulesrc/feassemble/feassemble.pyxe.src	2007-03-05 04:17:53 UTC (rev 6174)
@@ -22,6 +22,10 @@
 #include "pylith/feassemble/Integrator.hh"
 #include "pylith/feassemble/IntegratorExplicit.hh"
 #include "pylith/feassemble/ExplicitElasticity.hh"
+
+#include <assert.h>
+#include <stdexcept>
+#include <Python.h>
 #}header
 
 # ----------------------------------------------------------------------
@@ -72,10 +76,18 @@
     """
     # create shim for method 'initialize'
     #embed{ void Quadrature_initialize(void* pObj, double* basis, double* basisDeriv, double* quadPts, double* quadWts, int cellDim, int numCorners, int numQuadPts, int spaceDim)
-    ((pylith::feassemble::Quadrature*) pObj)->initialize(basis, basisDeriv,
-                                                         quadPts, quadWts,
-                                                         cellDim, numCorners,
-                                                         numQuadPts, spaceDim);
+    try {
+      ((pylith::feassemble::Quadrature*) pObj)->initialize(basis, basisDeriv,
+                                                           quadPts, quadWts,
+                                                           cellDim, numCorners,
+                                                           numQuadPts, spaceDim);
+    } catch (const std::exception& err) {
+      PyErr_SetString(PyExc_RuntimeError,
+                      const_cast<char*>(err.what()));
+    } catch (...) {
+      PyErr_SetString(PyExc_RuntimeError,
+                      "Caught unknown C++ exception.");
+    } // try/catch      
     #}embed
 
     import spatialdata.utils.simplearray
@@ -147,9 +159,17 @@
     """Wrap pointer to C++ object in PyCObject."""
     # create shim for destructor
     #embed{ void Quadrature_destructor(void* pObj)
-    pylith::feassemble::Quadrature* pQ =
-      (pylith::feassemble::Quadrature*) pObj;
-    delete pQ;
+    try {
+      pylith::feassemble::Quadrature* pQ =
+        (pylith::feassemble::Quadrature*) pObj;
+      delete pQ;
+    } catch (const std::exception& err) {
+      PyErr_SetString(PyExc_RuntimeError,
+                      const_cast<char*>(err.what()));
+    } catch (...) {
+      PyErr_SetString(PyExc_RuntimeError,
+                      "Caught unknown C++ exception.");
+    } // try/catch
     #}embed
     return PyCObject_FromVoidPtr(self.thisptr, Quadrature_destructor)
 
@@ -159,7 +179,15 @@
       """Set minimum allowable Jacobian."""
       # create shim for method 'minJacobian'
       #embed{ void Quadrature_minJacobian_set(void* pObj, double value)
-      ((pylith::feassemble::Quadrature*) pObj)->minJacobian(value);
+      try {
+        ((pylith::feassemble::Quadrature*) pObj)->minJacobian(value);
+      } catch (const std::exception& err) {
+        PyErr_SetString(PyExc_RuntimeError,
+                        const_cast<char*>(err.what()));
+      } catch (...) {
+        PyErr_SetString(PyExc_RuntimeError,
+                        "Caught unknown C++ exception.");
+      } // try/catch
       #}embed
       Quadrature_minJacobian_set(self.thisptr, value)
 
@@ -167,7 +195,17 @@
       """Get minimum allowable Jacobian."""
       # create shim for method 'minJacobian'
       #embed{ double Quadrature_minJacobian_get(void* pObj)
-      return ((pylith::feassemble::Quadrature*) pObj)->minJacobian();
+      double result = 0;
+      try {
+        result = ((pylith::feassemble::Quadrature*) pObj)->minJacobian();
+      } catch (const std::exception& err) {
+        PyErr_SetString(PyExc_RuntimeError,
+                        const_cast<char*>(err.what()));
+      } catch (...) {
+        PyErr_SetString(PyExc_RuntimeError,
+                        "Caught unknown C++ exception.");
+      } // try/catch
+      return result;
       #}embed
       return Quadrature_minJacobian_get(self.thisptr)
 
@@ -179,7 +217,17 @@
     """Constructor."""
     # create shim for constructor
     #embed{ void* Quadrature1D_constructor()
-    return (void*)(new pylith::feassemble::Quadrature1D);
+    void* result = 0;
+    try {
+      result = (void*)(new pylith::feassemble::Quadrature1D);
+    } catch (const std::exception& err) {
+      PyErr_SetString(PyExc_RuntimeError,
+                      const_cast<char*>(err.what()));
+    } catch (...) {
+      PyErr_SetString(PyExc_RuntimeError,
+                      "Caught unknown C++ exception.");
+    } // try/catch
+    return result;
     #}embed
 
     Quadrature.__init__(self)
@@ -195,7 +243,17 @@
     """Constructor."""
     # create shim for constructor
     #embed{ void* Quadrature1Din2D_constructor()
-    return (void*)(new pylith::feassemble::Quadrature1Din2D);
+    void* result = 0;
+    try {
+      result = (void*)(new pylith::feassemble::Quadrature1Din2D);
+    } catch (const std::exception& err) {
+      PyErr_SetString(PyExc_RuntimeError,
+                      const_cast<char*>(err.what()));
+    } catch (...) {
+      PyErr_SetString(PyExc_RuntimeError,
+                      "Caught unknown C++ exception.");
+    } // try/catch
+    return result;
     #}embed
 
     Quadrature.__init__(self)
@@ -211,7 +269,17 @@
     """Constructor."""
     # create shim for constructor
     #embed{ void* Quadrature1Din3D_constructor()
-    return (void*)(new pylith::feassemble::Quadrature1Din3D);
+    void* result = 0;
+    try {
+      result = (void*)(new pylith::feassemble::Quadrature1Din3D);
+    } catch (const std::exception& err) {
+      PyErr_SetString(PyExc_RuntimeError,
+                      const_cast<char*>(err.what()));
+    } catch (...) {
+      PyErr_SetString(PyExc_RuntimeError,
+                      "Caught unknown C++ exception.");
+    } // try/catch
+    return result;
     #}embed
 
     Quadrature.__init__(self)
@@ -227,7 +295,17 @@
     """Constructor."""
     # create shim for constructor
     #embed{ void* Quadrature2D_constructor()
-    return (void*)(new pylith::feassemble::Quadrature2D);
+    void* result = 0;
+    try {
+      result = (void*)(new pylith::feassemble::Quadrature2D);
+    } catch (const std::exception& err) {
+      PyErr_SetString(PyExc_RuntimeError,
+                      const_cast<char*>(err.what()));
+    } catch (...) {
+      PyErr_SetString(PyExc_RuntimeError,
+                      "Caught unknown C++ exception.");
+    } // try/catch
+    return result;
     #}embed
 
     Quadrature.__init__(self)
@@ -243,7 +321,17 @@
     """Constructor."""
     # create shim for constructor
     #embed{ void* Quadrature2Din3D_constructor()
-    return (void*)(new pylith::feassemble::Quadrature2Din3D);
+    void* result = 0;
+    try {
+      result = (void*)(new pylith::feassemble::Quadrature2Din3D);
+    } catch (const std::exception& err) {
+      PyErr_SetString(PyExc_RuntimeError,
+                      const_cast<char*>(err.what()));
+    } catch (...) {
+      PyErr_SetString(PyExc_RuntimeError,
+                      "Caught unknown C++ exception.");
+    } // try/catch
+    return result;
     #}embed
 
     Quadrature.__init__(self)
@@ -259,7 +347,17 @@
     """Constructor."""
     # create shim for constructor
     #embed{ void* Quadrature3D_constructor()
-    return (void*)(new pylith::feassemble::Quadrature3D);
+    void* result = 0;
+    try {
+      result = (void*)(new pylith::feassemble::Quadrature3D);
+    } catch (const std::exception& err) {
+      PyErr_SetString(PyExc_RuntimeError,
+                      const_cast<char*>(err.what()));
+    } catch (...) {
+      PyErr_SetString(PyExc_RuntimeError,
+                      "Caught unknown C++ exception.");
+    } // try/catch
+    return result;
     #}embed
 
     Quadrature.__init__(self)
@@ -291,8 +389,16 @@
     """
     # create shim for method 'createParameters'
     #embed{ void Integrator_createParameters(void* pObj, void* pMeshObj)
-    const ALE::Obj<ALE::Mesh>* pMesh = (ALE::Obj<ALE::Mesh>*) pMeshObj;
-    ((pylith::feassemble::Integrator*) pObj)->createParameters(*pMesh);
+    try {
+      const ALE::Obj<ALE::Mesh>* pMesh = (ALE::Obj<ALE::Mesh>*) pMeshObj;
+      ((pylith::feassemble::Integrator*) pObj)->createParameters(*pMesh);
+    } catch (const std::exception& err) {
+      PyErr_SetString(PyExc_RuntimeError,
+                      const_cast<char*>(err.what()));
+    } catch (...) {
+      PyErr_SetString(PyExc_RuntimeError,
+                      "Caught unknown C++ exception.");
+    } // try/catch
     #}embed
     if not mesh.name == "pylith_topology_Mesh":
       raise TypeError, \
@@ -307,9 +413,17 @@
     """
     # create shim for destructor
     #embed{ void Integrator_destructor(void* pObj)
-    pylith::feassemble::Integrator* pQ =
-      (pylith::feassemble::Integrator*) pObj;
-    delete pQ;
+    try {
+      pylith::feassemble::Integrator* pQ =
+        (pylith::feassemble::Integrator*) pObj;
+      delete pQ;
+    } catch (const std::exception& err) {
+      PyErr_SetString(PyExc_RuntimeError,
+                      const_cast<char*>(err.what()));
+    } catch (...) {
+      PyErr_SetString(PyExc_RuntimeError,
+                      "Caught unknown C++ exception.");
+    } // try/catch
     #}embed
     return PyCObject_FromVoidPtr(self.thisptr, Integrator_destructor)
 
@@ -321,9 +435,22 @@
       """
       # create shim for method 'quadrature'
       #embed{ void Integrator_quadrature_set(void* pObj, void* qObj)
-      pylith::feassemble::Quadrature* quadrature =
-        (pylith::feassemble::Quadrature*) qObj;
-      ((pylith::feassemble::Integrator*) pObj)->quadrature(quadrature);
+      try {
+        assert(0 != pObj);
+        assert(0 != qObj);
+        // :BUG: Cannot cast void* to Quadrature* because we lose what
+        // type of Quadrature qObj is. 
+        assert(0);
+        pylith::feassemble::Quadrature* quadrature =
+          (pylith::feassemble::Quadrature*) qObj;
+        ((pylith::feassemble::Integrator*) pObj)->quadrature(quadrature);
+      } catch (const std::exception& err) {
+        PyErr_SetString(PyExc_RuntimeError,
+                        const_cast<char*>(err.what()));
+      } catch (...) {
+        PyErr_SetString(PyExc_RuntimeError,
+                        "Caught unknown C++ exception.");
+      } // try/catch
       #}embed
       if not q.name == "pylith_feassemble_Quadrature":
         raise TypeError, \
@@ -385,7 +512,17 @@
     """
     # create shim for constructor
     #embed{ void* ExplicitElasticity_constructor()
-    return (void*)(new pylith::feassemble::ExplicitElasticity);
+    void* result = 0;
+    try {
+      result = (void*)(new pylith::feassemble::ExplicitElasticity);
+    } catch (const std::exception& err) {
+      PyErr_SetString(PyExc_RuntimeError,
+                      const_cast<char*>(err.what()));
+    } catch (...) {
+      PyErr_SetString(PyExc_RuntimeError,
+                      "Caught unknown C++ exception.");
+    } // try/catch
+    return result;
     #}embed
 
     IntegratorExplicit.__init__(self)
@@ -404,12 +541,20 @@
     """
     # create shim for method 'setupMatProp'
     #embed{ void ExplicitElasticity_setupMatProp(void* pObj, void* meshObj, void* csObj, void* dbObj)
-    ALE::Obj<ALE::Mesh>* mesh = (ALE::Obj<ALE::Mesh>*) meshObj;
-    spatialdata::geocoords::CoordSys* cs =
-      (spatialdata::geocoords::CoordSys*) csObj;
-    spatialdata::spatialdb::SpatialDB* db =
-      (spatialdata::spatialdb::SpatialDB*) dbObj;
-    ((pylith::feassemble::ExplicitElasticity*) pObj)->setupMatProp(*mesh, cs, db);
+    try {
+      ALE::Obj<ALE::Mesh>* mesh = (ALE::Obj<ALE::Mesh>*) meshObj;
+      spatialdata::geocoords::CoordSys* cs =
+        (spatialdata::geocoords::CoordSys*) csObj;
+      spatialdata::spatialdb::SpatialDB* db =
+        (spatialdata::spatialdb::SpatialDB*) dbObj;
+      ((pylith::feassemble::ExplicitElasticity*) pObj)->setupMatProp(*mesh, cs, db);
+    } catch (const std::exception& err) {
+      PyErr_SetString(PyExc_RuntimeError,
+                      const_cast<char*>(err.what()));
+    } catch (...) {
+      PyErr_SetString(PyExc_RuntimeError,
+                      "Caught unknown C++ exception.");
+    } // try/catch
     #}embed
 
     if not mesh.name == "pylith_topology_Mesh":

Modified: short/3D/PyLith/trunk/modulesrc/meshio/meshio.pyxe.src
===================================================================
--- short/3D/PyLith/trunk/modulesrc/meshio/meshio.pyxe.src	2007-03-05 00:32:23 UTC (rev 6173)
+++ short/3D/PyLith/trunk/modulesrc/meshio/meshio.pyxe.src	2007-03-05 04:17:53 UTC (rev 6174)
@@ -13,6 +13,9 @@
 #header{
 #include "pylith/meshio/MeshIO.hh"
 #include "pylith/meshio/MeshIOAscii.hh"
+
+#include <stdexcept>
+#include <Python.h>
 #}header
 
 # ----------------------------------------------------------------------
@@ -54,8 +57,16 @@
     """
     # create shim for method 'read'
     #embed{ void MeshIO_read(void* pObj, void* pMeshObj)
-    ALE::Obj<ALE::Mesh>* pMesh = (ALE::Obj<ALE::Mesh>*) pMeshObj;
-    ((pylith::meshio::MeshIO*) pObj)->read(pMesh);
+    try {
+      ALE::Obj<ALE::Mesh>* pMesh = (ALE::Obj<ALE::Mesh>*) pMeshObj;
+      ((pylith::meshio::MeshIO*) pObj)->read(pMesh);
+    } catch (const std::exception& err) {
+      PyErr_SetString(PyExc_RuntimeError,
+                      const_cast<char*>(err.what()));
+    } catch (...) {
+      PyErr_SetString(PyExc_RuntimeError,
+                      "Caught unknown C++ exception.");
+    } // try/catch
     #}embed
 
     #cdef topology.Mesh mesh
@@ -69,8 +80,16 @@
     """
     # create shim for method 'write'
     #embed{ void MeshIO_write(void* pObj, void* pMeshObj)
-    ALE::Obj<ALE::Mesh>* pMesh = (ALE::Obj<ALE::Mesh>*) pMeshObj;
-    ((pylith::meshio::MeshIO*) pObj)->write(pMesh);
+    try {
+      ALE::Obj<ALE::Mesh>* pMesh = (ALE::Obj<ALE::Mesh>*) pMeshObj;
+      ((pylith::meshio::MeshIO*) pObj)->write(pMesh);
+    } catch (const std::exception& err) {
+      PyErr_SetString(PyExc_RuntimeError,
+                      const_cast<char*>(err.what()));
+    } catch (...) {
+      PyErr_SetString(PyExc_RuntimeError,
+                      "Caught unknown C++ exception.");
+    } // try/catch
     #}embed
     MeshIO_write(self.thisptr, ptrFromHandle(mesh))
     return
@@ -80,8 +99,16 @@
     """Wrap pointer to C++ object in PyCObject."""
     # create shim for destructor
     #embed{ void MeshIO_destructor(void* pObj)
-    pylith::meshio::MeshIO* pMesh = (pylith::meshio::MeshIO*) pObj;
-    delete pMesh;
+    try {
+      pylith::meshio::MeshIO* pMesh = (pylith::meshio::MeshIO*) pObj;
+      delete pMesh;
+    } catch (const std::exception& err) {
+      PyErr_SetString(PyExc_RuntimeError,
+                      const_cast<char*>(err.what()));
+    } catch (...) {
+      PyErr_SetString(PyExc_RuntimeError,
+                      "Caught unknown C++ exception.");
+    } // try/catch
     #}embed
     return PyCObject_FromVoidPtr(self.thisptr, MeshIO_destructor)
 
@@ -91,7 +118,15 @@
       """Set interpolate."""
       # create shim for method 'interpolate'
       #embed{ void MeshIO_interpolate_set(void* pObj, int flag)
-      ((pylith::meshio::MeshIO*) pObj)->interpolate(flag);
+      try {
+        ((pylith::meshio::MeshIO*) pObj)->interpolate(flag);
+      } catch (const std::exception& err) {
+        PyErr_SetString(PyExc_RuntimeError,
+                        const_cast<char*>(err.what()));
+      } catch (...) {
+        PyErr_SetString(PyExc_RuntimeError,
+                        "Caught unknown C++ exception.");
+      } // try/catch
       #}embed
       MeshIO_interpolate_set(self.thisptr, flag)
 
@@ -99,7 +134,17 @@
       """Get interpolate."""
       # create shim for method 'interpolate'
       #embed{ int MeshIO_interpolate_get(void* pObj)
-      return ((pylith::meshio::MeshIO*) pObj)->interpolate();
+      int result = 0;
+      try {
+        result = ((pylith::meshio::MeshIO*) pObj)->interpolate();
+      } catch (const std::exception& err) {
+        PyErr_SetString(PyExc_RuntimeError,
+                        const_cast<char*>(err.what()));
+      } catch (...) {
+        PyErr_SetString(PyExc_RuntimeError,
+                        "Caught unknown C++ exception.");
+      } // try/catch
+      return result;
       #}embed
       return MeshIO_interpolate_get(self.thisptr)
 
@@ -111,7 +156,17 @@
     """Constructor."""
     # create shim for constructor
     #embed{ void* MeshIOAscii_constructor()
-    return (void*)(new pylith::meshio::MeshIOAscii);
+    void* result = 0;
+    try {
+      result = (void*)(new pylith::meshio::MeshIOAscii);
+    } catch (const std::exception& err) {
+      PyErr_SetString(PyExc_RuntimeError,
+                      const_cast<char*>(err.what()));
+    } catch (...) {
+      PyErr_SetString(PyExc_RuntimeError,
+                      "Caught unknown C++ exception.");
+    } // try/catch
+    return result;
     #}embed
 
     MeshIO.__init__(self)
@@ -125,7 +180,15 @@
       """Set filename."""
       # create shim for method 'filename'
       #embed{ void MeshIOAscii_filename_set(void* pObj, char* name)
-      ((pylith::meshio::MeshIOAscii*) pObj)->filename(name);
+      try {
+        ((pylith::meshio::MeshIOAscii*) pObj)->filename(name);
+      } catch (const std::exception& err) {
+        PyErr_SetString(PyExc_RuntimeError,
+                        const_cast<char*>(err.what()));
+      } catch (...) {
+        PyErr_SetString(PyExc_RuntimeError,
+                        "Caught unknown C++ exception.");
+      } // try/catch
       #}embed
       MeshIOAscii_filename_set(self.thisptr, name)
 
@@ -133,7 +196,17 @@
       """Get filename."""
       # create shim for method 'filename'
       #embed{ char* MeshIOAscii_filename_get(void* pObj)
-      return (char*) ((pylith::meshio::MeshIOAscii*) pObj)->filename();
+      char* result = 0;
+      try {
+        result = (char*) ((pylith::meshio::MeshIOAscii*) pObj)->filename();
+      } catch (const std::exception& err) {
+        PyErr_SetString(PyExc_RuntimeError,
+                        const_cast<char*>(err.what()));
+      } catch (...) {
+        PyErr_SetString(PyExc_RuntimeError,
+                        "Caught unknown C++ exception.");
+      } // try/catch
+      return result;
       #}embed
       return MeshIOAscii_filename_get(self.thisptr)
 

Modified: short/3D/PyLith/trunk/modulesrc/topology/topology.pyxe.src
===================================================================
--- short/3D/PyLith/trunk/modulesrc/topology/topology.pyxe.src	2007-03-05 00:32:23 UTC (rev 6173)
+++ short/3D/PyLith/trunk/modulesrc/topology/topology.pyxe.src	2007-03-05 04:17:53 UTC (rev 6174)
@@ -12,6 +12,9 @@
 
 #header{
 #include <Mesh.hh>
+
+#include <stdexcept>
+#include <Python.h>
 #}header
 
 # ----------------------------------------------------------------------
@@ -41,7 +44,17 @@
     """
     # create shim for constructor
     #embed{ void* MeshPtr_constructor()
-    return (void*)(new ALE::Obj<ALE::Mesh>);
+    void* result = 0;
+    try {
+      result = (void*)(new ALE::Obj<ALE::Mesh>);
+    } catch (const std::exception& err) {
+      PyErr_SetString(PyExc_RuntimeError,
+                      const_cast<char*>(err.what()));
+    } catch (...) {
+      PyErr_SetString(PyExc_RuntimeError,
+                      "Caught unknown C++ exception.");
+    } // try/catch
+    return result;
     #}embed
 
     self.thisptr = MeshPtr_constructor()
@@ -55,8 +68,16 @@
     Wrap pointer to C++ object in PyCObject.
     """
     #embed{ void MeshPtr_destructor(void* pObj)
-    ALE::Obj<ALE::Mesh>* pMesh = (ALE::Obj<ALE::Mesh>*) pObj;
-    delete pMesh;
+    try {
+      ALE::Obj<ALE::Mesh>* pMesh = (ALE::Obj<ALE::Mesh>*) pObj;
+      delete pMesh;
+    } catch (const std::exception& err) {
+      PyErr_SetString(PyExc_RuntimeError,
+                      const_cast<char*>(err.what()));
+    } catch (...) {
+      PyErr_SetString(PyExc_RuntimeError,
+                      "Caught unknown C++ exception.");
+    } // try/catch
     #}embed
     return PyCObject_FromVoidPtr(self.thisptr, MeshPtr_destructor)
 

Modified: short/3D/PyLith/trunk/modulesrc/utils/petsc.pyxe.src
===================================================================
--- short/3D/PyLith/trunk/modulesrc/utils/petsc.pyxe.src	2007-03-05 00:32:23 UTC (rev 6173)
+++ short/3D/PyLith/trunk/modulesrc/utils/petsc.pyxe.src	2007-03-05 04:17:53 UTC (rev 6174)
@@ -39,8 +39,8 @@
   """
   # create shim for 'PetscInitialize'
   #embed{ int Petsc_initialize(int* argc, char*** argv)
-  PetscErrorCode err = PetscInitialize(argc, argv, NULL, NULL);
-  return err;
+  PetscErrorCode err = PetscInitialize(argc, argv, NULL, NULL); CHKERRQ(err);
+  return 0;
   #}embed
   cdef int err
   cdef char** argv
@@ -55,7 +55,8 @@
     strcpy(argv[i], arg);
   argv[argc] = NULL;
   err = Petsc_initialize(&argc, &argv);
-  # :TODO: Check error code for success
+  if err:
+    raise RuntimeError("Error initializing PETSc.")
   
   for i from 0 <= i < argc:
     free(argv[i])
@@ -69,12 +70,13 @@
   """
   # create shim for 'PetscFnitialize'
   #embed{ int Petsc_finalize()
-  PetscErrorCode err = PetscFinalize();
-  return err;
+  PetscErrorCode err = PetscFinalize(); CHKERRQ(err);
+  return 0;
   #}embed
   cdef int err
   err = Petsc_finalize()
-  # :TODO: Check error code for success
+  if err:
+    raise RuntimError("Error finalizing PETSc.")
 
   return
 

Modified: short/3D/PyLith/trunk/pylith/feassemble/Integrator.py
===================================================================
--- short/3D/PyLith/trunk/pylith/feassemble/Integrator.py	2007-03-05 00:32:23 UTC (rev 6173)
+++ short/3D/PyLith/trunk/pylith/feassemble/Integrator.py	2007-03-05 04:17:53 UTC (rev 6174)
@@ -44,8 +44,9 @@
     """
     Initialize quadrature.
     """
+    self._info.log("Initialize quadrature")
     quadrature.initialize()
-    self.quadrature = quadrature    
+    self.quadrature = quadrature
     self.cppHandle.quadrature = self.quadrature.cppHandle
     return
   

Modified: short/3D/PyLith/trunk/pylith/feassemble/quadrature/Quadrature.py
===================================================================
--- short/3D/PyLith/trunk/pylith/feassemble/quadrature/Quadrature.py	2007-03-05 00:32:23 UTC (rev 6173)
+++ short/3D/PyLith/trunk/pylith/feassemble/quadrature/Quadrature.py	2007-03-05 04:17:53 UTC (rev 6174)
@@ -73,6 +73,7 @@
     """
     self.cppHandle.minJacobian = self.minJacobian
 
+    self._info.log("Initializing reference cell.")
     c = self.cell
     c.initialize()
 
@@ -81,7 +82,8 @@
                       "dimension of quadrature implementation '%d'." % \
                       (c.cellDim, self.cellDim))
 
-    
+
+    self._info.log("Initializing C++ quadrature.")
     self.cppHandle.initialize(c.basis, c.basisDeriv, c.quadPts, c.quadWts,
                               c.cellDim, c.numCorners, c.numQuadPts,
                               self.spaceDim)

Modified: short/3D/PyLith/trunk/pylith/problems/Explicit.py
===================================================================
--- short/3D/PyLith/trunk/pylith/problems/Explicit.py	2007-03-05 00:32:23 UTC (rev 6173)
+++ short/3D/PyLith/trunk/pylith/problems/Explicit.py	2007-03-05 04:17:53 UTC (rev 6174)
@@ -77,7 +77,7 @@
     self.integrators = []
     for material in materialsBin.materials:
       integrator = ExplicitElasticity()
-      #integrator.initQuadrature(material.quadrature)
+      integrator.initQuadrature(material.quadrature)
       #integrator.initMaterial(mesh, material)
       self.integrators.append(integrator)
     return



More information about the cig-commits mailing list