[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