[cig-commits] r13440 - short/3D/PyLith/trunk/modulesrc/materials

brad at geodynamics.org brad at geodynamics.org
Tue Dec 2 12:06:44 PST 2008


Author: brad
Date: 2008-12-02 12:06:44 -0800 (Tue, 02 Dec 2008)
New Revision: 13440

Modified:
   short/3D/PyLith/trunk/modulesrc/materials/materials.pyxe.src
Log:
Nondimensionzlized physical properties.

Modified: short/3D/PyLith/trunk/modulesrc/materials/materials.pyxe.src
===================================================================
--- short/3D/PyLith/trunk/modulesrc/materials/materials.pyxe.src	2008-12-02 20:06:35 UTC (rev 13439)
+++ short/3D/PyLith/trunk/modulesrc/materials/materials.pyxe.src	2008-12-02 20:06:44 UTC (rev 13440)
@@ -71,27 +71,24 @@
     return
 
 
-  def initialize(self, mesh, cs, quadrature, normalizer):
+  def initialize(self, mesh, cs, quadrature):
     """
     Initialize material by getting physical property parameters from
     database.
     """
     # create shim for method 'initialize'
-    #embed{ void Material_initialize(void* objVptr, void* meshVptr, void* csVptr, void* qVptr, void* nVptr)
+    #embed{ void Material_initialize(void* objVptr, void* meshVptr, void* csVptr, void* qVptr)
     try {
       assert(0 != objVptr);
       assert(0 != meshVptr);
       assert(0 != csVptr);
       assert(0 != qVptr);
-      assert(0 != nVptr);
       ALE::Obj<pylith::Mesh>* mesh = (ALE::Obj<pylith::Mesh>*) meshVptr;
       spatialdata::geocoords::CoordSys* cs =
         (spatialdata::geocoords::CoordSys*) csVptr;
       pylith::feassemble::Quadrature* quadrature =
         (pylith::feassemble::Quadrature*) qVptr;
-      spatialdata::units::Nondimensional* normalizer =
-        (spatialdata::units::Nondimensional*) nVptr;
-      ((pylith::materials::Material*) objVptr)->initialize(*mesh, cs, quadrature, *normalizer);
+      ((pylith::materials::Material*) objVptr)->initialize(*mesh, cs, quadrature);
       } catch (const std::exception& err) {
       PyErr_SetString(PyExc_RuntimeError,
                       const_cast<char*>(err.what()));
@@ -116,12 +113,8 @@
       raise TypeError, \
             "Argument must be extension module type " \
             "'pylith::feassemble::Quadrature'."
-    if not normalizer.name == "spatialdata_units_Nondimensional":
-      raise TypeError, \
-            "Argument must be extension module type " \
-            "'spatialdata::units::Nondimensional'."
     Material_initialize(self.thisptr, ptrFromHandle(mesh), ptrFromHandle(cs),
-                        ptrFromHandle(quadrature), ptrFromHandle(normalizer))
+                        ptrFromHandle(quadrature))
     return
 
 
@@ -295,6 +288,37 @@
       return Material_dimension_get(self.thisptr)
 
 
+  property normalizer:
+    def __set__(self, value):
+      """
+      Set scales for nondimensionalizing physical properties.
+      """
+      # create shim for method 'normalizer'
+      #embed{ void Material_normalizer_set(void* objVptr, void* dimVptr)
+      try {
+        assert(0 != objVptr);
+        assert(0 != dimVptr);
+        spatialdata::units::Nondimensional* dim =
+          (spatialdata::units::Nondimensional*) dimVptr;
+        ((pylith::materials::Material*) objVptr)->normalizer(*dim);
+      } catch (const std::exception& err) {
+        PyErr_SetString(PyExc_RuntimeError,
+                        const_cast<char*>(err.what()));
+      } catch (const ALE::Exception& err) {
+        PyErr_SetString(PyExc_RuntimeError,
+                        const_cast<char*>(err.msg().c_str()));
+      } catch (...) {
+        PyErr_SetString(PyExc_RuntimeError,
+                        "Caught unknown C++ exception.");
+      } // try/catch
+      #}embed
+      if not value.name == "spatialdata_units_Nondimensional":
+        raise TypeError, \
+              "Argument must be extension module type " \
+              "'spatialdata::units::Nondimensional'."
+      Material_normalizer_set(self.thisptr, ptrFromHandle(value))
+
+
 # ----------------------------------------------------------------------
 cdef class ElasticMaterial(Material):
 



More information about the CIG-COMMITS mailing list