[cig-commits] r13246 - in cs/cigma/trunk: src tests/libcigma

luis at geodynamics.org luis at geodynamics.org
Tue Nov 4 01:48:45 PST 2008


Author: luis
Date: 2008-11-04 01:48:43 -0800 (Tue, 04 Nov 2008)
New Revision: 13246

Modified:
   cs/cigma/trunk/src/Residuals.cpp
   cs/cigma/trunk/src/Residuals.h
   cs/cigma/trunk/src/py_Residuals.cpp
   cs/cigma/trunk/tests/libcigma/ResidualsTest.cpp
Log:
Add bindings for &Residuals::{L2,max} methods. More tests.

Modified: cs/cigma/trunk/src/Residuals.cpp
===================================================================
--- cs/cigma/trunk/src/Residuals.cpp	2008-11-04 09:10:59 UTC (rev 13245)
+++ cs/cigma/trunk/src/Residuals.cpp	2008-11-04 09:48:43 UTC (rev 13246)
@@ -84,7 +84,6 @@
 
 double Residuals::L2()
 {
-    assert(total_volume > 0);
     return sqrt(global_error);  // XXX: generalizes to norm_pow(global_error)
 }
 

Modified: cs/cigma/trunk/src/Residuals.h
===================================================================
--- cs/cigma/trunk/src/Residuals.h	2008-11-04 09:10:59 UTC (rev 13245)
+++ cs/cigma/trunk/src/Residuals.h	2008-11-04 09:48:43 UTC (rev 13246)
@@ -4,6 +4,7 @@
 #include "MeshPart.h"
 #include <boost/noncopyable.hpp>
 #include <boost/shared_ptr.hpp>
+//#include <valarray>
 
 namespace cigma
 {

Modified: cs/cigma/trunk/src/py_Residuals.cpp
===================================================================
--- cs/cigma/trunk/src/py_Residuals.cpp	2008-11-04 09:10:59 UTC (rev 13245)
+++ cs/cigma/trunk/src/py_Residuals.cpp	2008-11-04 09:48:43 UTC (rev 13246)
@@ -3,12 +3,21 @@
 using namespace cigma;
 using namespace boost::python;
 
-pyResiduals::pyResiduals() {}
-pyResiduals::~pyResiduals() {}
+pyResiduals::pyResiduals()
+{
+}
 
+pyResiduals::~pyResiduals()
+{
+}
+
 void export_Residuals()
 {
+    typedef pyResiduals pr;
     class_<pyResiduals, boost::noncopyable>("Residuals")
+        .def("L2", &pr::L2)
+        .def("max", &pr::max)
+        //.add_property("mesh", &pr::setMesh, &pr::getMesh)
         ;
 }
 

Modified: cs/cigma/trunk/tests/libcigma/ResidualsTest.cpp
===================================================================
--- cs/cigma/trunk/tests/libcigma/ResidualsTest.cpp	2008-11-04 09:10:59 UTC (rev 13245)
+++ cs/cigma/trunk/tests/libcigma/ResidualsTest.cpp	2008-11-04 09:48:43 UTC (rev 13246)
@@ -1,6 +1,50 @@
+#include <cmath>
 #include "ResidualsTest.h"
 using namespace libcigma;
 
+#include "Residuals.h"
+#include "io_text_reader.h"
+#include "MeshPart.h"
+#include "nc_array.h"
+#include "eb_array.h"
+#include "fe_hex8.h"
+using namespace cigma;
+
+#include <boost/shared_ptr.hpp>
+using boost::shared_ptr;
+
+const double delta = 1e-8;
+
+
 void ResidualsTest::test_something()
 {
+    shared_ptr<FileReader> nc_reader, eb_reader;
+    shared_ptr<nc_array> nc(new nc_array);
+    shared_ptr<eb_array> eb(new eb_array);
+    shared_ptr<MeshPart> mesh(new MeshPart);
+
+    nc_reader = FileReader::New("tests/data/brick1/brick1_coords.dat", "r");
+    nc_reader->getCoordinates("", &(nc->coords), &(nc->nno), &(nc->nsd));
+
+    eb_reader = FileReader::New("tests/data/brick1/brick1_connect.dat", "r");
+    eb_reader->getConnectivity("", &(eb->connect), &(eb->nel), &(eb->ndofs));
+
+    shared_ptr<Cell> cell(new hex8);
+    mesh->setCell(cell);
+
+    mesh->setNodeCoordinates(nc);
+    mesh->setElementBlock(eb);
+    //mesh->setLocator(...);
+
+    shared_ptr<Residuals> residuals(new Residuals);
+    residuals->setMesh(mesh);
+    residuals->resetAccumulator();
+    for (int e = 0; e < eb->n_cells(); e++)
+    {
+        mesh->selectCell(e);
+        residuals->update(e, sqrt(2), mesh->cell->volume());
+    }
+    CPPUNIT_ASSERT_DOUBLES_EQUAL(4.0, residuals->L2(), delta);
+    CPPUNIT_ASSERT_DOUBLES_EQUAL(sqrt(2), residuals->max(), delta);
 }
+



More information about the CIG-COMMITS mailing list