]> git.leopard-lacewing.eu Git - bacc.git/commitdiff
[src] volle Quadratur auf Ortogonalen Elementen
authorPeter Schaefer <peter.schaefer@tuwien.ac.at>
Thu, 21 Mar 2013 12:13:10 +0000 (13:13 +0100)
committerPeter Schaefer <peter.schaefer@tuwien.ac.at>
Thu, 21 Mar 2013 12:13:10 +0000 (13:13 +0100)
src/mex_build_V.cpp
src/slpRectangle.cpp
src/slpRectangle.hpp

index ad82c3c3df4b7e18449923e9b8b3c503364d595f..c36156951512f23a52f55cf7fbe62426bd73fe7f 100644 (file)
@@ -192,7 +192,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) {
                break;\r
        case 2: // Analytisch oder Qadratur\r
                ctypeP = cParO2;\r
-               ctypeO = cOrtO1;\r
+               ctypeO = cOrtO2;\r
                break;\r
        case 3: // Analytisch oder Qy[1]x2\r
                ctypeP = cParO3;\r
index cd8df8f38b8657360c7e1e9d92b3aa119f05b37e..9828f44cb2ecea1cc35737d5fa4ba3fd41de59c1 100644 (file)
@@ -463,6 +463,46 @@ double cParO2(double b, double d, double t, double v, double d1, double d2,
        return intA4<F_par>(b, d, t, v, d1, d2, d3);\r
 }\r
 \r
+\r
+double cOrtO2(double b, double d, double t, double v, double d1, double d2,\r
+               double d3, double* zeta) {\r
+       double tmp = 0, dis2 = 0;\r
+\r
+       //kurze Seite nach vorn\r
+//     switch_site(b, d, t, v, d1, d2);\r
+       if (d > t) {\r
+               tmp = d;\r
+               d = t;\r
+               t = tmp;\r
+               d2 = -d2;\r
+       }\r
+\r
+       if (b > v) {\r
+               tmp = b;\r
+               b = v;\r
+               v = tmp;\r
+               d1 = -d1;\r
+               d3 = -d3;\r
+       }\r
+\r
+       if (d2 < 0)\r
+               tmp = -d2 - t;\r
+       else\r
+               tmp = d2 - d;\r
+       if (tmp < 0)\r
+               tmp = 0;\r
+\r
+       dis2 = tmp * tmp + d1 * d1 + d3 * d3;\r
+\r
+       //kurze Achse nach vorn\r
+//     switch_dim(b, d, t, v, d1, d2);\r
+\r
+       if (zeta[0] * zeta[0] * (t * t + v * v) < dis2)\r
+               return intQ4<f_ort>(b, d, t, v, d1, d2, d3);\r
+\r
+       return intA4<F_ort>(b, d, t, v, d1, d2, d3);\r
+}\r
+\r
 double cParO3(double b, double d, double t, double v, double d1, double d2,\r
                double d3, double* zeta) {\r
 \r
index 2559533c0f03bd15fd2941438714a68fbd7d53ef..0de7e9184f60cf725b87274485b801313f5492f0 100644 (file)
@@ -57,6 +57,7 @@ double cParO1(double, double, double, double, double, double, double, double*);
 double cOrtO1(double, double, double, double, double, double, double, double*);
 //A oder Q
 double cParO2(double, double, double, double, double, double, double, double*);
+double cOrtO2(double, double, double, double, double, double, double, double*);
 //A oder Q oder Qy1x2
 double cParO3(double, double, double, double, double, double, double, double*);
 // A oder Q oder Qx1x2