[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