[cig-commits] r12055 - in short/3D/PyLith/trunk/modulesrc: bc faults feassemble

willic3 at geodynamics.org willic3 at geodynamics.org
Thu May 29 12:46:23 PDT 2008


Author: willic3
Date: 2008-05-29 12:46:22 -0700 (Thu, 29 May 2008)
New Revision: 12055

Modified:
   short/3D/PyLith/trunk/modulesrc/bc/bc.pyxe.src
   short/3D/PyLith/trunk/modulesrc/faults/faults.pyxe.src
   short/3D/PyLith/trunk/modulesrc/feassemble/feassemble.pyxe.src
Log:
Added GravityField and made associated changes.
Gravity should now be included in integrateResidual for implicit elasticity
problems.  Also, coordinate system is now passed along with mesh object for
anything that uses integrateResidual.
Body forces have not yet been tested, but they do not appear to break any
of the unit tests.  New unit tests and examples will need to be added.




Modified: short/3D/PyLith/trunk/modulesrc/bc/bc.pyxe.src
===================================================================
--- short/3D/PyLith/trunk/modulesrc/bc/bc.pyxe.src	2008-05-29 15:00:58 UTC (rev 12054)
+++ short/3D/PyLith/trunk/modulesrc/bc/bc.pyxe.src	2008-05-29 19:46:22 UTC (rev 12055)
@@ -817,25 +817,28 @@
     return
 
 
-  def integrateResidual(self, residual, t, fields, mesh):
+  def integrateResidual(self, residual, t, fields, mesh, cs):
     """
     Integrate contributions to residual term (r) for operator.
     """
     # create shim for method 'integrateResidual'
-    #embed{ void AbsorbingDampers_integrateResidual(void* objVptr, void* residualVptr, double t, void* fieldsVptr, void* meshVptr)
+    #embed{ void AbsorbingDampers_integrateResidual(void* objVptr, void* residualVptr, double t, void* fieldsVptr, void* meshVptr, void* csVptr)
     try {
       assert(0 != objVptr);
       assert(0 != residualVptr);
       assert(0 != fieldsVptr);
       assert(0 != meshVptr);
+      assert(0 != csVptr);
       ALE::Obj<pylith::Mesh>* mesh =
         (ALE::Obj<pylith::Mesh>*) meshVptr;
       ALE::Obj<pylith::real_section_type>* residual =
         (ALE::Obj<pylith::real_section_type>*) residualVptr;
       pylith::topology::FieldsManager* fields =
         (pylith::topology::FieldsManager*) fieldsVptr;
+      spatialdata::geocoords::CoordSys* cs =
+        (spatialdata::geocoords::CoordSys*) csVptr;
       ((pylith::bc::AbsorbingDampers*) objVptr)->integrateResidual(*residual,
-                                                            t, fields, *mesh);
+                                                            t, fields, *mesh, cs);
     } catch (const std::exception& err) {
       PyErr_SetString(PyExc_RuntimeError,
                       const_cast<char*>(err.what()));
@@ -854,7 +857,8 @@
                                  PyCObject_AsVoidPtr(residual),
                                  t,
                                  ptrFromHandle(fields),
-                                 ptrFromHandle(mesh))
+                                 ptrFromHandle(mesh),
+				 ptrFromHandle(cs))
     return
 
 
@@ -1111,25 +1115,28 @@
     self.handle = self._createHandle()
 
 
-  def integrateResidual(self, residual, t, fields, mesh):
+  def integrateResidual(self, residual, t, fields, mesh, cs):
     """
     Integrate contributions to residual term (r) for operator.
     """
     # create shim for method 'integrateResidual'
-    #embed{ void Neumann_integrateResidual(void* objVptr, void* residualVptr, double t, void* fieldsVptr, void* meshVptr)
+    #embed{ void Neumann_integrateResidual(void* objVptr, void* residualVptr, double t, void* fieldsVptr, void* meshVptr, void* csVptr)
     try {
       assert(0 != objVptr);
       assert(0 != residualVptr);
       assert(0 != fieldsVptr);
       assert(0 != meshVptr);
+      assert(0 != csVptr);
       ALE::Obj<pylith::Mesh>* mesh =
         (ALE::Obj<pylith::Mesh>*) meshVptr;
       ALE::Obj<pylith::real_section_type>* residual =
         (ALE::Obj<pylith::real_section_type>*) residualVptr;
       pylith::topology::FieldsManager* fields =
         (pylith::topology::FieldsManager*) fieldsVptr;
+      spatialdata::geocoords::CoordSys* cs =
+        (spatialdata::geocoords::CoordSys*) csVptr;
       ((pylith::bc::Neumann*) objVptr)->integrateResidual(*residual,
-                                                            t, fields, *mesh);
+                                                            t, fields, *mesh, cs);
     } catch (const std::exception& err) {
       PyErr_SetString(PyExc_RuntimeError,
                       const_cast<char*>(err.what()));
@@ -1148,7 +1155,8 @@
                                  PyCObject_AsVoidPtr(residual),
                                  t,
                                  ptrFromHandle(fields),
-                                 ptrFromHandle(mesh))
+                                 ptrFromHandle(mesh),
+				 ptrFromHandle(cs))
     return
 
 

Modified: short/3D/PyLith/trunk/modulesrc/faults/faults.pyxe.src
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/faults.pyxe.src	2008-05-29 15:00:58 UTC (rev 12054)
+++ short/3D/PyLith/trunk/modulesrc/faults/faults.pyxe.src	2008-05-29 19:46:22 UTC (rev 12055)
@@ -421,25 +421,28 @@
     return
 
 
-  def integrateResidual(self, residual, t, fields, mesh):
+  def integrateResidual(self, residual, t, fields, mesh, cs):
     """
     Integrate contributions to residual term (r) for operator.
     """
     # create shim for method 'integrateResidual'
-    #embed{ void FaultCohesiveKin_integrateResidual(void* objVptr, void* residualVptr, double t, void* fieldsVptr, void* meshVptr)
+    #embed{ void FaultCohesiveKin_integrateResidual(void* objVptr, void* residualVptr, double t, void* fieldsVptr, void* meshVptr, void* csVptr)
     try {
       assert(0 != objVptr);
       assert(0 != residualVptr);
       assert(0 != fieldsVptr);
       assert(0 != meshVptr);
+      assert(0 != csVptr);
       ALE::Obj<pylith::Mesh>* mesh =
         (ALE::Obj<pylith::Mesh>*) meshVptr;
       ALE::Obj<pylith::real_section_type>* residual =
         (ALE::Obj<pylith::real_section_type>*) residualVptr;
       pylith::topology::FieldsManager* fields =
         (pylith::topology::FieldsManager*) fieldsVptr;
+      spatialdata::geocoords::CoordSys* cs =
+        (spatialdata::geocoords::CoordSys*) csVptr;
       ((pylith::faults::FaultCohesiveKin*) objVptr)->integrateResidual(*residual,
-                                                              t, fields, *mesh);
+                                                              t, fields, *mesh, cs);
     } catch (const std::exception& err) {
       PyErr_SetString(PyExc_RuntimeError,
                       const_cast<char*>(err.what()));
@@ -458,7 +461,8 @@
                                        PyCObject_AsVoidPtr(residual),
                                        t,
                                        ptrFromHandle(fields),
-                                       ptrFromHandle(mesh))
+                                       ptrFromHandle(mesh),
+				       ptrFromHandle(cs))
     return
 
 

Modified: short/3D/PyLith/trunk/modulesrc/feassemble/feassemble.pyxe.src
===================================================================
--- short/3D/PyLith/trunk/modulesrc/feassemble/feassemble.pyxe.src	2008-05-29 15:00:58 UTC (rev 12054)
+++ short/3D/PyLith/trunk/modulesrc/feassemble/feassemble.pyxe.src	2008-05-29 19:46:22 UTC (rev 12055)
@@ -923,25 +923,29 @@
     return
 
 
-  def integrateResidual(self, residual, t, fields, mesh):
+  def integrateResidual(self, residual, t, fields, mesh, cs):
     """
     Integrate contributions to residual term (r) for operator.
     """
     # create shim for method 'integrateResidual'
-    #embed{ void Integrator_integrateResidual(void* objVptr, void* residualVptr, double t, void* fieldsVptr, void* meshVptr)
+    #embed{ void Integrator_integrateResidual(void* objVptr, void* residualVptr, double t, void* fieldsVptr, void* meshVptr, void* csVptr)
     try {
       assert(0 != objVptr);
       assert(0 != residualVptr);
       assert(0 != fieldsVptr);
       assert(0 != meshVptr);
+      assert(0 != csVptr);
       ALE::Obj<pylith::Mesh>* mesh =
         (ALE::Obj<pylith::Mesh>*) meshVptr;
       ALE::Obj<pylith::real_section_type>* residual =
         (ALE::Obj<pylith::real_section_type>*) residualVptr;
       pylith::topology::FieldsManager* fields =
         (pylith::topology::FieldsManager*) fieldsVptr;
+      spatialdata::geocoords::CoordSys* cs =
+        (spatialdata::geocoords::CoordSys*) csVptr;
       ((pylith::feassemble::Integrator*) objVptr)->integrateResidual(*residual,
-                                                            t, fields, *mesh);
+                                                            t, fields, *mesh,
+							    cs);
     } catch (const std::exception& err) {
       PyErr_SetString(PyExc_RuntimeError,
                       const_cast<char*>(err.what()));
@@ -960,7 +964,8 @@
                                  PyCObject_AsVoidPtr(residual),
                                  t,
                                  ptrFromHandle(fields),
-                                 ptrFromHandle(mesh))
+                                 ptrFromHandle(mesh),
+				 ptrFromHandle(cs))
     return
 
 
@@ -1113,6 +1118,38 @@
       Integrator_quadrature_set(self.thisptr, ptrFromHandle(q))
 
 
+  property gravityField:
+    def __set__(self, g):
+      """
+      Set gravity field.
+      """
+      # create shim for method 'gravityField'
+      #embed{ void Integrator_gravityField_set(void* objVptr, void* gVptr)
+      try {
+        assert(0 != objVptr);
+        spatialdata::spatialdb::GravityField* gravityField =
+          (spatialdata::spatialdb::GravityField*) gVptr;
+        ((pylith::feassemble::Integrator*) objVptr)->gravityField(gravityField);
+      } 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 g.name == "pylith_feassemble_GravityField":
+        raise TypeError, \
+              "Argument must be extension module type 'GravityField'."
+      if None == g:
+        Integrator_gravityField_set(self.thisptr, NULL)
+      else:
+        Integrator_gravityField_set(self.thisptr, ptrFromHandle(g))
+
+
   property timeStep:
     def __set__(self, dt):
       """



More information about the cig-commits mailing list