[cig-commits] r8256 - in cs/spatialdata-0.1/trunk: libsrc/spatialdb modulesrc/spatialdb spatialdata/spatialdb tests/libtests/spatialdb

brad at geodynamics.org brad at geodynamics.org
Fri Nov 9 08:04:15 PST 2007


Author: brad
Date: 2007-11-09 08:04:14 -0800 (Fri, 09 Nov 2007)
New Revision: 8256

Modified:
   cs/spatialdata-0.1/trunk/libsrc/spatialdb/GravityField.cc
   cs/spatialdata-0.1/trunk/libsrc/spatialdb/GravityField.hh
   cs/spatialdata-0.1/trunk/modulesrc/spatialdb/spatialdb.pyxe.src
   cs/spatialdata-0.1/trunk/spatialdata/spatialdb/GravityField.py
   cs/spatialdata-0.1/trunk/tests/libtests/spatialdb/TestGravityField.cc
   cs/spatialdata-0.1/trunk/tests/libtests/spatialdb/TestGravityField.hh
Log:
Changed GravityField upDir to gravityDir, since direction of gravitational body force does not strictly match 'up' direction in real Earth (ellipsoid versus sphere).

Modified: cs/spatialdata-0.1/trunk/libsrc/spatialdb/GravityField.cc
===================================================================
--- cs/spatialdata-0.1/trunk/libsrc/spatialdb/GravityField.cc	2007-11-09 00:48:49 UTC (rev 8255)
+++ cs/spatialdata-0.1/trunk/libsrc/spatialdb/GravityField.cc	2007-11-09 16:04:14 UTC (rev 8256)
@@ -33,9 +33,9 @@
   _queryVals(new int[3]),
   _querySize(3)
 { // constructor
-  _upDir[0] = 0.0;
-  _upDir[1] = 0.0;
-  _upDir[2] = 1.0;
+  _gravityDir[0] = 0.0;
+  _gravityDir[1] = 0.0;
+  _gravityDir[2] = -1.0;
 
   if (0 == _csECEF)
     throw std::runtime_error("Error while initializing ECEF coordinate "
@@ -59,17 +59,17 @@
 } // destructor
 
 // ----------------------------------------------------------------------
-// Set up direction (direction opposite of gravity) in database.
+// Set direction of gravitational body force.
 void
-spatialdata::spatialdb::GravityField::upDir(const double x,
-					    const double y,
-					    const double z)
-{ // upDir
+spatialdata::spatialdb::GravityField::gravityDir(const double x,
+						 const double y,
+						 const double z)
+{ // gravityDir
   const double mag = sqrt(x*x + y*y + z*z);
-  _upDir[0] = x / mag;
-  _upDir[1] = y / mag;
-  _upDir[2] = z / mag;
-} // upDir
+  _gravityDir[0] = x / mag;
+  _gravityDir[1] = y / mag;
+  _gravityDir[2] = z / mag;
+} // gravityDir
 
 // ----------------------------------------------------------------------
 // Set values to be returned by queries.
@@ -136,14 +136,14 @@
 
   if (geocoords::CoordSys::CARTESIAN == cs->csType())
     for (int i=0; i < _querySize; ++i)
-      vals[i] = -_acceleration*_upDir[_queryVals[i]];
+      vals[i] = _acceleration*_gravityDir[_queryVals[i]];
   else {
     const geocoords::CSGeo* csGeo = dynamic_cast<const geocoords::CSGeo*>(cs);
-    double upDir[3];
+    double radialDir[3];
     const int numLocs = 1;
-    csGeo->radialDir(upDir, coords, numLocs, numDims);
+    csGeo->radialDir(radialDir, coords, numLocs, numDims);
     for (int i=0; i < _querySize; ++i)
-      vals[i] = -_acceleration*upDir[_queryVals[i]];
+      vals[i] = -_acceleration*radialDir[_queryVals[i]];
   } // if/else
 
   return 0;

Modified: cs/spatialdata-0.1/trunk/libsrc/spatialdb/GravityField.hh
===================================================================
--- cs/spatialdata-0.1/trunk/libsrc/spatialdb/GravityField.hh	2007-11-09 00:48:49 UTC (rev 8255)
+++ cs/spatialdata-0.1/trunk/libsrc/spatialdb/GravityField.hh	2007-11-09 16:04:14 UTC (rev 8256)
@@ -46,15 +46,16 @@
   /// Default destructor.
   ~GravityField(void);
   
-  /** Set up direction (direction opposite of gravity) in database.
+  /** Set direction of gravitational body force. Used only with
+   * Cartesian coordinate system.
    *
-   * @param x X component of up direction
-   * @param y Y component of up direction
-   * @param z Z component of up direction
+   * @param x X component of direction
+   * @param y Y component of direction
+   * @param z Z component of direction
    */
-  void upDir(const double x,
-	     const double y,
-	     const double z);
+  void gravityDir(const double x,
+		  const double y,
+		  const double z);
 
   /** Set gravitational acceleration.
    *
@@ -109,7 +110,7 @@
 private :
  // PRIVATE MEMBERS /////////////////////////////////////////////////////
 
-  double _upDir[3]; ///< Up direction for use with Cartesian coordinates.
+  double _gravityDir[3]; ///< Direction of gravitational body force.
   double _acceleration; ///< Acceleration due to gravity.
   geocoords::CSGeo* _csECEF; ///< Earth-centered/Earth-fixed coordinate system.
   int* _queryVals; ///< Indices of values to be returned in queries.

Modified: cs/spatialdata-0.1/trunk/modulesrc/spatialdb/spatialdb.pyxe.src
===================================================================
--- cs/spatialdata-0.1/trunk/modulesrc/spatialdb/spatialdb.pyxe.src	2007-11-09 00:48:49 UTC (rev 8255)
+++ cs/spatialdata-0.1/trunk/modulesrc/spatialdb/spatialdb.pyxe.src	2007-11-09 16:04:14 UTC (rev 8256)
@@ -501,20 +501,20 @@
     return
 
 
-  def upDir(self, up):
+  def gravityDir(self, up):
     """
-    Set up direction (direction opposite of gravity).
+    Set direction of gravitational body force.
     """
-    # create shim for method 'upDir'
-    #embed{ void GravityField_upDir(void* pObj, double x, double y, double z)
+    # create shim for method 'gravityDir'
+    #embed{ void GravityField_gravityDir(void* pObj, double x, double y, double z)
     assert(0 != pObj);
-    ((spatialdata::spatialdb::GravityField*) pObj)->upDir(x, y, z);
+    ((spatialdata::spatialdb::GravityField*) pObj)->gravityDir(x, y, z);
     #}embed
     if len(up) != 3:
       raise ValueError("Up direction must be a 3 component list or tuple.")
     (x, y, z) = map(float, up)
 
-    GravityField_upDir(self.thisptr, x, y, z)
+    GravityField_gravityDir(self.thisptr, x, y, z)
     return
 
 

Modified: cs/spatialdata-0.1/trunk/spatialdata/spatialdb/GravityField.py
===================================================================
--- cs/spatialdata-0.1/trunk/spatialdata/spatialdb/GravityField.py	2007-11-09 00:48:49 UTC (rev 8255)
+++ cs/spatialdata-0.1/trunk/spatialdata/spatialdb/GravityField.py	2007-11-09 16:04:14 UTC (rev 8256)
@@ -37,7 +37,8 @@
     ## Python object for managing GravityField facilities and properties.
     ##
     ## \b Properties
-    ## @li \b up_dir Direction opposite of gravity ("up").
+    ## @li \b up_dir Direction of gravitational body force
+    ##   (used only with a Cartesian coordinate system).
     ## @li \b acceleration Gravitational acceleration.
     ##
     ## \b Facilities
@@ -45,8 +46,9 @@
 
     import pyre.inventory
 
-    upDir = pyre.inventory.list("up_dir", default=[0,0,1])
-    upDir.meta['tip'] = "Direction opposite of gravity ('up')."
+    gravityDir = pyre.inventory.list("gravity_dir", default=[0,0,-1])
+    gravityDir.meta['tip'] = "Direction of gravitational body force. " \
+                             "(used only with a Cartesian coordinate system."
 
     from pyre.units.length import meter
     from pyre.units.time import second
@@ -72,7 +74,7 @@
     Initialize database.
     """
     SpatialDB.initialize(self)
-    self.cppHandle.upDir(self.upDir)
+    self.cppHandle.gravityDir(self.gravityDir)
     self.cppHandle.gravAcceleration(self.acceleration.value)
     return
   
@@ -85,7 +87,7 @@
     """
     SpatialDB._configure(self)
     self._validate(self.inventory)
-    self.upDir = self.inventory.upDir
+    self.gravityDir = self.inventory.gravityDir
     self.acceleration = self.inventory.acceleration
     return
 
@@ -94,13 +96,14 @@
     """
     Validate parameters.
     """
-    if (len(data.upDir) != 3):
-      raise ValueError("Up direction must be a 3 component list or tuple.")
+    if (len(data.gravityDir) != 3):
+      raise ValueError, \
+            "Gravity direction must be a 3 component list or tuple."
     try:
-      dataFloat = map(float, data.upDir)
+      dataFloat = map(float, data.gravityDir)
     except:
         raise ValueError, \
-              "'upDir' must contain floating point values."
+              "'gravityDir' must contain floating point values."
     return
   
 

Modified: cs/spatialdata-0.1/trunk/tests/libtests/spatialdb/TestGravityField.cc
===================================================================
--- cs/spatialdata-0.1/trunk/tests/libtests/spatialdb/TestGravityField.cc	2007-11-09 00:48:49 UTC (rev 8255)
+++ cs/spatialdata-0.1/trunk/tests/libtests/spatialdb/TestGravityField.cc	2007-11-09 16:04:14 UTC (rev 8256)
@@ -46,28 +46,30 @@
 } // testLabel
 
 // ----------------------------------------------------------------------
-// Test upDir().
+// Test gravityDir().
 void
-spatialdata::spatialdb::TestGravityField::testUpDir(void)
-{ // testUpDir
+spatialdata::spatialdb::TestGravityField::testGravityDir(void)
+{ // testGravityDir
   GravityField db;
 
   const double tolerance = 1.0e-06;
 
   { // Test default
-    const double upDir[] = { 0.0, 0.0, 1.0 };
+    const double gravityDir[] = { 0.0, 0.0, -1.0 };
     for (int i=0; i < 3; ++i)
-      CPPUNIT_ASSERT_DOUBLES_EQUAL(upDir[i], db._upDir[i], tolerance);
+      CPPUNIT_ASSERT_DOUBLES_EQUAL(gravityDir[i], db._gravityDir[i], 
+				   tolerance);
   } // Test default
   
   { // Test user-specified
-    const double upDir[] = { 1.1, 2.2, 3.3 };
+    const double gravityDir[] = { 1.1, 2.2, 3.3 };
     const double mag = 1.1*sqrt(1 + 4 + 9);
-    db.upDir(upDir[0], upDir[1], upDir[2]);
+    db.gravityDir(gravityDir[0], gravityDir[1], gravityDir[2]);
     for (int i=0; i < 3; ++i)
-      CPPUNIT_ASSERT_DOUBLES_EQUAL(upDir[i]/mag, db._upDir[i], tolerance);
+      CPPUNIT_ASSERT_DOUBLES_EQUAL(gravityDir[i]/mag, db._gravityDir[i], 
+				   tolerance);
   } // Test user-specified
-} // testUpDir
+} // testGravityDir
 
 // ----------------------------------------------------------------------
 // Test acceleration().
@@ -110,13 +112,13 @@
 { // testQueryCart2
   const int spaceDim = 2;
   const double gacc = 2.0;
-  const double upDir[] = { 0.6, 0.8, 0.0 };
+  const double gravityDir[] = { -0.6, -0.8, 0.0 };
   const double gravityE[] = { -1.2, -1.6 };
   const int querySize = spaceDim;
   const char* queryNames[] = { "x", "y" };
   
   GravityField db;
-  db.upDir(upDir[0], upDir[1], upDir[2]);
+  db.gravityDir(gravityDir[0], gravityDir[1], gravityDir[2]);
   db.gravAcceleration(gacc);
   db.open();
   db.queryVals(queryNames, querySize);
@@ -142,12 +144,12 @@
 { // testQueryCart3
   const int spaceDim = 3;
   const double gacc = 2.0;
-  const double upDir[] = { 0.3, 0.4, -0.5 };
+  const double gravityDir[] = { 0.3, 0.4, -0.5 };
   const double sqrt2 = sqrt(2.0);
-  const double gravityE[] = { -0.6*sqrt2, -0.8*sqrt2, 1.0*sqrt2 };
+  const double gravityE[] = { 0.6*sqrt2, 0.8*sqrt2, -1.0*sqrt2 };
   
   GravityField db;
-  db.upDir(upDir[0], upDir[1], upDir[2]);
+  db.gravityDir(gravityDir[0], gravityDir[1], gravityDir[2]);
   db.gravAcceleration(gacc);
   db.open();
 

Modified: cs/spatialdata-0.1/trunk/tests/libtests/spatialdb/TestGravityField.hh
===================================================================
--- cs/spatialdata-0.1/trunk/tests/libtests/spatialdb/TestGravityField.hh	2007-11-09 00:48:49 UTC (rev 8255)
+++ cs/spatialdata-0.1/trunk/tests/libtests/spatialdb/TestGravityField.hh	2007-11-09 16:04:14 UTC (rev 8256)
@@ -39,7 +39,7 @@
 
   CPPUNIT_TEST( testConstructor );
   CPPUNIT_TEST( testLabel );
-  CPPUNIT_TEST( testUpDir );
+  CPPUNIT_TEST( testGravityDir );
   CPPUNIT_TEST( testAcceleration );
   CPPUNIT_TEST( testQueryVals );
   CPPUNIT_TEST( testQueryCart2 );
@@ -60,8 +60,8 @@
   /// Test label()
   void testLabel(void);
 
-  /// Test upDir()
-  void testUpDir(void);
+  /// Test gravityDir()
+  void testGravityDir(void);
 
   /// Test acceleration()
   void testAcceleration(void);



More information about the cig-commits mailing list