[cig-commits] r21012 - in short/3D/PyLith/trunk: libsrc/pylith/faults unittests/libtests/faults

knepley at geodynamics.org knepley at geodynamics.org
Sat Nov 10 19:22:03 PST 2012


Author: knepley
Date: 2012-11-10 19:22:03 -0800 (Sat, 10 Nov 2012)
New Revision: 21012

Modified:
   short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveLagrange.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKin.cc
Log:
Now CohesiveKin* splitting tests work

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveLagrange.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveLagrange.cc	2012-11-10 20:16:28 UTC (rev 21011)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveLagrange.cc	2012-11-11 03:22:03 UTC (rev 21012)
@@ -146,11 +146,10 @@
 { // splitField
   assert(0 != field);
 
-  // The field should be split already, so check it
   DM             dm       = field->dmMesh();
   PetscSection   section  = field->petscSection();
   const PetscInt spaceDim = field->mesh().dimension();
-  PetscInt       numFields, numComp;
+  PetscInt       numFields, numComp, pStart, pEnd;
   PetscErrorCode err;
 
   err = PetscSectionGetNumFields(section, &numFields);CHECK_PETSC_ERROR(err);
@@ -169,11 +168,15 @@
     const int v_lagrange = _cohesiveVertices[iVertex].lagrange;
     err = PetscSectionGetDof(section, v_lagrange, &dof);CHECK_PETSC_ERROR(err);
     assert(spaceDim == dof);
-    err = PetscSectionGetFieldDof(section, 0, v_lagrange, &dof);CHECK_PETSC_ERROR(err);
-    assert(0 == dof);
-    err = PetscSectionGetFieldDof(section, 1, v_lagrange, &dof);CHECK_PETSC_ERROR(err);
-    assert(spaceDim == dof);
+    err = PetscSectionSetFieldDof(section, v_lagrange, 1, dof);CHECK_PETSC_ERROR(err);
   } // for
+  err = PetscSectionGetChart(section, &pStart, &pEnd);CHECK_PETSC_ERROR(err);
+  for(PetscInt p = pStart; p < pEnd; ++p) {
+    PetscInt dof;
+
+    err = PetscSectionGetFieldDof(section, p, 1, &dof);CHECK_PETSC_ERROR(err);
+    if (!dof) {err = PetscSectionSetFieldDof(section, p, 0, spaceDim);CHECK_PETSC_ERROR(err);}
+  }
 } // splitField
 
 // ----------------------------------------------------------------------

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKin.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKin.cc	2012-11-10 20:16:28 UTC (rev 21011)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKin.cc	2012-11-11 03:22:03 UTC (rev 21012)
@@ -769,6 +769,9 @@
   const int spaceDim = cs->spaceDim();
 
   topology::Field<topology::Mesh> splitField(mesh);
+  splitField.addField("displacement", spaceDim);
+  splitField.addField("multipliers", spaceDim);
+  splitField.setupFields();
   splitField.newSection(disp, spaceDim);
   splitField.splitDefault();
   fault.splitField(&splitField);
@@ -784,9 +787,9 @@
   err = PetscSectionGetNumFields(section, &numFields);CHECK_PETSC_ERROR(err);
   CPPUNIT_ASSERT_EQUAL(2, numFields);
   err = PetscSectionGetFieldComponents(section, 0, &numComp);CHECK_PETSC_ERROR(err);
-  CPPUNIT_ASSERT_EQUAL(spaceDim, numFields);
+  CPPUNIT_ASSERT_EQUAL(spaceDim, numComp);
   err = PetscSectionGetFieldComponents(section, 1, &numComp);CHECK_PETSC_ERROR(err);
-  CPPUNIT_ASSERT_EQUAL(1, numFields);
+  CPPUNIT_ASSERT_EQUAL(spaceDim, numComp);
 
   DM              dmMesh = mesh.dmMesh();
   PetscInt        vStart, vEnd;



More information about the CIG-COMMITS mailing list