[cig-commits] r14079 - cs/cigma/trunk/src
luis at geodynamics.org
luis at geodynamics.org
Wed Feb 18 08:14:29 PST 2009
Author: luis
Date: 2009-02-18 08:14:28 -0800 (Wed, 18 Feb 2009)
New Revision: 14079
Modified:
cs/cigma/trunk/src/FE.cpp
cs/cigma/trunk/src/FE.h
Log:
Using valarrays in FE class.
Modified: cs/cigma/trunk/src/FE.cpp
===================================================================
--- cs/cigma/trunk/src/FE.cpp 2009-02-18 16:14:26 UTC (rev 14078)
+++ cs/cigma/trunk/src/FE.cpp 2009-02-18 16:14:28 UTC (rev 14079)
@@ -21,16 +21,16 @@
FE::FE()
{
- this->jxw = 0;
- this->basis_tab = 0;
- this->basis_jet = 0;
+ //this->jxw = 0;
+ //this->basis_tab = 0;
+ //this->basis_jet = 0;
}
FE::FE(Cell::type celltype)
{
- this->jxw = 0;
- this->basis_tab = 0;
- this->basis_jet = 0;
+ //this->jxw = 0;
+ //this->basis_tab = 0;
+ //this->basis_jet = 0;
if (celltype != Cell::NONE)
{
@@ -47,9 +47,9 @@
FE::~FE()
{
- if (jxw != 0) { delete [] jxw; jxw = 0; }
- if (basis_tab != 0) { delete [] basis_tab; basis_tab = 0; }
- if (basis_jet != 0) { delete [] basis_jet; basis_jet = 0; }
+ //if (jxw != 0) { delete [] jxw; jxw = 0; }
+ //if (basis_tab != 0) { delete [] basis_tab; basis_tab = 0; }
+ //if (basis_jet != 0) { delete [] basis_jet; basis_jet = 0; }
}
void FE::init(shared_ptr<Quadrature> Q)
@@ -69,25 +69,35 @@
assert(cell);
assert(quadrature);
assert(cell->cell_type() != Cell::NONE);
+
const int nq = quadrature->n_points();
const int ndofs = cell->n_nodes();
- if (jxw != 0) { delete [] jxw; }
- if (basis_tab != 0) { delete [] basis_tab; }
- jxw = new double[nq];
- basis_tab = new double[nq * ndofs];
- cell->shape(nq, quadrature->points, basis_tab);
+
+ //if (jxw != 0) { delete [] jxw; }
+ //if (basis_tab != 0) { delete [] basis_tab; }
+ //jxw = new double[nq];
+ //basis_tab = new double[nq * ndofs];
+
+ jxw.resize(nq);
+ basis_tab.resize(nq * ndofs);
+
+ cell->shape(nq, quadrature->points, &basis_tab[0]);
}
void FE::init_basis_jet()
{
assert(cell);
assert(quadrature);
+
const int nq = quadrature->n_points();
const int ndofs = cell->n_nodes();
const int ndim = quadrature->n_dim();
- if (basis_jet != 0) { delete [] basis_jet; }
- basis_jet = new double[nq * ndofs * ndim];
- cell->grad_shape(nq, quadrature->points, basis_jet);
+
+ //if (basis_jet != 0) { delete [] basis_jet; }
+ //basis_jet = new double[nq * ndofs * ndim];
+
+ basis_jet.resize(nq * ndofs * ndim);
+ cell->grad_shape(nq, quadrature->points, &basis_jet[0]);
}
void FE::update_jxw()
@@ -108,8 +118,8 @@
{
assert(cell);
assert(quadrature);
- assert(jxw != 0);
- assert(basis_tab != 0);
+ assert(jxw.size() != 0);
+ assert(basis_tab.size() != 0);
const int nq = quadrature->n_points();
const int ndofs = cell->n_nodes();
@@ -167,11 +177,13 @@
throw cigma::Exception("FE::setBasisAtQuad", stream.str());
}
- if (jxw != 0) { delete [] jxw; }
- if (basis_tab != 0) { delete [] basis_tab; }
+ //if (jxw != 0) { delete [] jxw; }
+ //if (basis_tab != 0) { delete [] basis_tab; }
+ //jxw = new double[nq];
+ //basis_tab = new double[nq * ndofs];
- jxw = new double[nq];
- basis_tab = new double[nq * ndofs];
+ jxw.resize(nq);
+ basis_tab.resize(nq * ndofs);
this->set_basis_tab(b->_data);
}
Modified: cs/cigma/trunk/src/FE.h
===================================================================
--- cs/cigma/trunk/src/FE.h 2009-02-18 16:14:26 UTC (rev 14078)
+++ cs/cigma/trunk/src/FE.h 2009-02-18 16:14:28 UTC (rev 14079)
@@ -1,7 +1,7 @@
#ifndef __CIGMA_FE_H__
#define __CIGMA_FE_H__
-//#include <valarray>
+#include <valarray>
#include <boost/shared_ptr.hpp>
#include "Cell.h"
@@ -40,8 +40,12 @@
boost::shared_ptr<Cell> cell;
boost::shared_ptr<Quadrature> quadrature;
- double *jxw; // XXX: use valarray?
- double *basis_tab;
- double *basis_jet;
+ //double *jxw;
+ //double *basis_tab;
+ //double *basis_jet;
+
+ std::valarray<double> jxw;
+ std::valarray<double> basis_tab;
+ std::valarray<double> basis_jet;
};
#endif
More information about the CIG-COMMITS
mailing list