[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