[cig-commits] r6908 - in short/3D/PyLith/trunk: . libsrc libsrc/bc pylith/bc

brad at geodynamics.org brad at geodynamics.org
Wed May 16 15:09:21 PDT 2007


Author: brad
Date: 2007-05-16 15:09:21 -0700 (Wed, 16 May 2007)
New Revision: 6908

Added:
   short/3D/PyLith/trunk/libsrc/bc/
   short/3D/PyLith/trunk/libsrc/bc/BoundaryCondition.cc
   short/3D/PyLith/trunk/libsrc/bc/BoundaryCondition.hh
   short/3D/PyLith/trunk/libsrc/bc/BoundaryCondition.icc
   short/3D/PyLith/trunk/libsrc/bc/Dirichlet.cc
   short/3D/PyLith/trunk/libsrc/bc/Dirichlet.hh
   short/3D/PyLith/trunk/libsrc/bc/Dirichlet.icc
   short/3D/PyLith/trunk/libsrc/bc/Makefile.am
Modified:
   short/3D/PyLith/trunk/TODO
   short/3D/PyLith/trunk/configure.ac
   short/3D/PyLith/trunk/libsrc/Makefile.am
   short/3D/PyLith/trunk/pylith/bc/BoundaryCondition.py
   short/3D/PyLith/trunk/pylith/bc/Dirichlet.py
Log:
Worked on implementing Dirichlet boundary conditions.

Modified: short/3D/PyLith/trunk/TODO
===================================================================
--- short/3D/PyLith/trunk/TODO	2007-05-16 22:08:47 UTC (rev 6907)
+++ short/3D/PyLith/trunk/TODO	2007-05-16 22:09:21 UTC (rev 6908)
@@ -13,7 +13,13 @@
   dimensions, we probably want to allow it in MeshIO, just not in the
   simulation where we don't support it.
 
-1. Add dualBasis to Quadrature.
+1. Implement Dirichlet boundary conditions
+   a. C++
+   b. Python
+   c. C++ unit tests
+   d. Python unit tests
+
+2. Add dualBasis to Quadrature.
    a. Python
      ReferenceCell
      FIATSimplex
@@ -23,12 +29,6 @@
    c. C++ unit tests
    d. Python unit tests
 
-2. Implement Dirichlet boundary conditions
-   a. C++
-   b. Python
-   c. C++ unit tests
-   d. Python unit tests
-
 3. Implement faults for kinematic source
    a. Creation of cohesive cells
      i. Add tests for interpolated meshes.

Modified: short/3D/PyLith/trunk/configure.ac
===================================================================
--- short/3D/PyLith/trunk/configure.ac	2007-05-16 22:08:47 UTC (rev 6907)
+++ short/3D/PyLith/trunk/configure.ac	2007-05-16 22:09:21 UTC (rev 6908)
@@ -201,6 +201,7 @@
 AC_CONFIG_FILES([Makefile
 		pylith/Makefile
                 libsrc/Makefile
+		libsrc/bc/Makefile
                 libsrc/feassemble/Makefile
 		libsrc/faults/Makefile
                 libsrc/materials/Makefile

Modified: short/3D/PyLith/trunk/libsrc/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/libsrc/Makefile.am	2007-05-16 22:08:47 UTC (rev 6907)
+++ short/3D/PyLith/trunk/libsrc/Makefile.am	2007-05-16 22:09:21 UTC (rev 6908)
@@ -12,15 +12,18 @@
 
 SUBDIRS = \
 	utils \
+	topology \
+	meshio \
 	feassemble \
+	bc \
 	faults \
-	materials \
-	meshio \
-	topology
+	materials
 
 lib_LTLIBRARIES = libpylith.la
 
 libpylith_la_SOURCES = \
+	bc/BoundaryCondition.cc \
+	bc/Dirichlet.cc \
 	faults/BruneSlipFn.cc \
 	faults/CohesiveTopology.cc \
 	faults/EqKinSrc.cc \

Added: short/3D/PyLith/trunk/libsrc/bc/BoundaryCondition.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/bc/BoundaryCondition.cc	2007-05-16 22:08:47 UTC (rev 6907)
+++ short/3D/PyLith/trunk/libsrc/bc/BoundaryCondition.cc	2007-05-16 22:09:21 UTC (rev 6908)
@@ -0,0 +1,73 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "BoundaryCondition.hh" // implementation of object methods
+
+// ----------------------------------------------------------------------
+// Default constructor.
+pylith::bc::BoundaryCondition::BoundaryCondition(void) :
+  _id(0),
+  _label(""),
+  _db(0)
+{ // constructor
+} // constructor
+
+// ----------------------------------------------------------------------
+// Destructor.
+pylith::bc::BoundaryCondition::~BoundaryCondition(void)
+{ // destructor
+  _db = 0;
+} // destructor
+
+// ----------------------------------------------------------------------
+// Set constrained degrees of freedom in field.
+void
+pylith::bc::BoundaryCondition::setConstraints(
+				     const ALE::Obj<real_section_type>& field,
+				     const ALE::Obj<ALE::Mesh>& mesh)
+{ // setConstraints
+} // setConstraints
+
+// ----------------------------------------------------------------------
+// Set constrained degrees of freedom in field.
+void
+pylith::bc::BoundaryCondition::integrateJacobian(
+				     PetscMat* jacobian,
+				     const ALE::Obj<real_section_type>& field,
+				     const ALE::Obj<ALE::Mesh>& mesh)
+{ // integrateJacobian
+} // integrateJacobian
+
+// ----------------------------------------------------------------------
+// Set constrained degrees of freedom in field.
+void
+pylith::bc::BoundaryCondition::integrateResidual(
+			      const ALE::Obj<real_section_type>& residual,
+			      const ALE::Obj<real_section_type>& fieldT,
+			      const ALE::Obj<real_section_type>& fieldTmdt,
+			      const ALE::Obj<ALE::Mesh>& mesh)
+{ // integrateResidual
+} // integrateResidual
+
+// ----------------------------------------------------------------------
+// Set values in field.
+void
+pylith::bc::BoundaryCondition::setField(const double t,
+					const ALE::Obj<real_section_type>& field,
+					const ALE::Obj<ALE::Mesh>& mesh)
+{ // setField
+} // setField
+
+
+// End of file 

Added: short/3D/PyLith/trunk/libsrc/bc/BoundaryCondition.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/bc/BoundaryCondition.hh	2007-05-16 22:08:47 UTC (rev 6907)
+++ short/3D/PyLith/trunk/libsrc/bc/BoundaryCondition.hh	2007-05-16 22:09:21 UTC (rev 6908)
@@ -0,0 +1,168 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/** @file libsrc/bc/BoundaryCondition.hh
+ *
+ * @brief C++ abstract base class for BoundaryCondition object.
+ *
+ * Interface definition for boundary conditions.
+ */
+
+#if !defined(pylith_bc_boundarycondition_hh)
+#define pylith_bc_boundarycondition_hh
+
+#include "pylith/utils/sievetypes.hh" // USES PETSc Mesh, real_section_type
+#include "pylith/utils/petscfwd.h" // USES PETScMat
+
+#include <string> // HASA std::string
+
+/// Namespace for pylith package
+namespace pylith {
+  namespace bc {
+    class BoundaryCondition;
+    class TestBoundaryCondition; // unit testing
+  } // bc
+} // pylith
+
+/// Namespace for spatialdata package
+namespace spatialdata {
+  namespace geocoords {
+    class CoordSys;
+  } // geocoords
+
+  namespace spatialdb {
+    class SpatialDB;
+  } // spatialdb
+} // spatialdata
+
+/// C++ abstract base class for BoundaryCondition object.
+class pylith::bc::BoundaryCondition
+{ // class BoundaryCondition
+  friend class TestBoundaryCondition; // unit testing
+
+  // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+  /// Default constructor.
+  BoundaryCondition(void);
+
+  /// Destructor.
+  virtual
+  ~BoundaryCondition(void);
+
+  /** Set identifier of fault.
+   *
+   * @param value BoundaryCondition identifier
+   */
+  void id(const int value);
+
+  /** Get identifier of fault.
+   *
+   * @returns BoundaryCondition identifier
+   */
+  int id(void) const;
+
+  /** Set label of fault.
+   *
+   * @param value Label of fault
+   */
+  void label(const char* value);
+
+  /** Get label of fault.
+   *
+   * @returns Label of fault
+   */
+  const std::string& label(void) const;
+
+  /** Set database for boundary condition parameters.
+   *
+   * @param db Spatial database
+   */
+  void db(spatialdata::spatialdb::SpatialDB* const db);
+
+  /** Initialize boundary condition.
+   *
+   * @param mesh PETSc mesh
+   * @param cs Coordinate system for mesh
+   */
+  virtual
+  void initialize(const ALE::Obj<ALE::Mesh>& mesh,
+		  const spatialdata::geocoords::CoordSys* cs) = 0;
+
+  /** Set constrained degrees of freedom in field.
+   *
+   * @param field Solution field
+   * @param mesh PETSc mesh
+   */
+  virtual
+  void setConstraints(const ALE::Obj<real_section_type>& field,
+		      const ALE::Obj<ALE::Mesh>& mesh);
+
+  /** Set constrained degrees of freedom in field.
+   *
+   * @param jacobian Matrix for Jacobian of system
+   * @param field Solution field
+   * @param mesh PETSc mesh
+   */
+  virtual
+  void integrateJacobian(PetscMat* jacobian,
+			 const ALE::Obj<real_section_type>& field,
+			 const ALE::Obj<ALE::Mesh>& mesh);
+
+  /** Set constrained degrees of freedom in field.
+   *
+   * @param residual Residual field
+   * @param fieldT Solution field at time t
+   * @param fieldTmdt Solution field at time t-dt
+   * @param mesh PETSc mesh
+   */
+  virtual
+  void integrateResidual(const ALE::Obj<real_section_type>& residual,
+			 const ALE::Obj<real_section_type>& fieldT,
+			 const ALE::Obj<real_section_type>& fieldTmdt,
+			 const ALE::Obj<ALE::Mesh>& mesh);
+
+  /** Set values in field.
+   *
+   * @param t Current time
+   * @param field Solution field
+   * @param mesh PETSc mesh
+   */
+  virtual
+  void setField(const double t,
+		const ALE::Obj<real_section_type>& field,
+		const ALE::Obj<ALE::Mesh>& mesh);
+
+  // NOT IMPLEMENTED ////////////////////////////////////////////////////
+private :
+
+  /// Not implemented
+  BoundaryCondition(const BoundaryCondition& m);
+
+  /// Not implemented
+  const BoundaryCondition& operator=(const BoundaryCondition& m);
+
+  // PROTECTED MEMBERS //////////////////////////////////////////////////
+protected :
+
+  int _id; ///< BoundaryCondition identifier
+  std::string _label; ///< Label of fault
+  spatialdata::spatialdb::SpatialDB* _db; ///< Spatial database w/parameters
+
+}; // class BoundaryCondition
+
+#include "BoundaryCondition.icc" // inline methods
+
+#endif // pylith_bc_boundarycondition_hh
+
+
+// End of file 

Added: short/3D/PyLith/trunk/libsrc/bc/BoundaryCondition.icc
===================================================================
--- short/3D/PyLith/trunk/libsrc/bc/BoundaryCondition.icc	2007-05-16 22:08:47 UTC (rev 6907)
+++ short/3D/PyLith/trunk/libsrc/bc/BoundaryCondition.icc	2007-05-16 22:09:21 UTC (rev 6908)
@@ -0,0 +1,53 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#if !defined(pylith_bc_boundarycondition_hh)
+#error "BoundaryCondition.icc can only be included from BoundaryCondition.hh"
+#endif
+
+// Set identifier of fault.
+inline
+void
+pylith::bc::BoundaryCondition::id(const int value) {
+  _id = value;
+}
+
+// Get identifier of fault.
+inline
+int
+pylith::bc::BoundaryCondition::id(void) const {
+  return _id;
+}
+
+// Set name of fault.
+inline
+void
+pylith::bc::BoundaryCondition::label(const char* value) {
+  _label = value;
+}
+
+// Get label of fault.
+inline
+const std::string&
+pylith::bc::BoundaryCondition::label(void) const {
+  return _label;
+}
+
+// Set database for boundary condition parameters.
+inline
+void
+pylith::bc::BoundaryCondition::db(spatialdata::spatialdb::SpatialDB* const db) {
+  _db = db;
+}
+
+
+// End of file 

Added: short/3D/PyLith/trunk/libsrc/bc/Dirichlet.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/bc/Dirichlet.cc	2007-05-16 22:08:47 UTC (rev 6907)
+++ short/3D/PyLith/trunk/libsrc/bc/Dirichlet.cc	2007-05-16 22:09:21 UTC (rev 6908)
@@ -0,0 +1,55 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "Dirichlet.hh" // implementation of object methods
+
+// ----------------------------------------------------------------------
+// Default constructor.
+pylith::bc::Dirichlet::Dirichlet(void)
+{ // constructor
+} // constructor
+
+// ----------------------------------------------------------------------
+// Destructor.
+pylith::bc::Dirichlet::~Dirichlet(void)
+{ // destructor
+} // destructor
+
+// ----------------------------------------------------------------------
+// Initialize boundary condition.
+void
+pylith::bc::Dirichlet::initialize(const ALE::Obj<ALE::Mesh>& mesh,
+				  const spatialdata::geocoords::CoordSys* cs)
+{ // initialize
+} // initialize
+
+// ----------------------------------------------------------------------
+// Set constrained degrees of freedom in field.
+void
+pylith::bc::Dirichlet::setConstraints(const ALE::Obj<real_section_type>& field,
+				      const ALE::Obj<ALE::Mesh>& mesh)
+{ // setConstraints
+} // setConstraints
+
+// ----------------------------------------------------------------------
+// Set values in field.
+void
+pylith::bc::Dirichlet::setField(const double t,
+				const ALE::Obj<real_section_type>& field,
+				const ALE::Obj<ALE::Mesh>& mesh)
+{ // setField
+} // setField
+
+
+// End of file 

Added: short/3D/PyLith/trunk/libsrc/bc/Dirichlet.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/bc/Dirichlet.hh	2007-05-16 22:08:47 UTC (rev 6907)
+++ short/3D/PyLith/trunk/libsrc/bc/Dirichlet.hh	2007-05-16 22:09:21 UTC (rev 6908)
@@ -0,0 +1,109 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/** @file libsrc/bc/Dirichlet.hh
+ *
+ * @brief C++ implementation of Dirichlet (prescribed values at
+ * degrees of freedom) boundary conditions.
+ */
+
+#if !defined(pylith_bc_dirichlet_hh)
+#define pylith_bc_dirichlet_hh
+
+#include "BoundaryCondition.hh" // ISA BoundaryCondition
+
+#include "pylith/utils/array.hh" // USES std::vector, double_array, int_array
+
+/// Namespace for pylith package
+namespace pylith {
+  namespace bc {
+    class Dirichlet;
+    class TestDirichlet; // unit testing
+  } // bc
+} // pylith
+
+
+/// C++ implementation of Dirichlet boundary conditions.
+class pylith::bc::Dirichlet : public BoundaryCondition
+{ // class Dirichlet
+  friend class TestDirichlet; // unit testing
+
+  // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+  /// Default constructor.
+  Dirichlet(void);
+
+  /// Destructor.
+  ~Dirichlet(void);
+
+  /** Set indices of fixed degrees of freedom. 
+   *
+   * Note: all points associated with boundary condition has same
+   * degrees of freedom fixed.
+   *
+   * Example: [0, 1] to fix x and y degrees of freedom in Cartesian system.
+   *
+   * @param flags Indices of fixed degrees of freedom.
+   */
+  void fixedDOF(const int_array& flags);
+
+  /** Initialize boundary condition.
+   *
+   * @param mesh PETSc mesh
+   * @param cs Coordinate system for mesh
+   */
+  void initialize(const ALE::Obj<ALE::Mesh>& mesh,
+		  const spatialdata::geocoords::CoordSys* cs);
+
+  /** Set constrained degrees of freedom in field.
+   *
+   * @param field Solution field
+   * @param mesh PETSc mesh
+   */
+  void setConstraints(const ALE::Obj<real_section_type>& field,
+		      const ALE::Obj<ALE::Mesh>& mesh);
+
+  /** Set values in field.
+   *
+   * @param t Current time
+   * @param field Solution field
+   * @param mesh PETSc mesh
+   */
+  void setField(const double t,
+		const ALE::Obj<real_section_type>& field,
+		const ALE::Obj<ALE::Mesh>& mesh);
+
+  // NOT IMPLEMENTED ////////////////////////////////////////////////////
+private :
+
+  /// Not implemented
+  Dirichlet(const Dirichlet& m);
+
+  /// Not implemented
+  const Dirichlet& operator=(const Dirichlet& m);
+
+  // PRIVATE MEMBERS ////////////////////////////////////////////////////
+private :
+
+  std::vector<Mesh::point_type> _points; ///< Locations of boundary condition
+  double_array _values; ///< Values at degrees of freedom
+  int_array _fixedDOF; ///< Indices of fixed degrees of freedom
+
+}; // class Dirichlet
+
+#include "Dirichlet.icc" // inline methods
+
+#endif // pylith_bc_fault_hh
+
+
+// End of file 

Added: short/3D/PyLith/trunk/libsrc/bc/Dirichlet.icc
===================================================================
--- short/3D/PyLith/trunk/libsrc/bc/Dirichlet.icc	2007-05-16 22:08:47 UTC (rev 6907)
+++ short/3D/PyLith/trunk/libsrc/bc/Dirichlet.icc	2007-05-16 22:09:21 UTC (rev 6908)
@@ -0,0 +1,25 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#if !defined(pylith_bc_dirichlet_hh)
+#error "Dirichlet.icc can only be included from Dirichlet.hh"
+#endif
+
+// Set indices of fixed degrees of freedom. 
+inline
+void
+pylith::bc::Dirichlet::fixedDOF(const int_array& flags) {
+  _fixedDOF = flags;
+} // fixedDOF
+
+
+// End of file 

Added: short/3D/PyLith/trunk/libsrc/bc/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/libsrc/bc/Makefile.am	2007-05-16 22:08:47 UTC (rev 6907)
+++ short/3D/PyLith/trunk/libsrc/bc/Makefile.am	2007-05-16 22:09:21 UTC (rev 6908)
@@ -0,0 +1,30 @@
+# -*- Makefile -*-
+#
+# ----------------------------------------------------------------------
+#
+#                           Brad T. Aagaard
+#                        U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+subpackage = bc
+include $(top_srcdir)/subpackage.am
+
+subpkginclude_HEADERS = \
+	BoundaryCondition.hh \
+	BoundaryCondition.icc \
+	Dirichlet.hh \
+	Dirichlet.icc
+
+noinst_HEADERS =
+
+# export
+clean-local: clean-subpkgincludeHEADERS
+BUILT_SOURCES = export-subpkgincludeHEADERS
+CLEANFILES = export-subpkgincludeHEADERS
+
+
+# End of file 

Modified: short/3D/PyLith/trunk/pylith/bc/BoundaryCondition.py
===================================================================
--- short/3D/PyLith/trunk/pylith/bc/BoundaryCondition.py	2007-05-16 22:08:47 UTC (rev 6907)
+++ short/3D/PyLith/trunk/pylith/bc/BoundaryCondition.py	2007-05-16 22:09:21 UTC (rev 6908)
@@ -81,24 +81,35 @@
     """
     Initialize boundary condition.
     """
+    assert(None != self.cppHandle)
+    self.cppHandle.id = self.id
+    self.cppHandle.label = self.label
+    self.cppHandle.db = self.db.cppHandle
     return
 
 
-  def integrateJacobian(self, jacobian, field):
+  def setConstraints(self, field, mesh):
     """
+    Set constraints in field.
+    """
+    return
+
+
+  def integrateJacobian(self, jacobian, field, mesh):
+    """
     Integrate contribution to Jacobian.
     """
     return
 
 
-  def integrateResidual(self, residual, fieldT, fieldTmdt):
+  def integrateResidual(self, residual, fieldT, fieldTmdt, mesh):
     """
     Integrate contribution to residual.
     """
     return
 
 
-  def setField(self, field, t):
+  def setField(self, t, field, mesh):
     """
     Set solution field at time t.
     """

Modified: short/3D/PyLith/trunk/pylith/bc/Dirichlet.py
===================================================================
--- short/3D/PyLith/trunk/pylith/bc/Dirichlet.py	2007-05-16 22:08:47 UTC (rev 6907)
+++ short/3D/PyLith/trunk/pylith/bc/Dirichlet.py	2007-05-16 22:09:21 UTC (rev 6908)
@@ -19,6 +19,23 @@
 
 from BoundaryCondition import BoundaryCondition
 
+def validateDOF(value):
+  """
+  Validate list of fixed degrees of freedom.
+  """
+  try:
+    size = len(value)
+    num = map(float, value)
+    for v in num:
+      if v < 0:
+        raise ValueError
+  except:
+    raise ValueError, \
+          "'fixed_dof' must be a zero based list of indices of fixed " \
+          "degrees of freedom."
+  return value
+  
+
 # Dirichlet class
 class Dirichlet(BoundaryCondition):
   """
@@ -28,6 +45,29 @@
   Factory: boundary_condition
   """
 
+  # INVENTORY //////////////////////////////////////////////////////////
+
+  class Inventory(Component.Inventory):
+    """
+    Python object for managing BoundaryCondition facilities and properties.
+    """
+    
+    ## @class Inventory
+    ## Python object for managing BoundaryCondition facilities and properties.
+    ##
+    ## \b Properties
+    ## @li \b fixed_dof Indices of fixed DOF (0=1st DOF, 1=2nd DOF, etc).
+    ##
+    ## \b Facilities
+    ## @li None
+
+    import pyre.inventory
+
+    fixeDOF = pyre.inventory.list("fixed_dof", default=[],
+                                  validator=validateDOF)
+    fixedDOF.meta['tip'] = "Indices of fixed DOF (0=1st DOF, 1=2nd DOF, etc)."
+    
+
   # PUBLIC METHODS /////////////////////////////////////////////////////
 
   def __init__(self, name="dirichlet"):
@@ -35,8 +75,9 @@
     Constructor.
     """
     BoundaryCondition.__init__(self, name)
-    #import pylith.bc.bc as bindings
-    #self.cppHandle = bindings.Dirichlet()
+    self.fixedDOF = []
+    import pylith.bc.bc as bindings
+    self.cppHandle = bindings.Dirichlet()
     return
 
 
@@ -44,13 +85,27 @@
     """
     Initialize Dirichlet boundary condition.
     """
+    BoundaryCondition.initialize(self, mesh)
+    self.cppHandle.fixedDOF = fixedDOF
+    self.cppHandle.initialize(mesh.cppHandle, mesh.coordsys)
     return
   
 
-  def setField(self, field, t):
+  def setConstraints(self, field, mesh):
     """
+    Set constraints in field.
+    """
+    assert(None != self.cppHandle)
+    self.cppHandle.setConstraints(field)
+    return
+
+
+  def setField(self, t, field, mesh):
+    """
     Set solution field at time t.
     """
+    assert(None != self.cppHandle)
+    self.cppHandle.setField(field, t)
     return
   
 
@@ -61,6 +116,7 @@
     Setup members using inventory.
     """
     BoundaryCondition._configure(self)
+    self.fixedDOF = self.inventory.fixedDOF
     return
 
   



More information about the cig-commits mailing list