]> git.leopard-lacewing.eu Git - bacc.git/commitdiff
[src] angefangen Templates einzubetten
authorPeter Schaefer <peter.schaefer@tuwien.ac.at>
Wed, 20 Mar 2013 17:14:35 +0000 (18:14 +0100)
committerPeter Schaefer <peter.schaefer@tuwien.ac.at>
Wed, 20 Mar 2013 17:14:35 +0000 (18:14 +0100)
src/slpRectangle.cpp

index 962762b07c7adee4b11e458aba831ed68bf4592a..20c206c1e790ce18047d6a554fcbca99086a5bd8 100644 (file)
@@ -275,6 +275,45 @@ double inline G_AY1Y2(double p, double y1, double y2, double x1, double x2,
 double inline Gs_AX2Y1Y2(double p, double y1, double y2, double x1, double x2,\r
                double l) {\r
        double sol = 0;\r
+       mexPrintf("warning: Gs_AX2Y1Y2 nicht implementiert!");\r
+       return sol;\r
+}\r
+\r
+template<double (f)(double, double)>\r
+double Q2(double a, double b) {\r
+       double sol = 0;\r
+\r
+       for (int i = 0; i < GAUSS_SIZE[quad]; ++i) {\r
+               for (int j = 0; j < GAUSS_SIZE[quad]; ++j) {\r
+                       sol += f(a * GAUSS_NODES[quad][i].n, b * GAUSS_NODES[quad][j].n) * a\r
+                                       * b * GAUSS_NODES[quad][i].w * GAUSS_NODES[quad][j].w;\r
+               }\r
+       }\r
+\r
+       return sol;\r
+}\r
+\r
+template<double (f)(double, double, double, double)>\r
+double Q4(double a, double b, double c, double d) {\r
+       //Fall 0\r
+\r
+       double sol = 0;\r
+       int i, j, k, l;\r
+\r
+       for (i = 0; i < GAUSS_SIZE[quad]; ++i) {\r
+               for (j = 0; j < GAUSS_SIZE[quad]; ++j) {\r
+                       for (k = 0; k < GAUSS_SIZE[quad]; ++k) {\r
+                               for (l = 0; l < GAUSS_SIZE[quad]; ++l) {\r
+                                       sol += f(a * GAUSS_NODES[quad][i].n,\r
+                                                       b * GAUSS_NODES[quad][j].n,\r
+                                                       c * GAUSS_NODES[quad][k].n,\r
+                                                       d * GAUSS_NODES[quad][l].n) * a * b * c * d\r
+                                                       * GAUSS_NODES[quad][i].w * GAUSS_NODES[quad][j].w\r
+                                                       * GAUSS_NODES[quad][k].w * GAUSS_NODES[quad][l].w;\r
+                               }\r
+                       }\r
+               }\r
+       }\r
 \r
        return sol;\r
 }\r
@@ -350,8 +389,8 @@ double inline F_ort(double x1, double x2, double y2, double y3, double d1,
 \r
  }*/\r
 \r
+template <double (f)(double, double, double, double, double, double, double)>\r
 double inline apply0Int4(\r
-               double (*f)(double, double, double, double, double, double, double),\r
                double b, double d, double t, double v, double d1, double d2,\r
                double d3) {\r
 \r
@@ -365,9 +404,8 @@ double inline apply0Int4(
                        - f(0, 0, 0, v, d1, d2, d3) + f(0, 0, 0, 0, d1, d2, d3);\r
 \r
 }\r
-\r
+template <double (f)(double, double, double, double, double, double, double)>\r
 double inline apply0Int2(\r
-               double (*f)(double, double, double, double, double, double, double),\r
                double b, double d, double t, double v, double d1, double d2,\r
                double d3) {\r
 \r
@@ -379,7 +417,7 @@ double inline apply0Int2(
 // Berechnet das eigentliche Integral fuer parallele Elemente voll Analytisch\r
 double calcParIntA(double b, double d, double t, double v, double d1, double d2,\r
                double d3) {\r
-       return apply0Int4(F_par, b, d, t, v, d1, d2, d3);\r
+       return apply0Int4<F_par>(b, d, t, v, d1, d2, d3);\r
 \r
 }\r
 \r
@@ -406,6 +444,7 @@ sol         += G_AY1Y2(-0.5, t + d1, v + d2, b * GAUSS_NODES[quad][i].n,
 }\r
 \r
        return sol;\r
+//     return Q2<>(b,d);\r
 \r
 }\r
 \r
@@ -481,7 +520,7 @@ double calcParIntQY1(double b, double d, double t, double v, double d1,
        //Fall 4\r
 \r
        double sol = 0;\r
-\r
+       mexPrintf("warning: calcParIntQY1 nicht implementiert!");\r
        return 0; ///ACHTUNG noch Falsch\r
 \r
 }\r
@@ -515,7 +554,7 @@ sol                         += f_A(b * GAUSS_NODES[quad][i].n,
 \r
 double calcOrtIntA(double b, double d, double t, double v, double d1, double d2,\r
                double d3) {\r
-       return apply0Int4(F_ort, b, d, t, v, d1, d2, d3);\r
+       return apply0Int4<F_ort>(b, d, t, v, d1, d2, d3);\r
 \r
 }\r
 \r