[cig-commits] r8923 - cs/benchmark/cigma/trunk/src
luis at geodynamics.org
luis at geodynamics.org
Wed Dec 19 12:03:32 PST 2007
Author: luis
Date: 2007-12-19 12:03:32 -0800 (Wed, 19 Dec 2007)
New Revision: 8923
Added:
cs/benchmark/cigma/trunk/src/QuadratureRule.cpp
cs/benchmark/cigma/trunk/src/QuadratureRule.h
Log:
Base class for quadratures
Added: cs/benchmark/cigma/trunk/src/QuadratureRule.cpp
===================================================================
--- cs/benchmark/cigma/trunk/src/QuadratureRule.cpp 2007-12-19 20:03:23 UTC (rev 8922)
+++ cs/benchmark/cigma/trunk/src/QuadratureRule.cpp 2007-12-19 20:03:32 UTC (rev 8923)
@@ -0,0 +1,55 @@
+#include "QuadratureRule.h"
+
+
+cigma::QuadratureRule::QuadratureRule()
+{
+ nq = 0;
+ dim = 0;
+ qpts = 0;
+ qwts = 0;
+}
+
+
+cigma::QuadratureRule::~QuadratureRule()
+{
+}
+
+
+void cigma::QuadratureRule::set_quadrature(double *points, double *weights, int npts, int nsd)
+{
+ nq = npts;
+ dim = nsd;
+
+ for (int i = 0; i < nq; i++)
+ {
+ qwts[i] = weights[i];
+
+ for (int j = 0; j < dim; j++)
+ {
+ qpts[dim*i + j] = points[dim*i + j];
+ }
+ }
+}
+
+
+void cigma::QuadratureRule::get_quadrature(double **points, double **weights, int *npts, int *nsd)
+{
+ double *pts = new double[nq*dim];
+ double *wts = new double[nq];
+
+ for (int i = 0; i < nq; i++)
+ {
+ wts[i] = qwts[i];
+
+ for (int j = 0; j < dim; j++)
+ {
+ pts[dim*i+j] = qpts[dim*i+j];
+ }
+ }
+
+ *points = pts;
+ *weights = wts;
+ *npts = nq;
+ *nsd = dim;
+}
+
Added: cs/benchmark/cigma/trunk/src/QuadratureRule.h
===================================================================
--- cs/benchmark/cigma/trunk/src/QuadratureRule.h 2007-12-19 20:03:23 UTC (rev 8922)
+++ cs/benchmark/cigma/trunk/src/QuadratureRule.h 2007-12-19 20:03:32 UTC (rev 8923)
@@ -0,0 +1,31 @@
+#ifndef __QUADRATURE_RULE_H__
+#define __QUADRATURE_RULE_H__
+
+namespace cigma
+{
+ class QuadratureRule;
+}
+
+/**
+ * @brief Base class for quadrature schemes
+ *
+ */
+
+class cigma::QuadratureRule
+{
+public:
+ QuadratureRule();
+ ~QuadratureRule();
+
+public:
+ void set_quadrature(double *points, double *weights, int npts, int nsd);
+ void get_quadrature(double **points, double **weights, int *npts, int *nsd);
+
+public:
+ int nq;
+ int dim;
+ double *qpts;
+ double *qwts;
+};
+
+#endif
More information about the cig-commits
mailing list