[cig-commits] r11730 - cs/benchmark/cigma/trunk/src

luis at geodynamics.org luis at geodynamics.org
Wed Apr 2 11:01:54 PDT 2008


Author: luis
Date: 2008-04-02 11:01:54 -0700 (Wed, 02 Apr 2008)
New Revision: 11730

Modified:
   cs/benchmark/cigma/trunk/src/Residuals.cpp
   cs/benchmark/cigma/trunk/src/Residuals.h
Log:
Improvements to Residuals class


Modified: cs/benchmark/cigma/trunk/src/Residuals.cpp
===================================================================
--- cs/benchmark/cigma/trunk/src/Residuals.cpp	2008-04-02 18:01:53 UTC (rev 11729)
+++ cs/benchmark/cigma/trunk/src/Residuals.cpp	2008-04-02 18:01:54 UTC (rev 11730)
@@ -15,6 +15,9 @@
     nel = 0;
     epsilon = 0;
     meshPart = 0;
+
+    global_error = 0.0;
+    max_residual = 0.0;
 }
 
 Residuals::~Residuals()
@@ -40,6 +43,7 @@
     assert(epsilon != 0);
 
     global_error = 0.0;
+    max_residual = 0.0;
 
     for (int e = 0; e < nel; e++)
     {
@@ -49,12 +53,19 @@
 
 void Residuals::update(int e, double cell_residual)
 {
+    assert(cell_residual >= 0);
+
     // remember residual on this cell
     epsilon[e] = cell_residual;
 
-    // XXX: this would generalize into global_error = norm_sum(global_error, cell_residual)
-    global_error += cell_residual;
+    // keep track of max residual
+    if (cell_residual > max_residual)
+    {
+        max_residual = cell_residual;
+    }
 
+    // XXX: generalize to global_error = norm_sum(global_error, cell_residual)
+    global_error += cell_residual * cell_residual;
 }
 
 double Residuals::L2()
@@ -62,19 +73,22 @@
     return sqrt(global_error); // XXX: generalize to norm_pow(global_error)
 }
 
+double Residuals::max()
+{
+    return max_residual;
+}
+
 // ---------------------------------------------------------------------------
 
-void Residuals::write_vtk(const char *filename)
+void Residuals::write(const char *filename)
 {
-    assert(meshPart != 0); // XXX: add support for dumping residuals w/o mesh
+    assert(meshPart != 0); // XXX: residuals w/o mesh?
     assert(meshPart->nel == nel);
 
     string output_filename = filename;
-    cout << "Creating file " << output_filename << endl;
 
     VtkWriter writer;
     writer.open(output_filename.c_str());
-    //writer.write_header();
     writer.write_points(meshPart->coords, meshPart->nno, meshPart->nsd);
     writer.write_cells(meshPart->connect, meshPart->nel, meshPart->ndofs);
     writer.write_cell_types(meshPart->nsd, meshPart->nel, meshPart->ndofs); // XXX: call from w/i write_cells()

Modified: cs/benchmark/cigma/trunk/src/Residuals.h
===================================================================
--- cs/benchmark/cigma/trunk/src/Residuals.h	2008-04-02 18:01:53 UTC (rev 11729)
+++ cs/benchmark/cigma/trunk/src/Residuals.h	2008-04-02 18:01:54 UTC (rev 11730)
@@ -21,14 +21,16 @@
     void reset_accumulator();
     void update(int e, double cell_residual);
     double L2();
+    double max();
 
 public:
-    void write_vtk(const char *filename);
+    void write(const char *filename);
 
 public:
     int nel;
     double *epsilon;
     double global_error;
+    double max_residual;
     MeshPart *meshPart;
 };
 



More information about the cig-commits mailing list