[cig-commits] [commit] knepley/upgrade-petsc-interface: Cleanup adding subfields to field (include metadata). (391968f)
cig_noreply at geodynamics.org
cig_noreply at geodynamics.org
Thu Nov 14 14:29:52 PST 2013
Repository : ssh://geoshell/pylith
On branch : knepley/upgrade-petsc-interface
Link : https://github.com/geodynamics/pylith/compare/bda5253a1aeb4b2402473b3320d6af6fb6d45ece...391968f6bec7319b47b311e9a68289b2574756f2
>---------------------------------------------------------------
commit 391968f6bec7319b47b311e9a68289b2574756f2
Author: Brad Aagaard <baagaard at usgs.gov>
Date: Thu Nov 14 14:32:30 2013 -0800
Cleanup adding subfields to field (include metadata).
>---------------------------------------------------------------
391968f6bec7319b47b311e9a68289b2574756f2
libsrc/pylith/faults/FaultCohesiveLagrange.cc | 9 ++----
libsrc/pylith/topology/Field.cc | 7 +++-
libsrc/pylith/topology/Field.hh | 14 +++-----
libsrc/pylith/topology/Field.icc | 8 -----
modulesrc/topology/Field.i | 6 +++-
pylith/meshio/OutputSoln.py | 3 +-
pylith/meshio/OutputSolnSubset.py | 3 +-
pylith/problems/Formulation.py | 37 ++++++++--------------
unittests/libtests/bc/TestDirichletBC.cc | 8 ++---
unittests/libtests/bc/TestDirichletBCMulti.cc | 8 ++---
unittests/libtests/faults/TestFaultCohesiveDyn.cc | 4 +--
.../libtests/faults/TestFaultCohesiveImpulses.cc | 4 +--
unittests/libtests/faults/TestFaultCohesiveKin.cc | 4 +--
unittests/libtests/topology/TestFieldMesh.cc | 8 ++---
unittests/pytests/faults/TestFaultCohesiveDyn.py | 4 +--
.../pytests/faults/TestFaultCohesiveImpulses.py | 4 +--
unittests/pytests/faults/TestFaultCohesiveKin.py | 4 +--
unittests/pytests/meshio/TestOutputSolnSubset.py | 2 ++
18 files changed, 62 insertions(+), 75 deletions(-)
diff --git a/libsrc/pylith/faults/FaultCohesiveLagrange.cc b/libsrc/pylith/faults/FaultCohesiveLagrange.cc
index 11fcf03..5fed7df 100644
--- a/libsrc/pylith/faults/FaultCohesiveLagrange.cc
+++ b/libsrc/pylith/faults/FaultCohesiveLagrange.cc
@@ -1332,22 +1332,19 @@ pylith::faults::FaultCohesiveLagrange::_calcOrientation(const PylithScalar upDir
_fields->add("orientation", "orientation");
topology::Field& orientation = _fields->get("orientation");
const topology::Field& dispRel = _fields->get("relative disp");
- if (spaceDim > 1) orientation.subfieldAdd("strike_dir", spaceDim);
- if (spaceDim > 2) orientation.subfieldAdd("dip_dir", spaceDim);
- orientation.subfieldAdd("normal_dir", spaceDim);
+ if (spaceDim > 1) orientation.subfieldAdd("strike_dir", spaceDim, topology::Field::VECTOR);
+ if (spaceDim > 2) orientation.subfieldAdd("dip_dir", spaceDim, topology::Field::VECTOR);
+ orientation.subfieldAdd("normal_dir", spaceDim, topology::Field::VECTOR);
orientation.subfieldsSetup();
orientation.newSection(dispRel, orientationSize);
// Create components for along-strike, up-dip, and normal directions
if (spaceDim > 1) {
orientation.subfieldSetDof("strike_dir", topology::FieldBase::VERTICES_FIELD, spaceDim);
- orientation.vectorFieldType("strike_dir", topology::FieldBase::VECTOR);
} // if
if (spaceDim > 2) {
orientation.subfieldSetDof("dip_dir", topology::FieldBase::VERTICES_FIELD, spaceDim);
- orientation.vectorFieldType("dip_dir", topology::FieldBase::VECTOR);
} // if
orientation.subfieldSetDof("normal_dir", topology::FieldBase::VERTICES_FIELD, spaceDim);
- orientation.vectorFieldType("normal_dir", topology::FieldBase::VECTOR);
orientation.allocate();
orientation.zeroAll();
diff --git a/libsrc/pylith/topology/Field.cc b/libsrc/pylith/topology/Field.cc
index 96a8d9e..d9eace0 100644
--- a/libsrc/pylith/topology/Field.cc
+++ b/libsrc/pylith/topology/Field.cc
@@ -1241,7 +1241,9 @@ pylith::topology::Field::_getScatter(const char* context) const
// Experimental
void
pylith::topology::Field::subfieldAdd(const char *name,
- int numComponents)
+ int numComponents,
+ const VectorFieldEnum fieldType,
+ const PylithScalar scale)
{ // subfieldAdd
PYLITH_METHOD_BEGIN;
@@ -1252,6 +1254,9 @@ pylith::topology::Field::subfieldAdd(const char *name,
_subfieldComps[name] = numComponents;
_metadata[name] = _metadata["default"];
_metadata[name].label = name;
+ _metadata[name].vectorFieldType = fieldType;
+ _metadata[name].scale = scale;
+ _metadata[name].dimsOkay = false;
_metadata[name].index = _metadata.size()-2; // Indices match order added (account for "default").
PYLITH_METHOD_END;
diff --git a/libsrc/pylith/topology/Field.hh b/libsrc/pylith/topology/Field.hh
index 99a7126..c67a269 100644
--- a/libsrc/pylith/topology/Field.hh
+++ b/libsrc/pylith/topology/Field.hh
@@ -129,14 +129,6 @@ public :
*/
void vectorFieldType(const VectorFieldEnum value);
- /** Set vector field type
- *
- * @param name Field name
- * @param value Type of vector field.
- */
- void vectorFieldType(const std::string& name,
- const VectorFieldEnum value);
-
/** Get vector field type
*
* @returns Type of vector field.
@@ -303,9 +295,13 @@ public :
*
* @param name Name of subfield.
* @param numComponents Number of components in subfield.
+ * @param fieldType Type of vector field.
+ * @param scale Scale for dimensionalizing field.
*/
void subfieldAdd(const char *name,
- int numComponents);
+ int numComponents,
+ const VectorFieldEnum fieldType,
+ const PylithScalar scale =1.0);
/** Setup sections for subfields.
*
diff --git a/libsrc/pylith/topology/Field.icc b/libsrc/pylith/topology/Field.icc
index 416f7d9..96c49b5 100644
--- a/libsrc/pylith/topology/Field.icc
+++ b/libsrc/pylith/topology/Field.icc
@@ -75,14 +75,6 @@ pylith::topology::Field::vectorFieldType(const VectorFieldEnum value) {
_metadata["default"].vectorFieldType = value;
}
-// Set vector field type
-inline
-void
-pylith::topology::Field::vectorFieldType(const std::string& name,
- const VectorFieldEnum value) {
- const_cast<Field*>(this)->_metadata[name].vectorFieldType = value;
-}
-
// Get vector field type
inline
pylith::topology::Field::VectorFieldEnum
diff --git a/modulesrc/topology/Field.i b/modulesrc/topology/Field.i
index d4b9f4f..8de684c 100644
--- a/modulesrc/topology/Field.i
+++ b/modulesrc/topology/Field.i
@@ -157,9 +157,13 @@ namespace pylith {
*
* @param name Name of subfield.
* @param numComponents Number of components in subfield.
+ * @param fieldType Type of vector field.
+ * @param scale Scale for dimensionalizing field.
*/
void subfieldAdd(const char *name,
- int numComponents);
+ int numComponents,
+ const VectorFieldEnum fieldType,
+ const PylithScalar scale =1.0);
/** Setup sections for subfields.
*
diff --git a/pylith/meshio/OutputSoln.py b/pylith/meshio/OutputSoln.py
index f341371..2f2a598 100644
--- a/pylith/meshio/OutputSoln.py
+++ b/pylith/meshio/OutputSoln.py
@@ -115,7 +115,6 @@ class OutputSoln(OutputManager):
fields.add("buffer (vector)", "buffer")
buffer = fields.get("buffer (vector)")
buffer.copySubfield(field, "displacement")
- buffer.scale(field.scale()) # :KLUDGE: Fix for multiple fields
elif name == "velocity":
field = fields.get("velocity(t)")
if not fields.hasField("buffer (vector)"):
@@ -126,6 +125,8 @@ class OutputSoln(OutputManager):
buffer.scale(field.scale()) # :KLUDGE: Fix for multiple fields
else:
raise ValueError, "Vertex field '%s' not available." % name
+
+ buffer.dimensionalizeOkay(True)
return buffer
diff --git a/pylith/meshio/OutputSolnSubset.py b/pylith/meshio/OutputSolnSubset.py
index c526461..0d1c238 100644
--- a/pylith/meshio/OutputSolnSubset.py
+++ b/pylith/meshio/OutputSolnSubset.py
@@ -134,7 +134,6 @@ class OutputSolnSubset(OutputManager, ModuleOutputSolnSubset):
fields.add("buffer (vector)", "buffer")
buffer = fields.get("buffer (vector)")
buffer.copySubfield(field, "displacement")
- buffer.scale(field.scale()) # :KLUDGE: Fix for multiple fields
elif name == "velocity":
field = fields.get("velocity(t)")
if not fields.hasField("buffer (vector)"):
@@ -145,6 +144,8 @@ class OutputSolnSubset(OutputManager, ModuleOutputSolnSubset):
buffer.scale(field.scale()) # :KLUDGE: Fix for multiple fields
else:
raise ValueError, "Vertex field '%s' not available." % name
+
+ buffer.dimensionalizeOkay(True)
return buffer
diff --git a/pylith/problems/Formulation.py b/pylith/problems/Formulation.py
index d98faca..7ad1062 100644
--- a/pylith/problems/Formulation.py
+++ b/pylith/problems/Formulation.py
@@ -498,30 +498,19 @@ class Formulation(PetscComponent, ModuleFormulation):
self.fields.solutionName("dispIncr(t->t+dt)")
lengthScale = normalizer.lengthScale()
- if 1:
- solution = self.fields.get("dispIncr(t->t+dt)")
- solution.subfieldAdd("displacement", dimension)
- solution.subfieldAdd("lagrange_multiplier", dimension)
- solution.subfieldsSetup()
- solution.setupSolnChart()
- solution.setupSolnDof(dimension)
- # Loop over integrators to adjust DOF layout
- for integrator in self.integrators:
- integrator.setupSolnDof(solution)
- solution.vectorFieldType(solution.VECTOR)
- solution.scale(lengthScale.value)
- else:
- solution.addField("displacement", dimension)
- if self.splitFields():
- solution.addField("constraints", dimension)
- solution.addField("pressure", 1)
- solution.addField("temperature", 1)
- solution.setupFields()
- solution.updateDof("displacement", solution.VERTICES_FIELD, dimension)
- solution.updateDof("pressure", solution.CELLS_FIELD, 1)
- solution.updateDof("temperature", solution.VERTICES_FIELD, 1)
- solution.vectorFieldType("displacement", solution.VECTOR)
- solution.scale("displacement", lengthScale.value)
+ pressureScale = normalizer.pressureScale()
+
+ solution = self.fields.get("dispIncr(t->t+dt)")
+ solution.subfieldAdd("displacement", dimension, solution.VECTOR, lengthScale.value)
+ solution.subfieldAdd("lagrange_multiplier", dimension, solution.VECTOR, pressureScale.value)
+ solution.subfieldsSetup()
+ solution.setupSolnChart()
+ solution.setupSolnDof(dimension)
+ # Loop over integrators to adjust DOF layout
+ for integrator in self.integrators:
+ integrator.setupSolnDof(solution)
+ solution.vectorFieldType(solution.VECTOR)
+ solution.scale(lengthScale.value)
for constraint in self.constraints:
constraint.setConstraintSizes(solution)
diff --git a/unittests/libtests/bc/TestDirichletBC.cc b/unittests/libtests/bc/TestDirichletBC.cc
index 7d2668b..6740472 100644
--- a/unittests/libtests/bc/TestDirichletBC.cc
+++ b/unittests/libtests/bc/TestDirichletBC.cc
@@ -174,7 +174,7 @@ pylith::bc::TestDirichletBC::testSetConstraintSizes(void)
const int fiberDim = _data->numDOF;
const int spaceDim = mesh.dimension();
topology::Field field(mesh);
- field.subfieldAdd("bc", spaceDim);
+ field.subfieldAdd("bc", spaceDim, topology::Field::VECTOR);
field.subfieldsSetup();
field.newSection(pylith::topology::FieldBase::VERTICES_FIELD, fiberDim);
field.subfieldSetDof("bc", pylith::topology::FieldBase::VERTICES_FIELD, fiberDim);
@@ -237,7 +237,7 @@ pylith::bc::TestDirichletBC::testSetConstraints(void)
const int spaceDim = mesh.dimension();
const int fiberDim = _data->numDOF;
topology::Field field(mesh);
- field.subfieldAdd("bc", spaceDim);
+ field.subfieldAdd("bc", spaceDim, topology::Field::VECTOR);
field.subfieldsSetup();
field.newSection(pylith::topology::FieldBase::VERTICES_FIELD, fiberDim);
field.subfieldSetDof("bc", pylith::topology::FieldBase::VERTICES_FIELD, fiberDim);
@@ -304,7 +304,7 @@ pylith::bc::TestDirichletBC::testSetField(void)
const int fiberDim = _data->numDOF;
topology::Field field(mesh);
- field.subfieldAdd("bc", fiberDim);
+ field.subfieldAdd("bc", fiberDim, topology::Field::VECTOR);
field.subfieldsSetup();
field.newSection(pylith::topology::FieldBase::VERTICES_FIELD, fiberDim);
field.subfieldSetDof("bc", pylith::topology::FieldBase::VERTICES_FIELD, fiberDim);
@@ -412,7 +412,7 @@ pylith::bc::TestDirichletBC::testSetFieldIncr(void)
const int fiberDim = _data->numDOF;
topology::Field field(mesh);
- field.subfieldAdd("bc", fiberDim);
+ field.subfieldAdd("bc", fiberDim, topology::Field::VECTOR);
field.subfieldsSetup();
field.newSection(pylith::topology::FieldBase::VERTICES_FIELD, fiberDim);
field.subfieldSetDof("bc", pylith::topology::FieldBase::VERTICES_FIELD, fiberDim);
diff --git a/unittests/libtests/bc/TestDirichletBCMulti.cc b/unittests/libtests/bc/TestDirichletBCMulti.cc
index 5a2265f..c0b55d1 100644
--- a/unittests/libtests/bc/TestDirichletBCMulti.cc
+++ b/unittests/libtests/bc/TestDirichletBCMulti.cc
@@ -77,7 +77,7 @@ pylith::bc::TestDirichletBCMulti::testSetConstraintSizes(void)
const int fiberDim = _data->numDOF;
topology::Field field(mesh);
- field.subfieldAdd("bc", fiberDim);
+ field.subfieldAdd("bc", fiberDim, topology::Field::VECTOR);
field.subfieldsSetup();
field.newSection(pylith::topology::FieldBase::VERTICES_FIELD, fiberDim);
field.subfieldSetDof("bc", pylith::topology::FieldBase::VERTICES_FIELD, fiberDim);
@@ -128,7 +128,7 @@ pylith::bc::TestDirichletBCMulti::testSetConstraints(void)
const int fiberDim = _data->numDOF;
topology::Field field(mesh);
- field.subfieldAdd("bc", fiberDim);
+ field.subfieldAdd("bc", fiberDim, topology::Field::VECTOR);
field.subfieldsSetup();
field.newSection(pylith::topology::FieldBase::VERTICES_FIELD, fiberDim);
field.subfieldSetDof("bc", pylith::topology::FieldBase::VERTICES_FIELD, fiberDim);
@@ -192,7 +192,7 @@ pylith::bc::TestDirichletBCMulti::testSetField(void)
const int fiberDim = _data->numDOF;
topology::Field field(mesh);
- field.subfieldAdd("bc", fiberDim);
+ field.subfieldAdd("bc", fiberDim, topology::Field::VECTOR);
field.subfieldsSetup();
field.newSection(pylith::topology::FieldBase::VERTICES_FIELD, fiberDim);
field.subfieldSetDof("bc", pylith::topology::FieldBase::VERTICES_FIELD, fiberDim);
@@ -272,7 +272,7 @@ pylith::bc::TestDirichletBCMulti::testSetFieldIncr(void)
const int fiberDim = _data->numDOF;
topology::Field field(mesh);
- field.subfieldAdd("bc", fiberDim);
+ field.subfieldAdd("bc", fiberDim, topology::Field::VECTOR);
field.subfieldsSetup();
field.newSection(pylith::topology::FieldBase::VERTICES_FIELD, fiberDim);
field.subfieldSetDof("bc", pylith::topology::FieldBase::VERTICES_FIELD, fiberDim);
diff --git a/unittests/libtests/faults/TestFaultCohesiveDyn.cc b/unittests/libtests/faults/TestFaultCohesiveDyn.cc
index f7bae9f..9aefb42 100644
--- a/unittests/libtests/faults/TestFaultCohesiveDyn.cc
+++ b/unittests/libtests/faults/TestFaultCohesiveDyn.cc
@@ -684,8 +684,8 @@ pylith::faults::TestFaultCohesiveDyn::_initialize(topology::Mesh* const mesh,
const int spaceDim = _data->spaceDim;
topology::Field& residual = fields->get("residual");
- residual.subfieldAdd("displacement", spaceDim);
- residual.subfieldAdd("lagrange_multiplier", spaceDim);
+ residual.subfieldAdd("displacement", spaceDim, topology::Field::VECTOR);
+ residual.subfieldAdd("lagrange_multiplier", spaceDim, topology::Field::VECTOR);
residual.subfieldsSetup();
residual.setupSolnChart();
residual.setupSolnDof(spaceDim);
diff --git a/unittests/libtests/faults/TestFaultCohesiveImpulses.cc b/unittests/libtests/faults/TestFaultCohesiveImpulses.cc
index e1dccd2..9e3b4f4 100644
--- a/unittests/libtests/faults/TestFaultCohesiveImpulses.cc
+++ b/unittests/libtests/faults/TestFaultCohesiveImpulses.cc
@@ -386,8 +386,8 @@ pylith::faults::TestFaultCohesiveImpulses::_initialize(topology::Mesh* const mes
const int spaceDim = _data->spaceDim;
topology::Field& residual = fields->get("residual");
- residual.subfieldAdd("displacement", spaceDim);
- residual.subfieldAdd("lagrange_multiplier", spaceDim);
+ residual.subfieldAdd("displacement", spaceDim, topology::Field::VECTOR);
+ residual.subfieldAdd("lagrange_multiplier", spaceDim, topology::Field::VECTOR);
residual.subfieldsSetup();
residual.setupSolnChart();
residual.setupSolnDof(spaceDim);
diff --git a/unittests/libtests/faults/TestFaultCohesiveKin.cc b/unittests/libtests/faults/TestFaultCohesiveKin.cc
index 6092c80..93e7bfe 100644
--- a/unittests/libtests/faults/TestFaultCohesiveKin.cc
+++ b/unittests/libtests/faults/TestFaultCohesiveKin.cc
@@ -722,8 +722,8 @@ pylith::faults::TestFaultCohesiveKin::_initialize(topology::Mesh* const mesh,
const int spaceDim = _data->spaceDim;
topology::Field& residual = fields->get("residual");
- residual.subfieldAdd("displacement", spaceDim);
- residual.subfieldAdd("lagrange_multiplier", spaceDim);
+ residual.subfieldAdd("displacement", spaceDim, topology::Field::VECTOR);
+ residual.subfieldAdd("lagrange_multiplier", spaceDim, topology::Field::VECTOR);
residual.subfieldsSetup();
residual.setupSolnChart();
residual.setupSolnDof(spaceDim);
diff --git a/unittests/libtests/topology/TestFieldMesh.cc b/unittests/libtests/topology/TestFieldMesh.cc
index 3e78cc3..c187e4e 100644
--- a/unittests/libtests/topology/TestFieldMesh.cc
+++ b/unittests/libtests/topology/TestFieldMesh.cc
@@ -869,8 +869,8 @@ pylith::topology::TestFieldMesh::testCopySubfield(void)
Field fieldSrc(mesh);
{ // Setup source field
fieldSrc.label("solution");
- fieldSrc.subfieldAdd("one", fiberDimA);
- fieldSrc.subfieldAdd("two", fiberDimB);
+ fieldSrc.subfieldAdd("one", fiberDimA, Field::SCALAR);
+ fieldSrc.subfieldAdd("two", fiberDimB, Field::VECTOR);
fieldSrc.subfieldsSetup();
fieldSrc.newSection(Field::VERTICES_FIELD, fiberDim);
fieldSrc.subfieldSetDof("one", Field::VERTICES_FIELD, fiberDimA);
@@ -1411,7 +1411,7 @@ pylith::topology::TestFieldMesh::testSplitDefault(void)
for(PetscInt f = 0; f < numFields; ++f) {
std::ostringstream msg;
msg << "Field "<<f;
- fieldSrc.subfieldAdd(msg.str().c_str(), 1);
+ fieldSrc.subfieldAdd(msg.str().c_str(), 1, Field::SCALAR);
} // for
fieldSrc.subfieldsSetup();
fieldSrc.newSection(Field::VERTICES_FIELD, spaceDim);
@@ -1505,7 +1505,7 @@ pylith::topology::TestFieldMesh::testCloneSectionSplit(void)
for(PetscInt f = 0; f < numFields; ++f) {
std::ostringstream msg;
msg << "Field "<<f;
- fieldSrc.subfieldAdd(msg.str().c_str(), 1);
+ fieldSrc.subfieldAdd(msg.str().c_str(), 1, Field::SCALAR);
} // for
fieldSrc.subfieldsSetup();
fieldSrc.newSection(Field::VERTICES_FIELD, spaceDim);
diff --git a/unittests/pytests/faults/TestFaultCohesiveDyn.py b/unittests/pytests/faults/TestFaultCohesiveDyn.py
index 5fc50a8..3fd7368 100644
--- a/unittests/pytests/faults/TestFaultCohesiveDyn.py
+++ b/unittests/pytests/faults/TestFaultCohesiveDyn.py
@@ -334,8 +334,8 @@ class TestFaultCohesiveDyn(unittest.TestCase):
fields.solutionName("dispIncr(t->t+dt)")
residual = fields.get("residual")
- residual.subfieldAdd("displacement", cs.spaceDim())
- residual.subfieldAdd("lagrange_multiplier", cs.spaceDim())
+ residual.subfieldAdd("displacement", cs.spaceDim(), residual.VECTOR)
+ residual.subfieldAdd("lagrange_multiplier", cs.spaceDim(), residual.VECTOR)
residual.subfieldsSetup()
residual.setupSolnChart()
residual.setupSolnDof(cs.spaceDim())
diff --git a/unittests/pytests/faults/TestFaultCohesiveImpulses.py b/unittests/pytests/faults/TestFaultCohesiveImpulses.py
index e9378d8..b95c914 100644
--- a/unittests/pytests/faults/TestFaultCohesiveImpulses.py
+++ b/unittests/pytests/faults/TestFaultCohesiveImpulses.py
@@ -325,8 +325,8 @@ class TestFaultCohesiveImpulses(unittest.TestCase):
fields.solutionName("dispIncr(t->t+dt)")
residual = fields.get("residual")
- residual.subfieldAdd("displacement", cs.spaceDim())
- residual.subfieldAdd("lagrange_multiplier", cs.spaceDim())
+ residual.subfieldAdd("displacement", cs.spaceDim(), residual.VECTOR)
+ residual.subfieldAdd("lagrange_multiplier", cs.spaceDim(), residual.VECTOR)
residual.subfieldsSetup()
residual.setupSolnChart()
residual.setupSolnDof(cs.spaceDim())
diff --git a/unittests/pytests/faults/TestFaultCohesiveKin.py b/unittests/pytests/faults/TestFaultCohesiveKin.py
index 4009635..5f720b1 100644
--- a/unittests/pytests/faults/TestFaultCohesiveKin.py
+++ b/unittests/pytests/faults/TestFaultCohesiveKin.py
@@ -344,8 +344,8 @@ class TestFaultCohesiveKin(unittest.TestCase):
fields.solutionName("dispIncr(t->t+dt)")
residual = fields.get("residual")
- residual.subfieldAdd("displacement", cs.spaceDim())
- residual.subfieldAdd("lagrange_multiplier", cs.spaceDim())
+ residual.subfieldAdd("displacement", cs.spaceDim(), residual.VECTOR)
+ residual.subfieldAdd("lagrange_multiplier", cs.spaceDim(), residual.VECTOR)
residual.subfieldsSetup()
residual.setupSolnChart()
residual.setupSolnDof(cs.spaceDim())
diff --git a/unittests/pytests/meshio/TestOutputSolnSubset.py b/unittests/pytests/meshio/TestOutputSolnSubset.py
index d0823b8..cd2f94f 100644
--- a/unittests/pytests/meshio/TestOutputSolnSubset.py
+++ b/unittests/pytests/meshio/TestOutputSolnSubset.py
@@ -52,6 +52,8 @@ class TestOutputSolnSubset(unittest.TestCase):
fields.add(name, "displacement")
fields.solutionName(name)
field = fields.get(name)
+ field.subfieldAdd("displacement", mesh.dimension(), field.VECTOR)
+ field.subfieldsSetup()
field.newSection(field.VERTICES_FIELD, mesh.dimension())
field.allocate()
More information about the CIG-COMMITS
mailing list