[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