[cig-commits] r8388 - cs/benchmark/cigma/trunk/src
luis at geodynamics.org
luis at geodynamics.org
Wed Dec 5 13:11:12 PST 2007
Author: luis
Date: 2007-12-05 13:11:11 -0800 (Wed, 05 Dec 2007)
New Revision: 8388
Added:
cs/benchmark/cigma/trunk/src/Cell.h
Log:
Header for base class Cell
Added: cs/benchmark/cigma/trunk/src/Cell.h
===================================================================
--- cs/benchmark/cigma/trunk/src/Cell.h 2007-12-05 21:11:09 UTC (rev 8387)
+++ cs/benchmark/cigma/trunk/src/Cell.h 2007-12-05 21:11:11 UTC (rev 8388)
@@ -0,0 +1,112 @@
+#ifndef __CELL_H__
+#define __CELL_H__
+
+#include "Numeric.h"
+
+namespace cigma
+{
+ class Cell;
+}
+
+
+/*
+ * Cell class
+ */
+class cigma::Cell
+{
+
+public:
+ Cell();
+ virtual ~Cell();
+
+
+public:
+ int n_dims() const;
+ int n_celldims() const;
+ int n_nodes() const;
+
+
+public:
+
+ void set(int nsd, int celldim, int ndofs);
+
+ void set_reference_vertices(const double *vertices, int num_vertices);
+ void update_vertices(double *vertices, int num_vertices, int nsd);
+
+ void set_quadrature(const double *quadpts, const double *quadwts, int num_points);
+ void update_quadrature(void);
+
+ void set_tabulation(const double *basis_tab, const double *basis_jet);
+ void update_tabulation(void);
+
+ void clear();
+
+
+public:
+
+ virtual void shape(int num, double *points, double *values);
+ virtual void grad_shape(int num, double *points, double *values);
+
+ void tabulate(void);
+
+ double jacobian(double *point, double jac[3][3]);
+ double jacobian(double u, double v, double w, double jac[3][3]);
+
+ void interpolate(double *dofs, double *point, double *value, int valdim);
+ void interpolate_grad(double *dofs, double *point, double *value, double invjac[3][3]=0);
+
+ virtual void xyz2uvw(double xyz[3], double uvw[3]);
+ void uvw2xyz(double uvw[3], double xyz[3]);
+
+
+public:
+
+ void bbox(double *min, double *max);
+ void centroid(double c[3]);
+ virtual bool interior(double u, double v, double w) = 0;
+
+
+public:
+
+ int nsd;
+ int celldim;
+
+ int nno;
+ double *refverts; // [nno x celldim]
+ double *globverts; // [nno x nsd]
+
+ int nq;
+ double *jxw; // [nq x 1]
+ double *qwts; // [nq x 1]
+ double *qpts; // [nq x celldim]
+ double *gqpts; // [nq x nsd]
+
+ int ndofs;
+ double *basis_tab; // [nq x ndofs]
+ double *basis_jet; // [nq x ndofs x celldim]
+
+ bool _tabulate;
+};
+
+
+
+/*
+ * Inline methods
+ */
+inline int cigma::Cell::n_dims() const
+{
+ return nsd;
+}
+
+inline int cigma::Cell::n_celldims() const
+{
+ return celldim;
+}
+
+inline int cigma::Cell::n_nodes() const
+{
+ return nno;
+}
+
+
+#endif
More information about the cig-commits
mailing list