[cig-commits] r15188 - in short/3D/PyLith/trunk: . examples/3d/tet4 libsrc/bc libsrc/faults libsrc/feassemble libsrc/materials libsrc/meshio libsrc/topology tests

brad at geodynamics.org brad at geodynamics.org
Wed Jun 10 15:57:14 PDT 2009


Author: brad
Date: 2009-06-10 15:57:12 -0700 (Wed, 10 Jun 2009)
New Revision: 15188

Added:
   short/3D/PyLith/trunk/tests/README
Modified:
   short/3D/PyLith/trunk/TODO
   short/3D/PyLith/trunk/examples/3d/tet4/mat_elastic.spatialdb
   short/3D/PyLith/trunk/examples/3d/tet4/mat_viscoelastic.spatialdb
   short/3D/PyLith/trunk/libsrc/bc/Neumann.cc
   short/3D/PyLith/trunk/libsrc/bc/Neumann_NEW.cc
   short/3D/PyLith/trunk/libsrc/faults/BruneSlipFn.cc
   short/3D/PyLith/trunk/libsrc/faults/ConstRateSlipFn.cc
   short/3D/PyLith/trunk/libsrc/faults/LiuCosSlipFn.cc
   short/3D/PyLith/trunk/libsrc/faults/StepSlipFn.cc
   short/3D/PyLith/trunk/libsrc/feassemble/CellGeometry.cc
   short/3D/PyLith/trunk/libsrc/feassemble/IntegratorElasticity.cc
   short/3D/PyLith/trunk/libsrc/materials/ElasticMaterial.cc
   short/3D/PyLith/trunk/libsrc/materials/Material.cc
   short/3D/PyLith/trunk/libsrc/materials/Metadata.cc
   short/3D/PyLith/trunk/libsrc/meshio/CellFilterAvg.cc
   short/3D/PyLith/trunk/libsrc/meshio/VertexFilterVecNorm.cc
   short/3D/PyLith/trunk/libsrc/topology/Field.cc
Log:
Better error trapping.

Modified: short/3D/PyLith/trunk/TODO
===================================================================
--- short/3D/PyLith/trunk/TODO	2009-06-10 22:56:37 UTC (rev 15187)
+++ short/3D/PyLith/trunk/TODO	2009-06-10 22:57:12 UTC (rev 15188)
@@ -2,6 +2,10 @@
 CURRENT ISSUES/PRIORITIES
 ======================================================================
 
+----------------------------------------------------------------------
+RELEASE 1.4
+----------------------------------------------------------------------
+
 Matt
   Memory model
     C++ Objects with fields
@@ -26,9 +30,7 @@
   ArbitratySlipFn (final slip, start time)
   full-scale testing
   cleanup
-  symmetric matrix (preconditioner? sub_pc_factor_shift_nonzero_positive_definite)
 
-
 Charles
   3-D Power-law rheology
     libtests
@@ -38,37 +40,22 @@
   Generalized Maxwell materials (initial stress/strain)
 
 
--1. Fix Tabrez's bug. [Matt]
+----------------------------------------------------------------------
 
-3. Full-scale tests (few 1-D, 2-D, and 3-D)
+1. Tidy up
 
-    1-D
-      1. axial disp [DONE]
-      2. dislocation [DONE]
+    Add simple stableTimeStep() for elastic materials.
 
-    2-D
-      1. axial/shear (DirichletBC)
-      2. axial/shear (DirichletBC, parallel)
-      3. axial traction (Neumann, DirichletBC)
-      4. single fault (static)
-      5. single fault (quasi-static w/multiple ruptures)
-      6. single fault (dynamic)
-      7. two fault (static)
-      8. two fault (static, parallel)
+    Switch Components to PetscComponents.
+      Add _cleanup() to components to deallocate local data structures.
+      Add cleanup() to non-components to deallocate local data structures.
 
-    3-D
-      1. axial/shear (DirichletBC)
-      2. axial/shear (DirichletBC, parallel)
-      3. single fault (static)
-      4. single fault (Savage/Prescott like)
-      5. single fault (dynamic)
-      6. two fault (static)
-      7. two fault (static, parallel)
-      8. gravity w/initial stress and strain 
+    recursive output of parameters in playpen
 
-    Gravity with faults, Neumann BC.
+    Add check before calling newSection() when want to enforce at
+    least 1 value.
 
-4. Add missing unit tests
+2. Add missing unit tests
 
     libtests/topology/TestMesh::testNondimensionalize()
 
@@ -129,45 +116,8 @@
       MemoryLogger.logMesh()
       MemoryLogger.logMaterial()
 
-5. Tidy up
+3. Update manual for version 1.4 [Brad and Charles]
 
-    Replace memcpy() calls with loops.
-
-    How do we determine the orientation for a fault in a 1-D mesh? We
-    assume normaldir is +1.0, but cohesive cells could be created so
-    that the fault has a normaldir of -1.0. If the normaldir is -1.0,
-    then we need to flip the orientation field to get the correct
-    sense of slip.
-
-    Add simple stableTimeStep() for elastic materials.
-
-    Cleanup logging. Constraints and Integrators should log at the C++
-    level using the C++ EventLogger. Add finer grain logging at C++
-    level as in ElasticityImplicit.
-
-    Update journaling.
-
-    Add
-      throw std::logic_error(message);
-    after assert(0) to insure error is trapped.
-
-    Eliminate use of Inventory class.
-
-    Switch Components to PetscComponents.
-      Add _cleanup() to components to deallocate local data structures.
-      Add cleanup() to non-components to deallocate local data structures.
-
-    Create createModuleObj() methods to Python objects as standard way
-    of creating handle to C++ object (not necessary in abstract base
-    classes).
-
-    Add check before calling newSection() when want to enforce at
-    least 1 value.
-
-  Cleanup SlipTimeFn tests (refactor test/initialize stuff)
-
-13. Update manual for version 1.4 [Brad and Charles]
-
   Figure 2.2: dependencies (Pyrex->SWIG)
 
   3.3 and 3.4 update for solution increment implementation
@@ -195,6 +145,12 @@
 
     Add Savage-Prescott
   
+  Extending PyLith
+
+    Constitutive models
+
+    Material properties
+
   File Formats
 
     Time History
@@ -208,39 +164,75 @@
   * Material
     * initial stress, strain, and state variables
 
--- Release (v1.4) --
+4. Check Tabrez's problems.
 
-11. Savage-Presscott benchmark
+
+----------------------------------------------------------------------
+POST RELEASE 1.4
+----------------------------------------------------------------------
+
+1. Savage-Presscott benchmark
     Tet mesh
 
-12. Analytic BC for reverse-slip benchmark [Charles or Brad]
+2. Analytic BC for reverse-slip benchmark [Charles or Brad]
     a. Create BC for CUBIT mesh.
     b. Create BC for LaGriT mesh.
     c. Run benchmarks.
     d. Generate analytic solutions.
     e. Tabulate results.
 
-2. Nondimensionalization
+3. Tidy up
 
+  Replace memcpy() calls with loops.
+
+  Cleanup logging. Constraints and Integrators should log at the C++
+  level using the C++ EventLogger. Add finer grain logging at C++
+  level as in ElasticityImplicit.
+
+  Update journaling.
+
+  Eliminate use of Inventory class.
+
+  Switch Components to PetscComponents.
+    Add _cleanup() to components to deallocate local data structures.
+    Add cleanup() to non-components to deallocate local data structures.
+
+  Create createModuleObj() methods to Python objects as standard way
+  of creating handle to C++ object (not necessary in abstract base
+  classes).
+
+  Create createModuleObj() methods to Python objects as standard way
+  of creating handle to C++ object (not necessary in abstract base
+  classes).
+
+  Add check before calling newSection() when want to enforce at
+  least 1 value.
+
+  Cleanup SlipTimeFn tests (refactor test/initialize stuff)
+
+
+----------------------------------------------------------------------
+RELEASE 1.5
+----------------------------------------------------------------------
+
+1. Nondimensionalization
+
   Ask constraints if a block matrix is okay. If okay and matrix type
   is "unknown" (not set by user), then set block size. Do this in Python.
 
-7. 2-D Plane strain Maxwell viscoelastic rheology [Charles]
+2. 2-D Plane strain Maxwell viscoelastic rheology [Charles]
 
-8. 2-D Plane strain Generalized Maxwell viscoelastic rheology [Charles]
+3. 2-D Plane strain Generalized Maxwell viscoelastic rheology [Charles]
 
-9. 2-D Power-law rheology [Charles]
+4. 2-D Power-law rheology [Charles]
    2D viscoelastic models for plane strain
 
-10. Initial stress, strain, state variables for inelastic models [Charles]
+5. Initial stress, strain, state variables for inelastic models [Charles]
 
+6. Manual
 
-  Manual
-
     * Cleanup notation and discussion of inelastic materials
--- Release (v1.5) --
 
-
 Modularize output? [Matt]
 
 Fault friction
@@ -267,21 +259,28 @@
   ifstream is insufficient. Need state of istringstream buffer, but it
   is often !good() at eof(). Test of !good() and !eof()?
 
-* FixedDOFDB
+* ZeroDispDB
 
-  The default BC is FixedDOF which hardwires the values in a UniformDB
+  The default BC is ZeroDispDB which hardwires the values in a UniformDB
   to 0. No error message is generated if the user sets the values or
   data properties and they are overwritten by the hardwired values. A
-  possible solution is for FixedDOF to use a C++ UniformDB but not
+  possible solution is for ZeroDispDB to use a C++ UniformDB but not
   inherit from the Python UniformDB.
 
+* Fault orientatin in 1-D mesh
+
+  How do we determine the orientation for a fault in a 1-D mesh? We
+  assume normaldir is +1.0, but cohesive cells could be created so
+  that the fault has a normaldir of -1.0. If the normaldir is -1.0,
+  then we need to flip the orientation field to get the correct
+  sense of slip.
+
+
+
 ======================================================================
 MISC PRIORITIES (Brad)
 ======================================================================
 
-1. Want to take advantage of symmetry and block structure of Jacobian
-   matrix when possible.
-
 2. Additional unit tests
   a. FaultCohesive
     i. Add checking of faultMesh [not currently used]
@@ -305,13 +304,20 @@
 Release 1.4
 ----------------------------------------------------------------------
 
-  1. Interface w/PETSc nonlinear solvers
+  1. Nonlinear bulk rheologies
 
-  3. Nonlinear bulk rheologies
-
      Power-law viscoelastic material
-  4. Fault constitutive models
 
+  2. Time dependent BCs
+
+  3. Improved PC for kinematic faults
+
+----------------------------------------------------------------------
+Release 1.5
+----------------------------------------------------------------------
+
+  1. Fault constitutive models
+
      Linear slip-weakening
      Rate- and state-friction
      Uniform friction
@@ -322,18 +328,6 @@
          Fault constitutive values (time histories)
          Orientation , Fault constitutive parameters (diagnostic)
 
-  5. Uniform global refinement
-
-  6. Improved PC for kinematic faults
-
-  Improved support for spherical geometry in user-interface
-
-----------------------------------------------------------------------
-Release 1.5
-----------------------------------------------------------------------
-
-  1. Time dependent BCs
-
   2. Large deformations
 
   3. Finite strain
@@ -346,6 +340,10 @@
        Update quadrature to use CellGeometry refPtsToGlobal() and
        jacobian() Remove CellGeometry jacobian(double_array)
 
+  5. Uniform global refinement
+
+  6. Improved support for spherical geometry in user-interface
+
 ----------------------------------------------------------------------
 Release 1.6
 ----------------------------------------------------------------------

Modified: short/3D/PyLith/trunk/examples/3d/tet4/mat_elastic.spatialdb
===================================================================
--- short/3D/PyLith/trunk/examples/3d/tet4/mat_elastic.spatialdb	2009-06-10 22:56:37 UTC (rev 15187)
+++ short/3D/PyLith/trunk/examples/3d/tet4/mat_elastic.spatialdb	2009-06-10 22:57:12 UTC (rev 15188)
@@ -7,7 +7,7 @@
 SimpleDB {
   num-values = 3 // number of material property values
   value-names =  density vs vp // names of the material property values
-  value-units =  kg/m**3  m/s  m/s // units (conversions not supported)
+  value-units =  kg/m**3  m/s  m/s
   num-locs = 1 // number of locations
   data-dim = 0
   space-dim = 3

Modified: short/3D/PyLith/trunk/examples/3d/tet4/mat_viscoelastic.spatialdb
===================================================================
--- short/3D/PyLith/trunk/examples/3d/tet4/mat_viscoelastic.spatialdb	2009-06-10 22:56:37 UTC (rev 15187)
+++ short/3D/PyLith/trunk/examples/3d/tet4/mat_viscoelastic.spatialdb	2009-06-10 22:57:12 UTC (rev 15188)
@@ -10,7 +10,7 @@
 SimpleDB {
   num-values = 4 // number of material property values
   value-names =  density vs vp viscosity // names of the material property values
-  value-units =  kg/m**3  m/s  m/s Pa*s // units (conversions not supported)
+  value-units =  kg/m**3  m/s  m/s Pa*s
   num-locs = 1 // number of locations
   data-dim = 0
   space-dim = 3
@@ -23,8 +23,8 @@
 // (1) x coordinate (m)
 // (2) y coordinate (m)
 // (3) z coordinate (m)
-// (4) density (kg/m^3)
+// (4) density (kg/m**3)
 // (5) vs (m/s)
 // (6) vp (m/s)
-// (7) viscosity (Pa-s)
+// (7) viscosity (Pa*s)
 0.0  0.0  0.0   2500.0  3000.0  5291.502622129181 7.10046e+19

Modified: short/3D/PyLith/trunk/libsrc/bc/Neumann.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/bc/Neumann.cc	2009-06-10 22:56:37 UTC (rev 15187)
+++ short/3D/PyLith/trunk/libsrc/bc/Neumann.cc	2009-06-10 22:57:12 UTC (rev 15188)
@@ -132,7 +132,9 @@
       break;
     } // case 3
     default :
+      std::cerr << "Bad spatial dimension '" << spaceDim << "'." << std::endl;
       assert(0);
+      throw std::logic_error("Bad spatial dimension in Neumann.");
     } // switch
 
   // Containers for database query results and quadrature coordinates in

Modified: short/3D/PyLith/trunk/libsrc/bc/Neumann_NEW.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/bc/Neumann_NEW.cc	2009-06-10 22:56:37 UTC (rev 15187)
+++ short/3D/PyLith/trunk/libsrc/bc/Neumann_NEW.cc	2009-06-10 22:57:12 UTC (rev 15188)
@@ -112,7 +112,9 @@
       break;
     } // case 3
     default :
+      std::cerr << "Bad spatial dimension '" << spaceDim << "'." << std::endl;
       assert(0);
+      throw std::logic_error("Bad spatial dimension in Neumann.");
     } // switch
 
   // Containers for database query results and quadrature coordinates in

Modified: short/3D/PyLith/trunk/libsrc/faults/BruneSlipFn.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/BruneSlipFn.cc	2009-06-10 22:56:37 UTC (rev 15187)
+++ short/3D/PyLith/trunk/libsrc/faults/BruneSlipFn.cc	2009-06-10 22:57:12 UTC (rev 15188)
@@ -132,7 +132,9 @@
       break;
     } // case 3
     default :
+      std::cerr << "Bad spatial dimension '" << spaceDim << "'." << std::endl;
       assert(0);
+      throw std::logic_error("Bad spatial dimension in BruneSlipFn.");
     } // switch
 
   _dbSlipTime->open();

Modified: short/3D/PyLith/trunk/libsrc/faults/ConstRateSlipFn.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/ConstRateSlipFn.cc	2009-06-10 22:56:37 UTC (rev 15187)
+++ short/3D/PyLith/trunk/libsrc/faults/ConstRateSlipFn.cc	2009-06-10 22:57:12 UTC (rev 15188)
@@ -121,7 +121,9 @@
       break;
     } // case 3
     default :
+      std::cerr << "Bad spatial dimension '" << spaceDim << "'." << std::endl;
       assert(0);
+      throw std::logic_error("Bad spatial dimension in ConstRateSlipFn.");
     } // switch
 
   _dbSlipTime->open();

Modified: short/3D/PyLith/trunk/libsrc/faults/LiuCosSlipFn.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/LiuCosSlipFn.cc	2009-06-10 22:56:37 UTC (rev 15187)
+++ short/3D/PyLith/trunk/libsrc/faults/LiuCosSlipFn.cc	2009-06-10 22:57:12 UTC (rev 15188)
@@ -132,7 +132,9 @@
       break;
     } // case 3
     default :
+      std::cerr << "Bad spatial dimension '" << spaceDim << "'." << std::endl;
       assert(0);
+      throw std::logic_error("Bad spatial dimension in LiuCosSlipFn.");
     } // switch
 
   _dbSlipTime->open();

Modified: short/3D/PyLith/trunk/libsrc/faults/StepSlipFn.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/StepSlipFn.cc	2009-06-10 22:56:37 UTC (rev 15187)
+++ short/3D/PyLith/trunk/libsrc/faults/StepSlipFn.cc	2009-06-10 22:57:12 UTC (rev 15188)
@@ -119,7 +119,9 @@
       break;
     } // case 3
     default :
+      std::cerr << "Bad spatial dimension '" << spaceDim << "'." << std::endl;
       assert(0);
+      throw std::logic_error("Bad spatial dimension in StepSlipFn.");
     } // switch
 
   _dbSlipTime->open();

Modified: short/3D/PyLith/trunk/libsrc/feassemble/CellGeometry.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/CellGeometry.cc	2009-06-10 22:56:37 UTC (rev 15187)
+++ short/3D/PyLith/trunk/libsrc/feassemble/CellGeometry.cc	2009-06-10 22:57:12 UTC (rev 15188)
@@ -19,6 +19,7 @@
 #include <cstring> // USES memcpy()
 
 #include <iostream> // USES std::cerr
+#include <stdexcept> // USES std::logic_error
 
 // ----------------------------------------------------------------------
 // Default constructor.
@@ -48,6 +49,7 @@
 	<< "Could not find orientation function for cell with shape "
 	<< shape << ".";
       assert(0);
+      throw std::logic_error("Bad shape in CellGeometry.");
     } // switch
 } // constructor
 
@@ -92,6 +94,7 @@
       std::cerr 
 	<< "Could not find dimension of cell with shape " << _shape << ".";
       assert(0);
+      throw std::logic_error("Bad shape in CellGeometry.");
     } // switch
   return dim;
 } // cellDim
@@ -127,6 +130,7 @@
 	<< "Could not find number of corners for cell with shape "
 	<< _shape << ".";
       assert(0);
+      throw std::logic_error("Bad shape in CellGeometry.");
     } // switch
   return corners;
 } // numCorners

Modified: short/3D/PyLith/trunk/libsrc/feassemble/IntegratorElasticity.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/IntegratorElasticity.cc	2009-06-10 22:56:37 UTC (rev 15187)
+++ short/3D/PyLith/trunk/libsrc/feassemble/IntegratorElasticity.cc	2009-06-10 22:57:12 UTC (rev 15188)
@@ -148,7 +148,9 @@
       const char* queryNames[] = { "x", "y", "z"};
       _gravityField->queryVals(queryNames, spaceDim);
     } else {
+      std::cerr << "Bad spatial dimension '" << spaceDim << "'." << std::endl;
       assert(0);
+      throw std::logic_error("Bad spatial dimension in IntegratorElasticity.");
     } // else
   } // if
 } // initialize
@@ -184,8 +186,11 @@
   } else if (3 == cellDim) {
     calcTotalStrainFn = 
       &pylith::feassemble::IntegratorElasticity::_calcTotalStrain3D;
-  } else
-    assert(0);
+  } else {
+      std::cerr << "Bad cell dimension '" << cellDim << "'." << std::endl;
+      assert(0);
+      throw std::logic_error("Bad cell dimension in IntegratorElasticity.");
+  } // else
 
   // Allocate arrays for cell data.
   double_array dispCell(numBasis*spaceDim);
@@ -439,8 +444,11 @@
   } else if (3 == cellDim) {
     calcTotalStrainFn = 
       &pylith::feassemble::IntegratorElasticity::_calcTotalStrain3D;
-  } else
-    assert(0);
+  } else {
+      std::cerr << "Bad cell dimension '" << cellDim << "'." << std::endl;
+      assert(0);
+      throw std::logic_error("Bad cell dimension in IntegratorElasticity.");
+  } // else
   
   // Allocate arrays for cell data.
   double_array dispCell(numBasis*spaceDim);

Modified: short/3D/PyLith/trunk/libsrc/materials/ElasticMaterial.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/ElasticMaterial.cc	2009-06-10 22:56:37 UTC (rev 15187)
+++ short/3D/PyLith/trunk/libsrc/materials/ElasticMaterial.cc	2009-06-10 22:57:12 UTC (rev 15188)
@@ -428,7 +428,9 @@
       break;
     } // case 3
     default :
+      std::cerr << "Bad dimension '" << dimension() << "'." << std::endl;
       assert(0);
+      throw std::logic_error("Unknown dimension in elastic material.");
     } // switch
   
   assert(0 != _normalizer);
@@ -570,7 +572,9 @@
       break;
     } // case 3
     default :
+      std::cerr << "Bad dimension '" << dimension() << "'." << std::endl;
       assert(0);
+      throw std::logic_error("Unknown dimension in elastic material.");
     } // switch
   
   assert(0 != _normalizer);

Modified: short/3D/PyLith/trunk/libsrc/materials/Material.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/Material.cc	2009-06-10 22:56:37 UTC (rev 15187)
+++ short/3D/PyLith/trunk/libsrc/materials/Material.cc	2009-06-10 22:57:12 UTC (rev 15188)
@@ -478,7 +478,7 @@
     case topology::FieldBase::MULTI_TENSOR:
     case topology::FieldBase::MULTI_OTHER:
     default :
-      std::cerr << "Bad vector field type for Material." << std::endl;
+      std::cerr << "Bad vector field type '" << fieldType << "'." << std::endl;
       assert(0);
       throw std::logic_error("Bad vector field type for Material.");
     } // switch

Modified: short/3D/PyLith/trunk/libsrc/materials/Metadata.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/Metadata.cc	2009-06-10 22:56:37 UTC (rev 15187)
+++ short/3D/PyLith/trunk/libsrc/materials/Metadata.cc	2009-06-10 22:57:12 UTC (rev 15188)
@@ -14,9 +14,10 @@
 
 #include "Metadata.hh" // implementation of class methods
 
+#include <cassert> // USES assert()
 #include <sstream> // USES std::ostringstream
 #include <stdexcept> // USES std::runtime_error
-#include <cassert> // USES assert()
+#include <iostream> // USES std::cerr
 
 // ----------------------------------------------------------------------
 // Constructor.
@@ -112,7 +113,9 @@
     } // STATEVAR
 
     default :
+      std::cerr << "Bad value type '" << valueType << "'." << std::endl;
       assert(0);
+      throw std::logic_error("Unknown valueType in Metadata.");
     } // switch
 
   return fiberDim;
@@ -154,7 +157,9 @@
     } // STATEVAR
       
     default :
+      std::cerr << "Bad value type '" << valueType << "'." << std::endl;
       assert(0);
+      throw std::logic_error("Unknown valueType in Metadata.");
     } // switch
   
   return fieldType;

Modified: short/3D/PyLith/trunk/libsrc/meshio/CellFilterAvg.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/meshio/CellFilterAvg.cc	2009-06-10 22:56:37 UTC (rev 15187)
+++ short/3D/PyLith/trunk/libsrc/meshio/CellFilterAvg.cc	2009-06-10 22:57:12 UTC (rev 15188)
@@ -124,7 +124,8 @@
     case topology::FieldBase::TENSOR:
     case topology::FieldBase::OTHER:
     default :
-      std::cerr << "Bad vector field type for CellFilterAvg." << std::endl;
+      std::cerr << "Bad vector field type '" << fieldIn.vectorFieldType()
+		<< "'." << std::endl;
       assert(0);
       throw std::logic_error("Bad vector field type for CellFilterAvg.");
     } // switch

Modified: short/3D/PyLith/trunk/libsrc/meshio/VertexFilterVecNorm.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/meshio/VertexFilterVecNorm.cc	2009-06-10 22:56:37 UTC (rev 15187)
+++ short/3D/PyLith/trunk/libsrc/meshio/VertexFilterVecNorm.cc	2009-06-10 22:57:12 UTC (rev 15188)
@@ -96,8 +96,10 @@
       case topology::FieldBase::TENSOR:
       case topology::FieldBase::OTHER:
       default :
-	std::cerr << "Bad vector field type for VertexFilterVecNorm." << std::endl;
+	std::cerr << "Bad vector field type '" << fieldIn.vectorFieldType()
+		  << "'." << std::endl;
 	assert(0);
+	throw std::logic_error("Bad vector field type in VertexFilterVecNorm.");
       } // switch
   } // if
   logger.stagePop();

Modified: short/3D/PyLith/trunk/libsrc/topology/Field.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/Field.cc	2009-06-10 22:56:37 UTC (rev 15187)
+++ short/3D/PyLith/trunk/libsrc/topology/Field.cc	2009-06-10 22:57:12 UTC (rev 15188)
@@ -195,6 +195,7 @@
   else {
     std::cerr << "Unknown value for DomainEnum: " << domain << std::endl;
     assert(0);
+    throw std::logic_error("Bad domain enum in Field.");
   } // else
 
   newSection(points, fiberDim);
@@ -557,6 +558,7 @@
       std::cerr << "Unknown vector field value '" << _vecFieldType
 		<< "'." << std::endl;
       assert(0);
+      throw std::logic_error("Bad vector field type in Field.");
     } // switch
 
   std::cout << "Viewing field '" << _label << "' "<< label << ".\n"

Added: short/3D/PyLith/trunk/tests/README
===================================================================
--- short/3D/PyLith/trunk/tests/README	                        (rev 0)
+++ short/3D/PyLith/trunk/tests/README	2009-06-10 22:57:12 UTC (rev 15188)
@@ -0,0 +1,69 @@
+Full-scale tests of PyLith.
+
+
+PyLith features:
+
+  Problem dimension: 1-D, 2-D, 3-D
+  Boundary conditions
+    Dirichlet
+    Point force
+    Neumann
+    Absorbing dampers
+  Faults
+
+
+
+----------------------------------------------------------------------
+1-D tests
+----------------------------------------------------------------------
+
+line2 (linear cells)
+
+  * axialextension
+
+    - Dirichlet w/initial displacement
+
+  * dislocation
+
+    - Dirichlet w/initial displacement
+    - Fault slip (1 fault, 1 event)
+
+line3 (quadratic cells)
+
+  * axialextension
+
+    - Dirichlet w/initial displacement
+
+  * dislocation
+
+    - Dirichlet w/initial displacement
+    - Fault slip (1 fault, 1 event)
+
+----------------------------------------------------------------------
+2-D tests
+----------------------------------------------------------------------
+
+1. axial/shear (DirichletBC)
+2. axial/shear (DirichletBC, parallel)
+3. axial traction (Neumann, DirichletBC)
+4. single fault (static)
+5. single fault (quasi-static w/multiple ruptures)
+6. single fault (dynamic)
+7. two fault (static)
+8. two fault (static, parallel)
+
+----------------------------------------------------------------------
+3-D tests
+----------------------------------------------------------------------
+
+1. axial/shear (DirichletBC)
+2. axial/shear (DirichletBC, parallel)
+3. single fault (static)
+4. single fault (Savage/Prescott like)
+5. single fault (dynamic)
+6. two fault (static)
+7. two fault (static, parallel)
+8. gravity w/initial stress and strain 
+
+Gravity with faults, Neumann BC.
+



More information about the CIG-COMMITS mailing list