[cig-commits] r13978 - cs/cigma/trunk/src

luis at geodynamics.org luis at geodynamics.org
Wed Jan 28 09:05:05 PST 2009


Author: luis
Date: 2009-01-28 09:05:05 -0800 (Wed, 28 Jan 2009)
New Revision: 13978

Modified:
   cs/cigma/trunk/src/Cell.cpp
Log:
Changed number of columns in globverts (celldim instead of 3)

Modified: cs/cigma/trunk/src/Cell.cpp
===================================================================
--- cs/cigma/trunk/src/Cell.cpp	2009-01-28 17:05:03 UTC (rev 13977)
+++ cs/cigma/trunk/src/Cell.cpp	2009-01-28 17:05:05 UTC (rev 13978)
@@ -1,5 +1,6 @@
 #include <cstdlib>
 #include <cassert>
+#include <iostream>
 #include <map>
 #include "Exception.h"
 #include "Numeric.h"
@@ -9,6 +10,7 @@
 #include "fe_quad4.h"
 #include "fe_tri3.h"
 
+using namespace std;
 using namespace cigma;
 
 // ----------------------------------------------------------------------------
@@ -179,9 +181,9 @@
     double grad[nno*3];
     double *s;
 
-    #define X(i)  globverts[3*(i) + 0]
-    #define Y(i)  globverts[3*(i) + 1]
-    #define Z(i)  globverts[3*(i) + 2]
+    #define X(i)  globverts[celldim*(i) + 0]
+    #define Y(i)  globverts[celldim*(i) + 1]
+    #define Z(i)  globverts[celldim*(i) + 2]
 
     switch (celldim)
     {
@@ -317,18 +319,43 @@
     const int nno = n_nodes();
     double N[nno];
 
+    int i,j;
+
     shape(1, point, N);
 
     //
     // value[i] = N[0]*dofs[0,i] + N[1]*dofs[1,i] + ...
     //
-    for (int i = 0; i < valdim; i++)
+    for (i = 0; i < valdim; i++)
     {
         double sum = 0.0;
-        for (int j = 0; j < nno; j++)
+        for (j = 0; j < nno; j++)
             sum += dofs[i + valdim*j] * N[j];
         value[i] = sum;
     }
+
+    /*
+    const int celldim = n_celldim();
+    cout << "[" << nno << "x" << celldim << " : ";
+    for (i = 0; i < nno; i++)
+    {
+        for (j = 0; j < celldim; j++)
+        {
+            cout << globverts[celldim*i + j] << " ";
+        }
+    }
+    cout << "] @ ";
+    for (j = 0; j < celldim; j++) cout << point[j] << " ";
+    cout << "-> ";
+    for (j = 0; j < celldim; j++) cout << value[j] << " ";
+    cout << "=> ";
+    for (i = 0; i < nno; i++)
+    {
+        cout << "N[" << i << "]=" << N[i];
+        if (i != nno-1) cout << ", ";
+    }
+    cout << "\n";
+    // */
 }
 
 
@@ -382,10 +409,12 @@
 /* Inverse reference map */
 void Cell::xyz2uvw(double xyz[3], double uvw[3])
 {
-    #define X(i)  globverts[3*(i) + 0]
-    #define Y(i)  globverts[3*(i) + 1]
-    #define Z(i)  globverts[3*(i) + 2]
+    const int celldim = n_celldim();
 
+    #define X(i)  globverts[celldim*(i) + 0]
+    #define Y(i)  globverts[celldim*(i) + 1]
+    #define Z(i)  globverts[celldim*(i) + 2]
+
     // general newton routine for the nonlinear case
     uvw[0] = uvw[1] = uvw[2] = 0.0;
 
@@ -452,7 +481,8 @@
 void Cell::uvw2xyz(double uvw[3], double xyz[3])
 {
     assert(globverts != 0);
-    interpolate(globverts, uvw, xyz, 3);
+    const int celldim = n_celldim();
+    interpolate(globverts, uvw, xyz, celldim);
 }
 
 



More information about the CIG-COMMITS mailing list