[cig-commits] r6705 - in short/3D/PyLith/trunk: libsrc/faults unittests/libtests/faults unittests/pytests/topology

knepley at geodynamics.org knepley at geodynamics.org
Thu Apr 26 19:46:24 PDT 2007


Author: knepley
Date: 2007-04-26 19:46:23 -0700 (Thu, 26 Apr 2007)
New Revision: 6705

Modified:
   short/3D/PyLith/trunk/libsrc/faults/CohesiveTopology.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/Makefile.am
   short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesive.cc
   short/3D/PyLith/trunk/unittests/pytests/topology/testdriver.py
Log:
Now cohesive cells include extra vertices for Lagrange multipliers


Modified: short/3D/PyLith/trunk/libsrc/faults/CohesiveTopology.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/CohesiveTopology.cc	2007-04-27 01:05:00 UTC (rev 6704)
+++ short/3D/PyLith/trunk/libsrc/faults/CohesiveTopology.cc	2007-04-27 02:46:23 UTC (rev 6705)
@@ -33,6 +33,7 @@
   // Create set with vertices on fault
   const int_section_type::chart_type& chart = groupField->getChart();
   std::set<Mesh::point_type> faultVertices; // Vertices on fault
+  bool useLagrangeMultipliers = true;
 
   const int numCells = mesh->heightStratum(0)->size();
   for(int_section_type::chart_type::iterator c_iter = chart.begin();
@@ -129,7 +130,7 @@
   if (debug)
     (*fault)->view("Fault mesh");
 
-  // Add new shadow vertices
+  // Add new shadow vertices and possibly Lagrange multipler vertices
   const ALE::Obj<Mesh::label_sequence>& fVertices = (*fault)->depthStratum(0);
   const ALE::Obj<Mesh::label_sequence>& vertices = mesh->depthStratum(0);
   const ALE::Obj<std::set<std::string> >& groupNames = mesh->getIntSections();
@@ -150,8 +151,12 @@
 
       if (group->hasPoint(*v_iter)) {
         group->setFiberDimension(newPoint, 1);
+        if (useLagrangeMultipliers) {
+          group->setFiberDimension(newPoint+1, 1);
+        }
       }
     } // for
+    if (useLagrangeMultipliers) newPoint++;
   } // for
 
   // Split the mesh along the fault sieve and create cohesive elements
@@ -209,9 +214,17 @@
     for(sieve_type::traits::coneSequence::iterator v_iter = fBegin; v_iter != fEnd;
         ++v_iter) {
       if (debug)
-        std::cout << "    vertex " << vertexRenumber[*v_iter] << std::endl;
+        std::cout << "    shadow vertex " << vertexRenumber[*v_iter] << std::endl;
       sieve->addArrow(vertexRenumber[*v_iter], newPoint, color++);
     }
+    if (useLagrangeMultipliers) {
+      for(sieve_type::traits::coneSequence::iterator v_iter = fBegin; v_iter != fEnd;
+          ++v_iter) {
+        if (debug)
+          std::cout << "    Lagrange vertex " << vertexRenumber[*v_iter]+1 << std::endl;
+        sieve->addArrow(vertexRenumber[*v_iter]+1, newPoint, color++);
+      }
+    }
     mesh->setValue(material, newPoint, materialId);
   } // for
   mesh->stratify();
@@ -228,14 +241,22 @@
       ++v_iter) {
     coordinates->addPoint(vertexRenumber[*v_iter],
 			  coordinates->getFiberDimension(*v_iter));
+    if (useLagrangeMultipliers) {
+      coordinates->addPoint(vertexRenumber[*v_iter]+1,
+			  coordinates->getFiberDimension(*v_iter));
+    }
   } // for
   mesh->reallocate(coordinates);
   for(Mesh::label_sequence::iterator v_iter = fVertices2->begin();
       v_iter != fVertices2->end();
-      ++v_iter)
+      ++v_iter) {
     coordinates->updatePoint(vertexRenumber[*v_iter], 
 			     coordinates->restrictPoint(*v_iter));
-
+    if (useLagrangeMultipliers) {
+      coordinates->updatePoint(vertexRenumber[*v_iter]+1,
+			     coordinates->restrictPoint(*v_iter));
+    }
+  }
 } // createCohesiveCells
 
 // ----------------------------------------------------------------------

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/Makefile.am	2007-04-27 01:05:00 UTC (rev 6704)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/Makefile.am	2007-04-27 02:46:23 UTC (rev 6705)
@@ -33,18 +33,28 @@
 testfaults_SOURCES += \
 	data/CohesiveData.cc \
 	data/CohesiveDataLine2.cc \
+	data/CohesiveLagrangeDataLine2.cc \
 	data/CohesiveDataTri3.cc \
+	data/CohesiveLagrangeDataTri3.cc \
 	data/CohesiveDataQuad4.cc \
+	data/CohesiveLagrangeDataQuad4.cc \
 	data/CohesiveDataHex8.cc \
+	data/CohesiveLagrangeDataHex8.cc \
+	data/CohesiveLagrangeDataTet4.cc \
 	data/CohesiveDataTet4.cc
 
 noinst_HEADERS += \
 	data/CohesiveData.hh \
 	data/CohesiveDataLine2.hh \
+	data/CohesiveLagrangeDataLine2.hh \
 	data/CohesiveDataTri3.hh \
+	data/CohesiveLagrangeDataTri3.hh \
 	data/CohesiveDataQuad4.hh \
+	data/CohesiveLagrangeDataQuad4.hh \
 	data/CohesiveDataHex8.hh \
-	data/CohesiveDataTet4.hh
+	data/CohesiveLagrangeDataHex8.hh \
+	data/CohesiveDataTet4.hh \
+	data/CohesiveLagrangeDataTet4.hh
 
 testfaults_LDFLAGS = $(PETSC_LIB)
 

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesive.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesive.cc	2007-04-27 01:05:00 UTC (rev 6704)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesive.cc	2007-04-27 02:46:23 UTC (rev 6705)
@@ -21,10 +21,15 @@
 #include "pylith/meshio/MeshIOAscii.hh" // USES MeshIOAscii
 
 #include "data/CohesiveDataLine2.hh" // USES CohesiveDataLine2
+#include "data/CohesiveLagrangeDataLine2.hh" // USES CohesiveLagrangeDataLine2
 #include "data/CohesiveDataTri3.hh" // USES CohesiveDataTri3
+#include "data/CohesiveLagrangeDataTri3.hh" // USES CohesiveLagrangeDataTri3
 #include "data/CohesiveDataQuad4.hh" // USES CohesiveDataQuad4
+#include "data/CohesiveLagrangeDataQuad4.hh" // USES CohesiveLagrangeDataQuad4
 #include "data/CohesiveDataTet4.hh" // USES CohesiveDataTet4
+#include "data/CohesiveLagrangeDataTet4.hh" // USES CohesiveLagrangeDataTet4
 #include "data/CohesiveDataHex8.hh" // USES CohesiveDataHex8
+#include "data/CohesiveLagrangeDataHex8.hh" // USES CohesiveLagrangeDataHex8
 
 // ----------------------------------------------------------------------
 CPPUNIT_TEST_SUITE_REGISTRATION( pylith::faults::TestFaultCohesive );
@@ -34,7 +39,8 @@
 void
 pylith::faults::TestFaultCohesive::testAdjustTopologyLine2(void)
 { // testAdjustTopologyLine2
-  CohesiveDataLine2 data;
+  /// CohesiveDataLine2 data;
+  CohesiveLagrangeDataLine2 data;
   _testAdjustTopology(data);
 } // testAdjustTopologyLine2
 
@@ -43,7 +49,8 @@
 void
 pylith::faults::TestFaultCohesive::testAdjustTopologyTri3(void)
 { // testAdjustTopologyTri3
-  CohesiveDataTri3 data;
+  ///CohesiveDataTri3 data;
+  CohesiveLagrangeDataTri3 data;
   _testAdjustTopology(data);
 } // testAdjustTopologyTri3
 
@@ -52,7 +59,8 @@
 void
 pylith::faults::TestFaultCohesive::testAdjustTopologyQuad4(void)
 { // testAdjustTopologyQuad4
-  CohesiveDataQuad4 data;
+  ///CohesiveDataQuad4 data;
+  CohesiveLagrangeDataQuad4 data;
   _testAdjustTopology(data);
 } // testAdjustTopologyQuad4
 
@@ -61,7 +69,8 @@
 void
 pylith::faults::TestFaultCohesive::testAdjustTopologyTet4(void)
 { // testAdjustTopologyTet4
-  CohesiveDataTet4 data;
+  ///CohesiveDataTet4 data;
+  CohesiveLagrangeDataTet4 data;
   _testAdjustTopology(data);
 } // testAdjustTopologyTet4
 
@@ -70,7 +79,8 @@
 void
 pylith::faults::TestFaultCohesive::testAdjustTopologyHex8(void)
 { // testAdjustTopologyHex8
-  CohesiveDataHex8 data;
+  ///CohesiveDataHex8 data;
+  CohesiveLagrangeDataHex8 data;
   _testAdjustTopology(data);
 } // testAdjustTopologyHex8
 
@@ -89,7 +99,7 @@
   FaultCohesiveKin fault;
   fault.id(1);
   fault.label("fault");
-  fault.adjustTopology(&mesh);
+  fault.adjustTopology(mesh);
 
   CPPUNIT_ASSERT_EQUAL(data.cellDim, mesh->getDimension());
 

Modified: short/3D/PyLith/trunk/unittests/pytests/topology/testdriver.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/topology/testdriver.py	2007-04-27 01:05:00 UTC (rev 6704)
+++ short/3D/PyLith/trunk/unittests/pytests/topology/testdriver.py	2007-04-27 02:46:23 UTC (rev 6705)
@@ -37,7 +37,11 @@
     """
     Run the application.
     """
+    from pylith.utils.PetscManager import PetscManager
+    manager = PetscManager()
+    manager.initialize()
     unittest.TextTestRunner(verbosity=2).run(self._suite())
+    manager.finalize()
     return
 
 



More information about the cig-commits mailing list