[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