]> git.leopard-lacewing.eu Git - bacc.git/commitdiff
[src] neue Funktionen zum Automatisieren der Anisotropen und Isotropen Berechnung A_*
authortreecity <treecity@26120e32-c555-405d-b3e1-1f783fb42516>
Thu, 20 Oct 2011 19:06:32 +0000 (19:06 +0000)
committertreecity <treecity@26120e32-c555-405d-b3e1-1f783fb42516>
Thu, 20 Oct 2011 19:06:32 +0000 (19:06 +0000)
[src] nicht verwendete Skripte entfernt
[src] slpRect erweitert
[src] mex_build_A ist nun von Parametern abhängig die bestimmen wie Berechnet werden soll

git-svn-id: https://drops.fb12.tu-berlin.de/svn/bacc/trunk@54 26120e32-c555-405d-b3e1-1f783fb42516

49 files changed:
src/A_loadMesh.m [new file with mode: 0644]
src/A_setParam.m [new file with mode: 0644]
src/A_stepAnIso.m [new file with mode: 0644]
src/A_stepIso.m [new file with mode: 0644]
src/build_A2.m [deleted file]
src/mex_Fort.cpp [deleted file]
src/mex_Fpar.cpp [deleted file]
src/mex_G00.cpp [deleted file]
src/mex_build_A.cpp [deleted file]
src/mex_build_AU.cpp [new file with mode: 0644]
src/mex_build_As1.cpp [deleted file]
src/mex_build_As2.cpp [deleted file]
src/mex_build_As3.cpp [deleted file]
src/mex_calcOrtInt.cpp [deleted file]
src/mex_calcParInt.cpp [deleted file]
src/mex_g0.cpp [deleted file]
src/mexit.m [deleted file]
src/save1.mat [deleted file]
src/save10.mat [deleted file]
src/save11.mat [deleted file]
src/save12.mat [deleted file]
src/save13.mat [deleted file]
src/save2.mat [deleted file]
src/save3.mat [deleted file]
src/save4.mat [deleted file]
src/save5.mat [deleted file]
src/save6.mat [deleted file]
src/save7.mat [deleted file]
src/save8.mat [deleted file]
src/save9.mat [deleted file]
src/slpRectangle.cpp
src/slpRectangle.hpp
src/test_Fort.m [deleted file]
src/test_Fpar.m [deleted file]
src/test_G00.m [deleted file]
src/test_SolveSpeed1.fig [deleted file]
src/test_functions.m [deleted file]
src/test_g0.m [deleted file]
src/test_solveErrorS1.m [deleted file]
src/test_solveError_1050_2DQuad.fig [deleted file]
src/test_solveError_1050_2DQuad.mat [deleted file]
src/test_solveError_1050_3DFichCube.fig [deleted file]
src/test_solveError_1050_3DFichCube.mat [deleted file]
src/test_solveError_Grid2.m [deleted file]
src/test_solveError_Grid3.m [deleted file]
src/test_solveError_Grids.m [new file with mode: 0644]
src/test_solveS.m [deleted file]
src/test_solveSpeed.m [deleted file]
src/test_solveSpeed1.mat [deleted file]

diff --git a/src/A_loadMesh.m b/src/A_loadMesh.m
new file mode 100644 (file)
index 0000000..703edb4
--- /dev/null
@@ -0,0 +1,11 @@
+function A_loadMesh(coordinates,elements)
+% Laed ein Mesh
+%
+% A_loadMesh(coordinates,elements)
+
+  global G_C;
+  global G_E;
+  G_C = coordinates;
+  G_E = elements;
+end
+
diff --git a/src/A_setParam.m b/src/A_setParam.m
new file mode 100644 (file)
index 0000000..30cc2a2
--- /dev/null
@@ -0,0 +1,8 @@
+function A_setParam(paras)
+%setzt die Parameter fuer die Durchlaeufe
+
+global G_para;
+G_para = paras;
+
+end
+
diff --git a/src/A_stepAnIso.m b/src/A_stepAnIso.m
new file mode 100644 (file)
index 0000000..5e4d976
--- /dev/null
@@ -0,0 +1,30 @@
+function dataAniso = A_stepAnIso(mu,type)
+
+global G_E;
+global G_C;
+
+if (isempty(G_E) || isempty(G_C))
+  disp 'Error: Please use A_loadMesh first'
+  return
+end
+
+  [coordinates_fine,elements_fine, f2s]=refineQuad(G_C,G_E,2*ones(1,size(G_E,1)));
+  
+  A_fine = mex_build_AU(coordinates_fine,elements_fine,mu,type);
+  
+  b = sqrt(sum(quadNorm(coordinates_fine,elements_fine,'w').^2,2));
+  
+  x_fine = A_fine\b;
+  
+  xe_fine = x_fine'*A_fine*x_fine;
+
+  ind = computeEstSlpMuTilde(x_fine,G_C,G_E,f2s);
+  
+  marked = mark(x_fine(f2s)',ind,0.5,0.5);
+  
+  dataAniso = [size(G_E,1) sqrt(sum(ind)) xe_fine];
+  [G_C, G_E] = refineQuad(G_C,G_E,marked);
+
+
+end
+
diff --git a/src/A_stepIso.m b/src/A_stepIso.m
new file mode 100644 (file)
index 0000000..264f245
--- /dev/null
@@ -0,0 +1,28 @@
+function dataIso = A_stepIso(mu,type)
+
+global G_E;
+global G_C;
+
+if (isempty(G_E) || isempty(G_C))
+  disp 'Error: Please use A_loadMesh first'
+  return
+end
+
+  [coordinates_fine,elements_fine, f2s]=refineQuad(G_C,G_E,2*ones(1,size(G_E,1)));
+  
+  A_fine = mex_build_AU(coordinates_fine,elements_fine,mu,type);
+  
+  b = sqrt(sum(quadNorm(coordinates_fine,elements_fine,'w').^2,2));
+  
+  x_fine = A_fine\b;
+  
+  xe_fine = x_fine'*A_fine*x_fine;
+
+  ind = computeEstSlpMuTilde(x_fine,G_C,G_E,f2s);
+  
+  dataIso = [size(G_E,1) sqrt(sum(ind)) xe_fine];
+  [G_C, G_E] = refineQuad(G_C,G_E,2*ones(1,size(G_E,1)));
+
+
+end
+
diff --git a/src/build_A2.m b/src/build_A2.m
deleted file mode 100644 (file)
index 9550b53..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-function A = build_A2(coordinates,elements)
-    N = size(elements,1);
-
-    A1 = zeros(N);
-
-    % untere schranke s t obere schranke k l
-    intF = @(f,a,b,c,d,r,t,u,v)...
-        f(b,d,t,v)-f(b,d,t,u)-f(b,d,r,v)+f(b,d,r,u)...
-        -f(b,c,t,v)+f(b,c,t,u)+f(b,c,r,v)-f(b,c,r,u)...
-        -f(a,d,t,v)+f(a,d,t,u)+f(a,d,r,v)-f(a,d,r,u)...
-        +f(a,c,t,v)-f(a,c,t,u)-f(a,c,r,v)+f(a,c,r,u);
-    
-    for j = 1:N
-        for k = 1:N
-            ej = coordinates(elements(j,:)',:);
-            ek = coordinates(elements(k,:)',:);
-            
-            d = ek(1,:) - ej(1,:);
-            
-            ej = ej - repmat(ej(1,:),3,1);
-            ek = ek - repmat(ek(1,:),3,1);
-
-%             d = ones(1,3);
-
-%             A1(j,k) = surfDoubleQuad(@(x1,x2,y1,y2) 1/sqrt((x1-y1-d(1)).^2+(x2-y2-d(2)).^2+d(3).^2)...
-%                 ,ej(1,1),ej(2,1),ej(1,2), ej(3,2),ek(1,1), ek(2,1),ek(1,2), ek(3,2),4);
-
-            A1(j,k) = intF(@(x1,x2,y1,y2) mex_Fpar(x1,x2,y1,y2,d(1),d(2),d(3))...
-                ,ej(1,1),ej(2,1),ej(1,2), ej(3,2),ek(1,1), ek(2,1),ek(1,2), ek(3,2));
-        end
-    end
-    
-    A = A1/(4*pi);
-
-end
\ No newline at end of file
diff --git a/src/mex_Fort.cpp b/src/mex_Fort.cpp
deleted file mode 100644 (file)
index 4741cb0..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-#include <iostream>
-#include <cmath>
-#include <cassert>
-#include "mex.h"
-#include <stdlib.h>
-
-#include "slpRectangle.hpp"
-
-#define my_PI 3.141592653589793
-#define EPS 0.02
-
-using namespace std;
-
-
-void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) {
-       //sicherheitsabfragen zu Datengroessen
-       if (nrhs != 7)
-               mexErrMsgTxt("expected (x1,x2,y2,y3,d1,d2,d3)");
-       if (nlhs > 2)
-               mexErrMsgTxt("has maximal two output arguments");
-
-
-       plhs[0] = mxCreateDoubleMatrix(1, 1, mxREAL);
-
-       *mxGetPr(plhs[0]) = F_ort(*mxGetPr(prhs[0]),*mxGetPr(prhs[1]),*mxGetPr(prhs[2]),*mxGetPr(prhs[3]),*mxGetPr(prhs[4]),*mxGetPr(prhs[5]),*mxGetPr(prhs[6]));
-
-}
-
-
-
diff --git a/src/mex_Fpar.cpp b/src/mex_Fpar.cpp
deleted file mode 100644 (file)
index 369f683..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-#include <iostream>
-#include <cmath>
-#include <cassert>
-#include "mex.h"
-#include <stdlib.h>
-
-#include "slpRectangle.hpp"
-
-#define my_PI 3.141592653589793
-#define EPS 0.02
-
-using namespace std;
-
-
-void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) {
-       //sicherheitsabfragen zu Datengroessen
-       if (nrhs != 7)
-               mexErrMsgTxt("expected (x1,x2,y1,y2,d1,d2,d3)");
-       if (nlhs > 2)
-               mexErrMsgTxt("has maximal two output arguments");
-
-
-       plhs[0] = mxCreateDoubleMatrix(1, 1, mxREAL);
-
-       *mxGetPr(plhs[0]) = F_par(*mxGetPr(prhs[0]),*mxGetPr(prhs[1]),*mxGetPr(prhs[2]),*mxGetPr(prhs[3]),*mxGetPr(prhs[4]),*mxGetPr(prhs[5]),*mxGetPr(prhs[6]));
-
-}
-
-
-
diff --git a/src/mex_G00.cpp b/src/mex_G00.cpp
deleted file mode 100644 (file)
index 1c946f8..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-#include <iostream>
-#include <cmath>
-#include <cassert>
-#include "mex.h"
-#include <stdlib.h>
-
-#include "slpRectangle.hpp"
-
-#define my_PI 3.141592653589793
-#define EPS 0.02
-
-using namespace std;
-
-
-void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) {
-       //sicherheitsabfragen zu Datengroessen
-       if (nrhs != 6)
-               mexErrMsgTxt("expected (p, y1, y2, x1, x2, l)");
-       if (nlhs > 2)
-               mexErrMsgTxt("has maximal two output arguments");
-
-
-       plhs[0] = mxCreateDoubleMatrix(1, 1, mxREAL);
-       plhs[1] = mxCreateDoubleMatrix(1, 1, mxREAL);
-
-       *mxGetPr(plhs[0]) = G_AY1Y2(*mxGetPr(prhs[0]),*mxGetPr(prhs[1]),*mxGetPr(prhs[2]),*mxGetPr(prhs[3]),*mxGetPr(prhs[4]),*mxGetPr(prhs[5]));
-       *mxGetPr(plhs[1]) = G_QY1Y2(*mxGetPr(prhs[0]),*mxGetPr(prhs[1]),*mxGetPr(prhs[2]),*mxGetPr(prhs[3]),*mxGetPr(prhs[4]),*mxGetPr(prhs[5]));
-
-}
-
-
-
diff --git a/src/mex_build_A.cpp b/src/mex_build_A.cpp
deleted file mode 100644 (file)
index 5cd019f..0000000
+++ /dev/null
@@ -1,296 +0,0 @@
-/*\r
- * voll Analytisch\r
- * ohne Optimierungen\r
- *\r
- *\r
- */\r
-\r
-\r
-#include <iostream>\r
-#include <cmath>\r
-#include <cassert>\r
-#include "mex.h"\r
-#include <stdlib.h>\r
-\r
-//#include "tbb/parallel_for.h"\r
-\r
-\r
-#include "slpRectangle.hpp"\r
-\r
-#define EPS 0.02\r
-\r
-using namespace std;\r
-\r
-void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) {\r
-\r
-       int i, j, k;\r
-\r
-       //sicherheitsabfragen zu Datengroessen\r
-       if (nrhs != 2)\r
-               mexErrMsgTxt("expected (coordinates(Nx3),elements(Mx4))");\r
-       if (nlhs > 1)\r
-               mexErrMsgTxt("has only one output argument");\r
-\r
-       int cm = mxGetM(prhs[0]);\r
-       int cn = mxGetN(prhs[0]);\r
-\r
-       if (cn != 3)\r
-               mexErrMsgTxt("expected coordinates (Nx3)");\r
-       int em = mxGetM(prhs[1]);\r
-       int en = mxGetN(prhs[1]);\r
-       if (en != 4)\r
-               mexErrMsgTxt("expected elements (Mx4)");\r
-       //Vorbereitung der Daten\r
-\r
-       plhs[0] = mxCreateDoubleMatrix(em, em, mxREAL);\r
-       double * A = mxGetPr(plhs[0]);\r
-       double * C = mxGetPr(prhs[0]);\r
-       double * E = mxGetPr(prhs[1]);\r
-\r
-       double * x0 = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-       double * x1 = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-       double * x2 = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-       double * x3 = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-       double * xn = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-       double * xa = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-       double * xb = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-\r
-       double * y0 = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-       double * y1 = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-       double * y2 = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-       double * y3 = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-       double * yn = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-       double * ya = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-       double * yb = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-\r
-       double * d = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-       double * dt = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-\r
-       double tmp;\r
-\r
-       //LageInformationen\r
-       int rx, rxa, rxb, ry, rya, ryb;\r
-\r
-       //Ausrechnen\r
-       for (j = 0; j < em; ++j) {\r
-               x0[0] = C[(int) E[j] - 1];\r
-               x0[1] = C[cm + (int) E[j] - 1];\r
-               x0[2] = C[2 * cm + (int) E[j] - 1];\r
-\r
-               x1[0] = C[(int) E[em + j] - 1];\r
-               x1[1] = C[cm + (int) E[em + j] - 1];\r
-               x1[2] = C[2 * cm + (int) E[em + j] - 1];\r
-\r
-               x2[0] = C[(int) E[2 * em + j] - 1];\r
-               x2[1] = C[cm + (int) E[2 * em + j] - 1];\r
-               x2[2] = C[2 * cm + (int) E[2 * em + j] - 1];\r
-\r
-               x3[0] = C[(int) E[3 * em + j] - 1];\r
-               x3[1] = C[cm + (int) E[3 * em + j] - 1];\r
-               x3[2] = C[2 * cm + (int) E[3 * em + j] - 1];\r
-\r
-               for (i = 0; i < 3; ++i)\r
-                       xa[i] = x1[i] - x0[i];\r
-\r
-               for (i = 0; i < 3; ++i)\r
-                       xb[i] = x3[i] - x0[i];\r
-\r
-               //Kreuzprodukt\r
-               xn[0] = (xa[1]) * (xb[2]) - (xa[2]) * (xb[1]);\r
-               xn[1] = (xa[2]) * (xb[0]) - (xa[0]) * (xb[2]);\r
-               xn[2] = (xa[0]) * (xb[1]) - (xa[1]) * (xb[0]);\r
-\r
-               // Lageeigenschaften des Flaechenstuecks\r
-               //if(xn[0]*xn[0]+xn[1]*xn[1]<xn[2]*xn[2])\r
-               if (xn[2] != 0)\r
-                       rx = 2;\r
-               else if (xn[1] != 0)\r
-                       rx = 1;\r
-               else\r
-                       rx = 0;\r
-\r
-               if (xa[2] != 0)\r
-                       rxa = 2;\r
-               else if (xa[1] != 0)\r
-                       rxa = 1;\r
-               else\r
-                       rxa = 0;\r
-\r
-               if (xb[2] != 0)\r
-                       rxb = 2;\r
-               else if (xb[1] != 0)\r
-                       rxb = 1;\r
-               else\r
-                       rxb = 0;\r
-\r
-               //kleinste Ecke finden und fuer \delta verwenden\r
-\r
-               if (xa[rxa] > 0) {\r
-                       if (xb[rxb] > 0) {\r
-                               for (i = 0; i < 3; ++i)\r
-                                       dt[i] = -x0[i];\r
-                       } else {\r
-                               for (i = 0; i < 3; ++i)\r
-                                       dt[i] = -x3[i];\r
-                       }\r
-               } else {\r
-                       if (xb[rxb] > 0) {\r
-                               for (i = 0; i < 3; ++i)\r
-                                       dt[i] = -x1[i];\r
-                       } else {\r
-                               for (i = 0; i < 3; ++i)\r
-                                       dt[i] = -x2[i];\r
-                               //printf("Error! Daten existieren nicht. Zugriff auf vierten punkt");\r
-                       }\r
-               }\r
-\r
-               //for (i=0;i<3;++i)\r
-               //      dt[i] = 0;\r
-\r
-\r
-               // printf("(%d n- %f | %f | %f)\n",j,xn[0],xn[1],xn[2]);\r
-\r
-               for (k = 0; k < em; ++k) {\r
-                       y0[0] = C[(int) E[k] - 1];\r
-                       y0[1] = C[cm + (int) E[k] - 1];\r
-                       y0[2] = C[2 * cm + (int) E[k] - 1];\r
-\r
-                       y1[0] = C[(int) E[em + k] - 1];\r
-                       y1[1] = C[cm + (int) E[em + k] - 1];\r
-                       y1[2] = C[2 * cm + (int) E[em + k] - 1];\r
-\r
-                       y2[0] = C[(int) E[2 * em + k] - 1];\r
-                       y2[1] = C[cm + (int) E[2 * em + k] - 1];\r
-                       y2[2] = C[2 * cm + (int) E[2 * em + k] - 1];\r
-\r
-                       y3[0] = C[(int) E[3 * em + k] - 1];\r
-                       y3[1] = C[cm + (int) E[3 * em + k] - 1];\r
-                       y3[2] = C[2 * cm + (int) E[3 * em + k] - 1];\r
-\r
-                       for (i = 0; i < 3; ++i)\r
-                               ya[i] = y1[i] - y0[i];\r
-\r
-                       for (i = 0; i < 3; ++i)\r
-                               yb[i] = y3[i] - y0[i];\r
-\r
-                       yn[0] = (ya[1]) * (yb[2]) - (ya[2]) * (yb[1]);\r
-                       yn[1] = (ya[2]) * (yb[0]) - (ya[0]) * (yb[2]);\r
-                       yn[2] = (ya[0]) * (yb[1]) - (ya[1]) * (yb[0]);\r
-\r
-                       if (yn[2] != 0)\r
-                               ry = 2;\r
-                       else if (yn[1] != 0)\r
-                               ry = 1;\r
-                       else\r
-                               ry = 0;\r
-\r
-                       if (ya[2] != 0)\r
-                               rya = 2;\r
-                       else if (ya[1] != 0)\r
-                               rya = 1;\r
-                       else\r
-                               rya = 0;\r
-\r
-                       if (yb[2] != 0)\r
-                               ryb = 2;\r
-                       else if (yb[1] != 0)\r
-                               ryb = 1;\r
-                       else\r
-                               ryb = 0;\r
-\r
-                       //kleinste Ecke finden und fuer \delta verwenden\r
-\r
-                       if (ya[rya] > 0) {\r
-                               if (yb[ryb] > 0) {\r
-                                       for (i = 0; i < 3; ++i)\r
-                                               d[i] = dt[i] + y0[i];\r
-                               } else {\r
-                                       for (i = 0; i < 3; ++i)\r
-                                               d[i] = dt[i] + y3[i];\r
-                               }\r
-                       } else {\r
-                               if (yb[ryb] > 0) {\r
-                                       for (i = 0; i < 3; ++i)\r
-                                               d[i] = dt[i] + y1[i];\r
-                               } else {\r
-                                       for (i = 0; i < 3; ++i)\r
-                                               d[i] = dt[i] + y2[i];\r
-                                       //printf("Error! Daten existieren nicht. Zugriff auf vierten punkt");\r
-                               }\r
-                       }\r
-\r
-                       //      for (i = 0; i<3;++i)\r
-                       //              d[i] = y0[i]-x0[i];\r
-\r
-                       //printf("(%d,%d)",rx,ry);\r
-                       if (rx == ry) {\r
-                               //printf("(%d,%d@%d,%d)",rxa,rxb,rya,ryb);\r
-                               //printf("[%.2f,%.2f@%.2f,%.2f]",xa[rxa],xb[rxb],ya[rya],yb[ryb]);\r
-                               //printf("%d%d %.1f %.1f %.1f|||",j,k,dt[0],dt[1],dt[2]);\r
-                               //printf("%d%d %.1f %.1f %.1f\n",j,k,d[0],d[1],d[2]);\r
-                               if (rxa == rya) {\r
-                                       //printf("%d%d %.1f %.1f | %.1f %.1f || %.1f %.1f | %.1f %.1f || %.1f %.1f %.1f\n",j,k,x0[0], x1[0], x0[1], x3[1], y0[0],\r
-                                       //              y1[0], y0[1], y3[1], d[0], d[1], d[2]);\r
-                                       //printf("%d%d %.1f %.1f %.1f\n",j,k,d[0],d[1],d[2]);\r
-                                       tmp\r
-                                                       = calcParIntA( fabs(xa[rxa]), fabs(xb[rxb]),\r
-                                                                       fabs(ya[rxa]), fabs(yb[rxb]), d[rxa],\r
-                                                                       d[rxb], d[rx]);\r
-                                       //       printf("%d%d|%.2f\n",j,k,tmp);\r
-                               } else {\r
-                                       //printf("%d%d %.1f %.1f | %.1f %.1f || %.1f %.1f | %.1f %.1f || %.1f %.1f %.1f\n",j,k,x0[0], x1[0], x0[1], x3[1], y0[0],\r
-                                       //              y1[0], y0[1], y3[1], d[0], d[1], d[2]);\r
-                                       //printf("%d%d %.1f %.1f %.1f\n",j,k,d[0],d[1],d[2]);\r
-                                       tmp\r
-                                                       = calcParIntA( fabs(xa[rxa]), fabs(xb[rxb]),\r
-                                                                       fabs(yb[rxa]), fabs(ya[rxb]), d[rxa],\r
-                                                                       d[rxb], d[rx]);\r
-                                       //       printf("%d%d|%.2f\n",j,k,tmp);\r
-                               }\r
-\r
-                       } else {\r
-                               //printf("(%d,%d@%d,%d)", rxa, rxb, rya, ryb);\r
-                               //printf("(%d,%d)", rx, ry);\r
-                               //printf("\n");\r
-\r
-                               if (rxa == rya) {\r
-                                       tmp\r
-                                                       = calcOrtIntA( fabs(xb[rxb]), fabs(xa[rxa]),\r
-                                                                       fabs(ya[rya]), fabs(yb[ryb]), d[rxb],\r
-                                                                       d[rxa], d[rx]);\r
-                               } else if (rxa == ryb) {\r
-                                       tmp\r
-                                                       = calcOrtIntA( fabs(xb[rxb]), fabs(xa[rxa]),\r
-                                                                       fabs(yb[ryb]), fabs(ya[rya]), d[rxb],\r
-                                                                       d[rxa], d[rx]);\r
-                               } else if (rxb == rya) {\r
-                                       tmp\r
-                                                       = calcOrtIntA( fabs(xa[rxa]), fabs(xb[rxb]),\r
-                                                                       fabs(ya[rya]), fabs(yb[ryb]), d[rxa],\r
-                                                                       d[rxb], d[rx]);\r
-                               } else {\r
-                                       tmp\r
-                                                       = calcOrtIntA( fabs(xa[rxa]), fabs(xb[rxb]),\r
-                                                                       fabs(yb[ryb]), fabs(ya[rya]), d[rxa],\r
-                                                                       d[rxb], d[rx]);\r
-                               }\r
-\r
-                       }\r
-                       A[(k * em) + j] = 1. / (4 * M_PI) * tmp;\r
-\r
-               }\r
-\r
-       }\r
-       //Rueckgabe (eventuell zurueck schreiben)\r
-       //   mxFree(x0);\r
-       //mxFree(x1);\r
-       //mxFree(x3);\r
-       //mxFree(y0);\r
-       //mxFree(y1);\r
-       //mxFree(y3);\r
-       //mxFree(xn);\r
-       //mxFree(yn);\r
-       //mxFree(d);\r
-\r
-       return;\r
-}\r
diff --git a/src/mex_build_AU.cpp b/src/mex_build_AU.cpp
new file mode 100644 (file)
index 0000000..9519a0d
--- /dev/null
@@ -0,0 +1,276 @@
+/*\r
+ * Art der Berechnung durch Parameter bestimmt...\r
+ * Analytisch/Semianalytisch/...\r
+ *\r
+ *\r
+ */\r
+\r
+#include <iostream>\r
+#include <cmath>\r
+#include <cassert>\r
+#include "mex.h"\r
+#include <stdlib.h>\r
+\r
+#define M_EPS 10e-8\r
+\r
+//#include "tbb/parallel_for.h"\r
+\r
+\r
+#include "slpRectangle.hpp"\r
+\r
+using namespace std;\r
+\r
+int dimOfVec(double* vec) {\r
+       if (fabs(vec[2]) > M_EPS)\r
+               return 2;\r
+       else if (fabs(vec[1]) > M_EPS)\r
+               return 1;\r
+       else if (fabs(vec[0]) > M_EPS)\r
+               return 0;\r
+       else {\r
+               cerr << "dimOfVec : (" << vec[0] << vec[1] << vec[2]\r
+                               << ") alle Werte 0 \n";\r
+               return -1;\r
+       }\r
+\r
+}\r
+\r
+inline int dimOfThird(int a, int b) {\r
+       return ((-(a + b) % 3) + 3) % 3;\r
+}\r
+\r
+void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) {\r
+\r
+       int i, j, k; //Schleifenindizes\r
+       double tmp; //Zwischenspeicherung der Einzelnen Werte\r
+\r
+       //Sicherheitsabfragen zu Datengroessen\r
+       if ((nrhs != 4))\r
+               mexErrMsgTxt(\r
+                               "expected (coordinates(Nx3),elements(Mx4),mu(double),type(int))");\r
+       if (nlhs > 1)\r
+               mexErrMsgTxt("has only one output argument");\r
+\r
+       int cm = mxGetM(prhs[0]);\r
+       int cn = mxGetN(prhs[0]);\r
+       if (cn != 3)\r
+               mexErrMsgTxt("expected coordinates (Nx3)");\r
+       cout << "  Coordinaten:" << cm << endl;\r
+\r
+       int em = mxGetM(prhs[1]);\r
+       int en = mxGetN(prhs[1]);\r
+       if (en != 4)\r
+               mexErrMsgTxt("expected elements (Mx4)");\r
+       cout << "  Elemente:" << em << endl;\r
+\r
+       //Auslesen der Parameter\r
+\r
+       plhs[0] = mxCreateDoubleMatrix(em, em, mxREAL);\r
+       double * A = mxGetPr(plhs[0]);\r
+       double * C = mxGetPr(prhs[0]);\r
+       double * E = mxGetPr(prhs[1]);\r
+\r
+       double mu = *(mxGetPr(prhs[2]));\r
+       int type = *(mxGetPr(prhs[3]));\r
+\r
+       //Initialisieren der Hilfsvektoren\r
+\r
+       double * x0 = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
+       double * x1 = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
+       double * x2 = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
+       double * x3 = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
+       double * xa = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
+       double * xb = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
+\r
+       double * y0 = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
+       double * y1 = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
+       double * y2 = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
+       double * y3 = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
+       double * ya = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
+       double * yb = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
+\r
+       double * d = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
+       double * dt = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
+\r
+       // Welche Funktion soll verwendet werden\r
+       double(*ctypeP)(double, double, double, double, double, double, double,\r
+                       double);\r
+       double(*ctypeO)(double, double, double, double, double, double, double,\r
+                       double);\r
+\r
+       //Art der Berechnung bestimmen\r
+       cout << "  Type:" << type << endl;\r
+       switch (type) {\r
+       case 0:\r
+               ctypeP = calcParIntO0;\r
+               ctypeO = calcOrtIntO0;\r
+       case 1:\r
+               ctypeP = calcParIntO1;\r
+               ctypeO = calcOrtIntO1;\r
+       case 2:\r
+               ctypeP = calcParIntO2;\r
+               ctypeO = calcOrtIntO2;\r
+       case 3:\r
+               ctypeP = calcParIntO3;\r
+               ctypeO = calcOrtIntO3;\r
+\r
+       }\r
+\r
+       //LageInformationen\r
+       int rx, rxa, rxb, ry, rya, ryb;\r
+\r
+       //Ausrechnen\r
+       for (j = 0; j < em; ++j) {\r
+               x0[0] = C[(int) E[j] - 1];\r
+               x0[1] = C[cm + (int) E[j] - 1];\r
+               x0[2] = C[2 * cm + (int) E[j] - 1];\r
+\r
+               x1[0] = C[(int) E[em + j] - 1];\r
+               x1[1] = C[cm + (int) E[em + j] - 1];\r
+               x1[2] = C[2 * cm + (int) E[em + j] - 1];\r
+\r
+               x2[0] = C[(int) E[2 * em + j] - 1];\r
+               x2[1] = C[cm + (int) E[2 * em + j] - 1];\r
+               x2[2] = C[2 * cm + (int) E[2 * em + j] - 1];\r
+\r
+               x3[0] = C[(int) E[3 * em + j] - 1];\r
+               x3[1] = C[cm + (int) E[3 * em + j] - 1];\r
+               x3[2] = C[2 * cm + (int) E[3 * em + j] - 1];\r
+\r
+               for (i = 0; i < 3; ++i)\r
+                       xa[i] = x1[i] - x0[i];\r
+\r
+               for (i = 0; i < 3; ++i)\r
+                       xb[i] = x3[i] - x0[i];\r
+\r
+               // Lageeigenschaften des Flaechenstuecks\r
+\r
+               rxa = dimOfVec(xa);\r
+               rxb = dimOfVec(xb);\r
+               rx = dimOfThird(rxa, rxb);\r
+\r
+               //kleinste Ecke finden und fuer \delta verwenden\r
+\r
+               if (xa[rxa] > 0) {\r
+                       if (xb[rxb] > 0) {\r
+                               for (i = 0; i < 3; ++i)\r
+                                       dt[i] = -x0[i];\r
+                       } else {\r
+                               for (i = 0; i < 3; ++i)\r
+                                       dt[i] = -x3[i];\r
+                       }\r
+               } else {\r
+                       if (xb[rxb] > 0) {\r
+                               for (i = 0; i < 3; ++i)\r
+                                       dt[i] = -x1[i];\r
+                       } else {\r
+                               for (i = 0; i < 3; ++i)\r
+                                       dt[i] = -x2[i];\r
+                       }\r
+               }\r
+\r
+               for (k = 0; k < em; ++k) {\r
+                       y0[0] = C[(int) E[k] - 1];\r
+                       y0[1] = C[cm + (int) E[k] - 1];\r
+                       y0[2] = C[2 * cm + (int) E[k] - 1];\r
+\r
+                       y1[0] = C[(int) E[em + k] - 1];\r
+                       y1[1] = C[cm + (int) E[em + k] - 1];\r
+                       y1[2] = C[2 * cm + (int) E[em + k] - 1];\r
+\r
+                       y2[0] = C[(int) E[2 * em + k] - 1];\r
+                       y2[1] = C[cm + (int) E[2 * em + k] - 1];\r
+                       y2[2] = C[2 * cm + (int) E[2 * em + k] - 1];\r
+\r
+                       y3[0] = C[(int) E[3 * em + k] - 1];\r
+                       y3[1] = C[cm + (int) E[3 * em + k] - 1];\r
+                       y3[2] = C[2 * cm + (int) E[3 * em + k] - 1];\r
+\r
+                       for (i = 0; i < 3; ++i)\r
+                               ya[i] = y1[i] - y0[i];\r
+\r
+                       for (i = 0; i < 3; ++i)\r
+                               yb[i] = y3[i] - y0[i];\r
+\r
+                       // Lageeigenschaften des Flaechenstuecks\r
+\r
+                       rya = dimOfVec(ya);\r
+                       ryb = dimOfVec(yb);\r
+                       ry = dimOfThird(rya, ryb);\r
+\r
+                       //kleinste Ecke finden und fuer \delta verwenden\r
+\r
+                       if (ya[rya] > 0) {\r
+                               if (yb[ryb] > 0) {\r
+                                       for (i = 0; i < 3; ++i)\r
+                                               d[i] = dt[i] + y0[i];\r
+                               } else {\r
+                                       for (i = 0; i < 3; ++i)\r
+                                               d[i] = dt[i] + y3[i];\r
+                               }\r
+                       } else {\r
+                               if (yb[ryb] > 0) {\r
+                                       for (i = 0; i < 3; ++i)\r
+                                               d[i] = dt[i] + y1[i];\r
+                               } else {\r
+                                       for (i = 0; i < 3; ++i)\r
+                                               d[i] = dt[i] + y2[i];\r
+                               }\r
+                       }\r
+\r
+                       if (rx == ry) {\r
+                               if (rxa == rya) {\r
+                                       tmp\r
+                                                       = ctypeP(fabs(xa[rxa]), fabs(xb[rxb]),\r
+                                                                       fabs(ya[rxa]), fabs(yb[rxb]), d[rxa],\r
+                                                                       d[rxb], d[rx], mu);\r
+\r
+                               } else {\r
+                                       tmp\r
+                                                       = ctypeP(fabs(xa[rxa]), fabs(xb[rxb]),\r
+                                                                       fabs(yb[rxa]), fabs(ya[rxb]), d[rxa],\r
+                                                                       d[rxb], d[rx], mu);\r
+                               }\r
+\r
+                       } else {\r
+\r
+                               if (rxa == rya) {\r
+                                       tmp\r
+                                                       = ctypeO(fabs(xb[rxb]), fabs(xa[rxa]),\r
+                                                                       fabs(ya[rya]), fabs(yb[ryb]), d[rxb],\r
+                                                                       d[rxa], d[rx], mu);\r
+                               } else if (rxa == ryb) {\r
+                                       tmp\r
+                                                       = ctypeO(fabs(xb[rxb]), fabs(xa[rxa]),\r
+                                                                       fabs(yb[ryb]), fabs(ya[rya]), d[rxb],\r
+                                                                       d[rxa], d[rx], mu);\r
+                               } else if (rxb == rya) {\r
+                                       tmp\r
+                                                       = ctypeO(fabs(xa[rxa]), fabs(xb[rxb]),\r
+                                                                       fabs(ya[rya]), fabs(yb[ryb]), d[rxa],\r
+                                                                       d[rxb], d[rx], mu);\r
+                               } else {\r
+                                       tmp\r
+                                                       = ctypeO(fabs(xa[rxa]), fabs(xb[rxb]),\r
+                                                                       fabs(yb[ryb]), fabs(ya[rya]), d[rxa],\r
+                                                                       d[rxb], d[rx], mu);\r
+                               }\r
+\r
+                       }\r
+                       A[(k * em) + j] = 1. / (4 * M_PI) * tmp;\r
+\r
+               }\r
+\r
+       }\r
+       //Rueckgabe (eventuell zurueck schreiben)\r
+       //mxFree(x0);\r
+       //mxFree(x1);\r
+       //mxFree(x3);\r
+       //mxFree(y0);\r
+       //mxFree(y1);\r
+       //mxFree(y3);\r
+       //mxFree(d);\r
+       //mxFree(dt);\r
+\r
+       return;\r
+}\r
diff --git a/src/mex_build_As1.cpp b/src/mex_build_As1.cpp
deleted file mode 100644 (file)
index cc1b7e5..0000000
+++ /dev/null
@@ -1,287 +0,0 @@
-/*\r
- * voll Analytisch\r
- * Element mit groesserer Diagonale nach aussen gedreht\r
- *\r
- *\r
- */\r
-\r
-\r
-#include <iostream>\r
-#include <cmath>\r
-#include <cassert>\r
-#include "mex.h"\r
-#include <stdlib.h>\r
-\r
-//#include "tbb/parallel_for.h"\r
-\r
-\r
-#include "slpRectangle.hpp"\r
-\r
-#define EPS 0.02\r
-\r
-using namespace std;\r
-\r
-inline int dimOfVec(double * vec)\r
-{\r
-       if (vec[2] != 0)\r
-               return 2;\r
-       else if (vec[1] != 0)\r
-               return 1;\r
-       else\r
-               return 0;\r
-}\r
-\r
-\r
-void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) {\r
-\r
-       int i, j, k;\r
-\r
-       //sicherheitsabfragen zu Datengroessen\r
-       if (nrhs != 2)\r
-               mexErrMsgTxt("expected (coordinates(Nx3),elements(Mx4))");\r
-       if (nlhs > 1)\r
-               mexErrMsgTxt("has only one output argument");\r
-\r
-       int cm = mxGetM(prhs[0]);\r
-       int cn = mxGetN(prhs[0]);\r
-\r
-       if (cn != 3)\r
-               mexErrMsgTxt("expected coordinates (Nx3)");\r
-       int em = mxGetM(prhs[1]);\r
-       int en = mxGetN(prhs[1]);\r
-       if (en != 4)\r
-               mexErrMsgTxt("expected elements (Mx4)");\r
-       //Vorbereitung der Daten\r
-\r
-       plhs[0] = mxCreateDoubleMatrix(em, em, mxREAL);\r
-       double * A = mxGetPr(plhs[0]);\r
-       double * C = mxGetPr(prhs[0]);\r
-       double * E = mxGetPr(prhs[1]);\r
-\r
-       double * x0 = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-       double * x1 = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-       double * x2 = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-       double * x3 = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-       double * xn = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-       double * xa = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-       double * xb = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-\r
-       double * y0 = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-       double * y1 = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-       double * y2 = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-       double * y3 = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-       double * yn = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-       double * ya = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-       double * yb = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-\r
-       double * d = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-       double * dt = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-\r
-       double tmp,tmp2;\r
-\r
-       int itmp;\r
-       double dtmp;\r
-       double * vtmp;\r
-\r
-       long double xda,xdb,yda,ydb;\r
-\r
-       //LageInformationen\r
-       int rx, rxa, rxb, ry, rya, ryb;\r
-\r
-       //Ausrechnen\r
-       for (j = 0; j < em; ++j) {\r
-               x0[0] = C[(int) E[j] - 1];\r
-               x0[1] = C[cm + (int) E[j] - 1];\r
-               x0[2] = C[2 * cm + (int) E[j] - 1];\r
-\r
-               x1[0] = C[(int) E[em + j] - 1];\r
-               x1[1] = C[cm + (int) E[em + j] - 1];\r
-               x1[2] = C[2 * cm + (int) E[em + j] - 1];\r
-\r
-               x2[0] = C[(int) E[2 * em + j] - 1];\r
-               x2[1] = C[cm + (int) E[2 * em + j] - 1];\r
-               x2[2] = C[2 * cm + (int) E[2 * em + j] - 1];\r
-\r
-               x3[0] = C[(int) E[3 * em + j] - 1];\r
-               x3[1] = C[cm + (int) E[3 * em + j] - 1];\r
-               x3[2] = C[2 * cm + (int) E[3 * em + j] - 1];\r
-\r
-               for (i = 0; i < 3; ++i)\r
-                       xa[i] = x1[i] - x0[i];\r
-\r
-               for (i = 0; i < 3; ++i)\r
-                       xb[i] = x3[i] - x0[i];\r
-\r
-               //Kreuzprodukt\r
-               xn[0] = (xa[1]) * (xb[2]) - (xa[2]) * (xb[1]);\r
-               xn[1] = (xa[2]) * (xb[0]) - (xa[0]) * (xb[2]);\r
-               xn[2] = (xa[0]) * (xb[1]) - (xa[1]) * (xb[0]);\r
-\r
-               // Lageeigenschaften des Flaechenstuecks\r
-               //if(xn[0]*xn[0]+xn[1]*xn[1]<xn[2]*xn[2])\r
-\r
-               rx = dimOfVec(xn);\r
-\r
-               rxa = dimOfVec(xa);\r
-\r
-               rxb = dimOfVec(xb);\r
-\r
-\r
-               //kleinste Ecke finden und fuer \delta verwenden\r
-\r
-               if (xa[rxa] > 0) {\r
-                       if (xb[rxb] > 0) {\r
-                               for (i = 0; i < 3; ++i)\r
-                                       dt[i] = -x0[i];\r
-                       } else {\r
-                               for (i = 0; i < 3; ++i)\r
-                                       dt[i] = -x3[i];\r
-                       }\r
-               } else {\r
-                       if (xb[rxb] > 0) {\r
-                               for (i = 0; i < 3; ++i)\r
-                                       dt[i] = -x1[i];\r
-                       } else {\r
-                               for (i = 0; i < 3; ++i)\r
-                                       dt[i] = -x2[i];\r
-                               //printf("Error! Daten existieren nicht. Zugriff auf vierten punkt");\r
-                       }\r
-               }\r
-\r
-               xda = xa[rxa];\r
-               xdb = xb[rxb];\r
-\r
-               for (k = 0; k < em; ++k) {\r
-\r
-\r
-\r
-                       y0[0] = C[(int) E[k] - 1];\r
-                       y0[1] = C[cm + (int) E[k] - 1];\r
-                       y0[2] = C[2 * cm + (int) E[k] - 1];\r
-\r
-                       y1[0] = C[(int) E[em + k] - 1];\r
-                       y1[1] = C[cm + (int) E[em + k] - 1];\r
-                       y1[2] = C[2 * cm + (int) E[em + k] - 1];\r
-\r
-                       y2[0] = C[(int) E[2 * em + k] - 1];\r
-                       y2[1] = C[cm + (int) E[2 * em + k] - 1];\r
-                       y2[2] = C[2 * cm + (int) E[2 * em + k] - 1];\r
-\r
-                       y3[0] = C[(int) E[3 * em + k] - 1];\r
-                       y3[1] = C[cm + (int) E[3 * em + k] - 1];\r
-                       y3[2] = C[2 * cm + (int) E[3 * em + k] - 1];\r
-\r
-                       for (i = 0; i < 3; ++i)\r
-                               ya[i] = y1[i] - y0[i];\r
-\r
-                       for (i = 0; i < 3; ++i)\r
-                               yb[i] = y3[i] - y0[i];\r
-\r
-                       yn[0] = (ya[1]) * (yb[2]) - (ya[2]) * (yb[1]);\r
-                       yn[1] = (ya[2]) * (yb[0]) - (ya[0]) * (yb[2]);\r
-                       yn[2] = (ya[0]) * (yb[1]) - (ya[1]) * (yb[0]);\r
-\r
-                       ry = dimOfVec(yn);\r
-\r
-                       rya = dimOfVec(ya);\r
-\r
-                       ryb = dimOfVec(yb);\r
-\r
-                       //kleinste Ecke finden und fuer \delta verwenden\r
-\r
-                       if (ya[rya] > 0) {\r
-                               if (yb[ryb] > 0) {\r
-                                       for (i = 0; i < 3; ++i)\r
-                                               d[i] = dt[i] + y0[i];\r
-                               } else {\r
-                                       for (i = 0; i < 3; ++i)\r
-                                               d[i] = dt[i] + y3[i];\r
-                               }\r
-                       } else {\r
-                               if (yb[ryb] > 0) {\r
-                                       for (i = 0; i < 3; ++i)\r
-                                               d[i] = dt[i] + y1[i];\r
-                               } else {\r
-                                       for (i = 0; i < 3; ++i)\r
-                                               d[i] = dt[i] + y2[i];\r
-                                       //printf("Error! Daten existieren nicht. Zugriff auf vierten punkt");\r
-                               }\r
-                       }\r
-\r
-                       yda = ya[rya];\r
-                       ydb = yb[ryb];\r
-\r
-                       //printf("(%d,%d)",rx,ry);\r
-                       if (rx == ry) {\r
-                               //printf("(%d,%d@%d,%d)",rxa,rxb,rya,ryb);\r
-                               //printf("[%.2f,%.2f@%.2f,%.2f]",xda,xdb,yda,ydb);\r
-                               //printf("%d%d %.1f %.1f %.1f|||",j,k,dt[0],dt[1],dt[2]);\r
-                               //printf("%d%d %.1f %.1f %.1f\n",j,k,d[0],d[1],d[2]);\r
-                               if (rxa == rya) {\r
-                                       //printf("%d%d %.1f %.1f | %.1f %.1f || %.1f %.1f | %.1f %.1f || %.1f %.1f %.1f\n",j,k,x0[0], x1[0], x0[1], x3[1], y0[0],\r
-                                       //              y1[0], y0[1], y3[1], d[0], d[1], d[2]);\r
-                                       //printf("%d%d %.1f %.1f %.1f\n",j,k,d[0],d[1],d[2]);\r
-\r
-                                       tmp\r
-                                                       = calcParIntO1( fabs(xda), fabs(xdb),\r
-                                                                       fabs(yda), fabs(ydb), d[rxa],\r
-                                                                       d[rxb], d[rx]);\r
-\r
-                               } else {\r
-                                       //printf("%d%d %.1f %.1f | %.1f %.1f || %.1f %.1f | %.1f %.1f || %.1f %.1f %.1f\n",j,k,x0[0], x1[0], x0[1], x3[1], y0[0],\r
-                                       //              y1[0], y0[1], y3[1], d[0], d[1], d[2]);\r
-                                       //printf("%d%d %.1f %.1f %.1f\n",j,k,d[0],d[1],d[2]);\r
-                                       tmp\r
-                                                       = calcParIntO1( fabs(xda), fabs(xdb),\r
-                                                                       fabs(ydb), fabs(yda), d[rxa],\r
-                                                                       d[rxb], d[rx]);\r
-                                       //       printf("%d%d|%.2f\n",j,k,tmp);\r
-                               }\r
-\r
-                       } else {\r
-                               //printf("(%d,%d@%d,%d)", rxa, rxb, rya, ryb);\r
-                               //printf("(%d,%d)", rx, ry);\r
-                               //printf("\n");\r
-\r
-                               if (rxa == rya) {\r
-                                       tmp\r
-                                                       = calcOrtIntO1( fabs(xdb), fabs(xda),\r
-                                                                       fabs(yda), fabs(ydb), d[rxb],\r
-                                                                       d[rxa], d[rx]);\r
-                               } else if (rxa == ryb) {\r
-                                       tmp\r
-                                                       = calcOrtIntO1( fabs(xdb), fabs(xda),\r
-                                                                       fabs(ydb), fabs(yda), d[rxb],\r
-                                                                       d[rxa], d[rx]);\r
-                               } else if (rxb == rya) {\r
-                                       tmp\r
-                                                       = calcOrtIntO1( fabs(xda), fabs(xdb),\r
-                                                                       fabs(yda), fabs(ydb), d[rxa],\r
-                                                                       d[rxb], d[rx]);\r
-                               } else {\r
-                                       tmp\r
-                                                       = calcOrtIntO1( fabs(xda), fabs(xdb),\r
-                                                                       fabs(ydb), fabs(yda), d[rxa],\r
-                                                                       d[rxb], d[rx]);\r
-                               }\r
-\r
-                       }\r
-                       A[(k * em) + j] = 1. / (4 * M_PI) * tmp;\r
-\r
-               }\r
-\r
-       }\r
-       //printf("\n");\r
-       //Rueckgabe (eventuell zurueck schreiben)\r
-       //   mxFree(x0);\r
-       //mxFree(x1);\r
-       //mxFree(x3);\r
-       //mxFree(y0);\r
-       //mxFree(y1);\r
-       //mxFree(y3);\r
-       //mxFree(xn);\r
-       //mxFree(yn);\r
-       //mxFree(d);\r
-\r
-       return;\r
-}\r
diff --git a/src/mex_build_As2.cpp b/src/mex_build_As2.cpp
deleted file mode 100644 (file)
index 2366177..0000000
+++ /dev/null
@@ -1,298 +0,0 @@
-/*\r
- * voll Analytisch\r
- * Element mit groesserer Diagonale nach aussen gedreht\r
- * Quadratur ueber E_j bei dist(E_j,E_k) >= eta*dia(E_j) | dia(E_j) <= dia(E_k)\r
- *\r
- */\r
-\r
-\r
-#include <iostream>\r
-#include <cmath>\r
-#include <cassert>\r
-#include "mex.h"\r
-#include <stdlib.h>\r
-\r
-//#include "tbb/parallel_for.h"\r
-\r
-\r
-#include "slpRectangle.hpp"\r
-\r
-//Quadraturverwendung!!!\r
-#define eta 0.8\r
-\r
-using namespace std;\r
-\r
-inline int dimOfVec(double * vec)\r
-{\r
-\r
-       if (vec[2] != 0)\r
-               return 2;\r
-       else if (vec[1] != 0)\r
-               return 1;\r
-       else if (vec[0] != 0)\r
-               return 0;\r
-       else{\r
-               cerr << "dimOfVec : alle Werte 0";\r
-               return -1;\r
-       }\r
-}\r
-\r
-inline int dimOfThird(int a, int b)\r
-{\r
-       return mod(-(a+b),3);\r
-}\r
-\r
-\r
-void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) {\r
-\r
-       int i, j, k;\r
-\r
-       //sicherheitsabfragen zu Datengroessen\r
-       if (nrhs != 2)\r
-               mexErrMsgTxt("expected (coordinates(Nx3),elements(Mx4))");\r
-       if (nlhs > 1)\r
-               mexErrMsgTxt("has only one output argument");\r
-\r
-       int cm = mxGetM(prhs[0]);\r
-       int cn = mxGetN(prhs[0]);\r
-\r
-       if (cn != 3)\r
-               mexErrMsgTxt("expected coordinates (Nx3)");\r
-       int em = mxGetM(prhs[1]);\r
-       int en = mxGetN(prhs[1]);\r
-       if (en != 4)\r
-               mexErrMsgTxt("expected elements (Mx4)");\r
-       //Vorbereitung der Daten\r
-\r
-       plhs[0] = mxCreateDoubleMatrix(em, em, mxREAL);\r
-       double * A = mxGetPr(plhs[0]);\r
-       double * C = mxGetPr(prhs[0]);\r
-       double * E = mxGetPr(prhs[1]);\r
-\r
-       double * x0 = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-       double * x1 = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-       double * x2 = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-       double * x3 = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-       double * xn = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-       double * xa = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-       double * xb = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-\r
-       double * y0 = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-       double * y1 = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-       double * y2 = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-       double * y3 = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-       double * yn = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-       double * ya = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-       double * yb = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-\r
-       double * d = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-       double * dt = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-\r
-       double tmp,tmp2;\r
-\r
-       int itmp;\r
-       double dtmp;\r
-       double * vtmp;\r
-\r
-       long double xda,xdb,yda,ydb;\r
-\r
-       //LageInformationen\r
-       int rx, rxa, rxb, ry, rya, ryb;\r
-\r
-       //Ausrechnen\r
-       for (j = 0; j < em; ++j) {\r
-               x0[0] = C[(int) E[j] - 1];\r
-               x0[1] = C[cm + (int) E[j] - 1];\r
-               x0[2] = C[2 * cm + (int) E[j] - 1];\r
-\r
-               x1[0] = C[(int) E[em + j] - 1];\r
-               x1[1] = C[cm + (int) E[em + j] - 1];\r
-               x1[2] = C[2 * cm + (int) E[em + j] - 1];\r
-\r
-               x2[0] = C[(int) E[2 * em + j] - 1];\r
-               x2[1] = C[cm + (int) E[2 * em + j] - 1];\r
-               x2[2] = C[2 * cm + (int) E[2 * em + j] - 1];\r
-\r
-               x3[0] = C[(int) E[3 * em + j] - 1];\r
-               x3[1] = C[cm + (int) E[3 * em + j] - 1];\r
-               x3[2] = C[2 * cm + (int) E[3 * em + j] - 1];\r
-\r
-               for (i = 0; i < 3; ++i)\r
-                       xa[i] = x1[i] - x0[i];\r
-\r
-               for (i = 0; i < 3; ++i)\r
-                       xb[i] = x3[i] - x0[i];\r
-\r
-               //Kreuzprodukt\r
-               xn[0] = (xa[1]) * (xb[2]) - (xa[2]) * (xb[1]);\r
-               xn[1] = (xa[2]) * (xb[0]) - (xa[0]) * (xb[2]);\r
-               xn[2] = (xa[0]) * (xb[1]) - (xa[1]) * (xb[0]);\r
-\r
-               // Lageeigenschaften des Flaechenstuecks\r
-               //if(xn[0]*xn[0]+xn[1]*xn[1]<xn[2]*xn[2])\r
-\r
-               rx = dimOfVec(xn);\r
-\r
-               rxa = dimOfVec(xa);\r
-\r
-               rxb = dimOfVec(xb);\r
-\r
-\r
-               //kleinste Ecke finden und fuer \delta verwenden\r
-\r
-               if (xa[rxa] > 0) {\r
-                       if (xb[rxb] > 0) {\r
-                               for (i = 0; i < 3; ++i)\r
-                                       dt[i] = -x0[i];\r
-                       } else {\r
-                               for (i = 0; i < 3; ++i)\r
-                                       dt[i] = -x3[i];\r
-                       }\r
-               } else {\r
-                       if (xb[rxb] > 0) {\r
-                               for (i = 0; i < 3; ++i)\r
-                                       dt[i] = -x1[i];\r
-                       } else {\r
-                               for (i = 0; i < 3; ++i)\r
-                                       dt[i] = -x2[i];\r
-                               //printf("Error! Daten existieren nicht. Zugriff auf vierten punkt");\r
-                       }\r
-               }\r
-\r
-               xda = xa[rxa];\r
-               xdb = xb[rxb];\r
-\r
-               for (k = 0; k < em; ++k) {\r
-\r
-\r
-\r
-                       y0[0] = C[(int) E[k] - 1];\r
-                       y0[1] = C[cm + (int) E[k] - 1];\r
-                       y0[2] = C[2 * cm + (int) E[k] - 1];\r
-\r
-                       y1[0] = C[(int) E[em + k] - 1];\r
-                       y1[1] = C[cm + (int) E[em + k] - 1];\r
-                       y1[2] = C[2 * cm + (int) E[em + k] - 1];\r
-\r
-                       y2[0] = C[(int) E[2 * em + k] - 1];\r
-                       y2[1] = C[cm + (int) E[2 * em + k] - 1];\r
-                       y2[2] = C[2 * cm + (int) E[2 * em + k] - 1];\r
-\r
-                       y3[0] = C[(int) E[3 * em + k] - 1];\r
-                       y3[1] = C[cm + (int) E[3 * em + k] - 1];\r
-                       y3[2] = C[2 * cm + (int) E[3 * em + k] - 1];\r
-\r
-                       for (i = 0; i < 3; ++i)\r
-                               ya[i] = y1[i] - y0[i];\r
-\r
-                       for (i = 0; i < 3; ++i)\r
-                               yb[i] = y3[i] - y0[i];\r
-\r
-                       yn[0] = (ya[1]) * (yb[2]) - (ya[2]) * (yb[1]);\r
-                       yn[1] = (ya[2]) * (yb[0]) - (ya[0]) * (yb[2]);\r
-                       yn[2] = (ya[0]) * (yb[1]) - (ya[1]) * (yb[0]);\r
-\r
-                       ry = dimOfVec(yn);\r
-\r
-                       rya = dimOfVec(ya);\r
-\r
-                       ryb = dimOfVec(yb);\r
-\r
-                       //kleinste Ecke finden und fuer \delta verwenden\r
-\r
-                       if (ya[rya] > 0) {\r
-                               if (yb[ryb] > 0) {\r
-                                       for (i = 0; i < 3; ++i)\r
-                                               d[i] = dt[i] + y0[i];\r
-                               } else {\r
-                                       for (i = 0; i < 3; ++i)\r
-                                               d[i] = dt[i] + y3[i];\r
-                               }\r
-                       } else {\r
-                               if (yb[ryb] > 0) {\r
-                                       for (i = 0; i < 3; ++i)\r
-                                               d[i] = dt[i] + y1[i];\r
-                               } else {\r
-                                       for (i = 0; i < 3; ++i)\r
-                                               d[i] = dt[i] + y2[i];\r
-                                       //printf("Error! Daten existieren nicht. Zugriff auf vierten punkt");\r
-                               }\r
-                       }\r
-\r
-                       yda = ya[rya];\r
-                       ydb = yb[ryb];\r
-\r
-                       //printf("(%d,%d)",rx,ry);\r
-                       if (rx == ry) {\r
-                               //printf("(%d,%d@%d,%d)",rxa,rxb,rya,ryb);\r
-                               //printf("[%.2f,%.2f@%.2f,%.2f]",xda,xdb,yda,ydb);\r
-                               //printf("%d%d %.1f %.1f %.1f|||",j,k,dt[0],dt[1],dt[2]);\r
-                               //printf("%d%d %.1f %.1f %.1f\n",j,k,d[0],d[1],d[2]);\r
-                               if (rxa == rya) {\r
-                                       //printf("%d%d %.1f %.1f | %.1f %.1f || %.1f %.1f | %.1f %.1f || %.1f %.1f %.1f\n",j,k,x0[0], x1[0], x0[1], x3[1], y0[0],\r
-                                       //              y1[0], y0[1], y3[1], d[0], d[1], d[2]);\r
-                                       //printf("%d%d %.1f %.1f %.1f\n",j,k,d[0],d[1],d[2]);\r
-\r
-                                       tmp\r
-                                                       = calcParIntO2( fabs(xda), fabs(xdb),\r
-                                                                       fabs(yda), fabs(ydb), d[rxa],\r
-                                                                       d[rxb], d[rx],eta);\r
-\r
-                               } else {\r
-                                       //printf("%d%d %.1f %.1f | %.1f %.1f || %.1f %.1f | %.1f %.1f || %.1f %.1f %.1f\n",j,k,x0[0], x1[0], x0[1], x3[1], y0[0],\r
-                                       //              y1[0], y0[1], y3[1], d[0], d[1], d[2]);\r
-                                       //printf("%d%d %.1f %.1f %.1f\n",j,k,d[0],d[1],d[2]);\r
-                                       tmp\r
-                                                       = calcParIntO2( fabs(xda), fabs(xdb),\r
-                                                                       fabs(ydb), fabs(yda), d[rxa],\r
-                                                                       d[rxb], d[rx],eta);\r
-                                       //       printf("%d%d|%.2f\n",j,k,tmp);\r
-                               }\r
-\r
-                       } else {\r
-                               //printf("(%d,%d@%d,%d)", rxa, rxb, rya, ryb);\r
-                               //printf("(%d,%d)", rx, ry);\r
-                               //printf("\n");\r
-\r
-                               if (rxa == rya) {\r
-                                       tmp\r
-                                                       = calcOrtIntO2( fabs(xdb), fabs(xda),\r
-                                                                       fabs(yda), fabs(ydb), d[rxb],\r
-                                                                       d[rxa], d[rx],eta);\r
-                               } else if (rxa == ryb) {\r
-                                       tmp\r
-                                                       = calcOrtIntO2( fabs(xdb), fabs(xda),\r
-                                                                       fabs(ydb), fabs(yda), d[rxb],\r
-                                                                       d[rxa], d[rx],eta);\r
-                               } else if (rxb == rya) {\r
-                                       tmp\r
-                                                       = calcOrtIntO2( fabs(xda), fabs(xdb),\r
-                                                                       fabs(yda), fabs(ydb), d[rxa],\r
-                                                                       d[rxb], d[rx],eta);\r
-                               } else {\r
-                                       tmp\r
-                                                       = calcOrtIntO2( fabs(xda), fabs(xdb),\r
-                                                                       fabs(ydb), fabs(yda), d[rxa],\r
-                                                                       d[rxb], d[rx],eta);\r
-                               }\r
-\r
-                       }\r
-                       A[(k * em) + j] = 1. / (4 * M_PI) * tmp;\r
-\r
-               }\r
-\r
-       }\r
-       //printf("\n");\r
-       //Rueckgabe (eventuell zurueck schreiben)\r
-       //   mxFree(x0);\r
-       //mxFree(x1);\r
-       //mxFree(x3);\r
-       //mxFree(y0);\r
-       //mxFree(y1);\r
-       //mxFree(y3);\r
-       //mxFree(xn);\r
-       //mxFree(yn);\r
-       //mxFree(d);\r
-\r
-       return;\r
-}\r
diff --git a/src/mex_build_As3.cpp b/src/mex_build_As3.cpp
deleted file mode 100644 (file)
index 6a6da3a..0000000
+++ /dev/null
@@ -1,288 +0,0 @@
-/*\r
- * voll Analytisch\r
- * Element mit groesserer Diagonale nach aussen gedreht\r
- * Quadratur ueber E_j bei dist(E_j,E_k) >= eta*dia(E_j) | dia(E_j) <= dia(E_k)\r
- *\r
- */\r
-\r
-\r
-#include <iostream>\r
-#include <cmath>\r
-#include <cassert>\r
-#include "mex.h"\r
-#include <stdlib.h>\r
-\r
-//#include "tbb/parallel_for.h"\r
-\r
-\r
-#include "slpRectangle.hpp"\r
-\r
-//Quadraturverwendung!!!\r
-#define eta 0.8\r
-\r
-using namespace std;\r
-\r
-inline int dimOfVec(double * vec)\r
-{\r
-       if (vec[2] != 0)\r
-               return 2;\r
-       else if (vec[1] != 0)\r
-               return 1;\r
-       else\r
-               return 0;\r
-}\r
-\r
-\r
-void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) {\r
-\r
-       int i, j, k;\r
-\r
-       //sicherheitsabfragen zu Datengroessen\r
-       if (nrhs != 2)\r
-               mexErrMsgTxt("expected (coordinates(Nx3),elements(Mx4))");\r
-       if (nlhs > 1)\r
-               mexErrMsgTxt("has only one output argument");\r
-\r
-       int cm = mxGetM(prhs[0]);\r
-       int cn = mxGetN(prhs[0]);\r
-\r
-       if (cn != 3)\r
-               mexErrMsgTxt("expected coordinates (Nx3)");\r
-       int em = mxGetM(prhs[1]);\r
-       int en = mxGetN(prhs[1]);\r
-       if (en != 4)\r
-               mexErrMsgTxt("expected elements (Mx4)");\r
-       //Vorbereitung der Daten\r
-\r
-       plhs[0] = mxCreateDoubleMatrix(em, em, mxREAL);\r
-       double * A = mxGetPr(plhs[0]);\r
-       double * C = mxGetPr(prhs[0]);\r
-       double * E = mxGetPr(prhs[1]);\r
-\r
-       double * x0 = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-       double * x1 = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-       double * x2 = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-       double * x3 = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-       double * xn = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-       double * xa = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-       double * xb = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-\r
-       double * y0 = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-       double * y1 = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-       double * y2 = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-       double * y3 = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-       double * yn = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-       double * ya = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-       double * yb = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-\r
-       double * d = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-       double * dt = mxGetPr(mxCreateDoubleMatrix(3, 1, mxREAL));\r
-\r
-       double tmp,tmp2;\r
-\r
-       int itmp;\r
-       double dtmp;\r
-       double * vtmp;\r
-\r
-       long double xda,xdb,yda,ydb;\r
-\r
-       //LageInformationen\r
-       int rx, rxa, rxb, ry, rya, ryb;\r
-\r
-       //Ausrechnen\r
-       for (j = 0; j < em; ++j) {\r
-               x0[0] = C[(int) E[j] - 1];\r
-               x0[1] = C[cm + (int) E[j] - 1];\r
-               x0[2] = C[2 * cm + (int) E[j] - 1];\r
-\r
-               x1[0] = C[(int) E[em + j] - 1];\r
-               x1[1] = C[cm + (int) E[em + j] - 1];\r
-               x1[2] = C[2 * cm + (int) E[em + j] - 1];\r
-\r
-               x2[0] = C[(int) E[2 * em + j] - 1];\r
-               x2[1] = C[cm + (int) E[2 * em + j] - 1];\r
-               x2[2] = C[2 * cm + (int) E[2 * em + j] - 1];\r
-\r
-               x3[0] = C[(int) E[3 * em + j] - 1];\r
-               x3[1] = C[cm + (int) E[3 * em + j] - 1];\r
-               x3[2] = C[2 * cm + (int) E[3 * em + j] - 1];\r
-\r
-               for (i = 0; i < 3; ++i)\r
-                       xa[i] = x1[i] - x0[i];\r
-\r
-               for (i = 0; i < 3; ++i)\r
-                       xb[i] = x3[i] - x0[i];\r
-\r
-               //Kreuzprodukt\r
-               xn[0] = (xa[1]) * (xb[2]) - (xa[2]) * (xb[1]);\r
-               xn[1] = (xa[2]) * (xb[0]) - (xa[0]) * (xb[2]);\r
-               xn[2] = (xa[0]) * (xb[1]) - (xa[1]) * (xb[0]);\r
-\r
-               // Lageeigenschaften des Flaechenstuecks\r
-               //if(xn[0]*xn[0]+xn[1]*xn[1]<xn[2]*xn[2])\r
-\r
-               rx = dimOfVec(xn);\r
-\r
-               rxa = dimOfVec(xa);\r
-\r
-               rxb = dimOfVec(xb);\r
-\r
-\r
-               //kleinste Ecke finden und fuer \delta verwenden\r
-\r
-               if (xa[rxa] > 0) {\r
-                       if (xb[rxb] > 0) {\r
-                               for (i = 0; i < 3; ++i)\r
-                                       dt[i] = -x0[i];\r
-                       } else {\r
-                               for (i = 0; i < 3; ++i)\r
-                                       dt[i] = -x3[i];\r
-                       }\r
-               } else {\r
-                       if (xb[rxb] > 0) {\r
-                               for (i = 0; i < 3; ++i)\r
-                                       dt[i] = -x1[i];\r
-                       } else {\r
-                               for (i = 0; i < 3; ++i)\r
-                                       dt[i] = -x2[i];\r
-                               //printf("Error! Daten existieren nicht. Zugriff auf vierten punkt");\r
-                       }\r
-               }\r
-\r
-               xda = xa[rxa];\r
-               xdb = xb[rxb];\r
-\r
-               for (k = 0; k < em; ++k) {\r
-\r
-\r
-\r
-                       y0[0] = C[(int) E[k] - 1];\r
-                       y0[1] = C[cm + (int) E[k] - 1];\r
-                       y0[2] = C[2 * cm + (int) E[k] - 1];\r
-\r
-                       y1[0] = C[(int) E[em + k] - 1];\r
-                       y1[1] = C[cm + (int) E[em + k] - 1];\r
-                       y1[2] = C[2 * cm + (int) E[em + k] - 1];\r
-\r
-                       y2[0] = C[(int) E[2 * em + k] - 1];\r
-                       y2[1] = C[cm + (int) E[2 * em + k] - 1];\r
-                       y2[2] = C[2 * cm + (int) E[2 * em + k] - 1];\r
-\r
-                       y3[0] = C[(int) E[3 * em + k] - 1];\r
-                       y3[1] = C[cm + (int) E[3 * em + k] - 1];\r
-                       y3[2] = C[2 * cm + (int) E[3 * em + k] - 1];\r
-\r
-                       for (i = 0; i < 3; ++i)\r
-                               ya[i] = y1[i] - y0[i];\r
-\r
-                       for (i = 0; i < 3; ++i)\r
-                               yb[i] = y3[i] - y0[i];\r
-\r
-                       yn[0] = (ya[1]) * (yb[2]) - (ya[2]) * (yb[1]);\r
-                       yn[1] = (ya[2]) * (yb[0]) - (ya[0]) * (yb[2]);\r
-                       yn[2] = (ya[0]) * (yb[1]) - (ya[1]) * (yb[0]);\r
-\r
-                       ry = dimOfVec(yn);\r
-\r
-                       rya = dimOfVec(ya);\r
-\r
-                       ryb = dimOfVec(yb);\r
-\r
-                       //kleinste Ecke finden und fuer \delta verwenden\r
-\r
-                       if (ya[rya] > 0) {\r
-                               if (yb[ryb] > 0) {\r
-                                       for (i = 0; i < 3; ++i)\r
-                                               d[i] = dt[i] + y0[i];\r
-                               } else {\r
-                                       for (i = 0; i < 3; ++i)\r
-                                               d[i] = dt[i] + y3[i];\r
-                               }\r
-                       } else {\r
-                               if (yb[ryb] > 0) {\r
-                                       for (i = 0; i < 3; ++i)\r
-                                               d[i] = dt[i] + y1[i];\r
-                               } else {\r
-                                       for (i = 0; i < 3; ++i)\r
-                                               d[i] = dt[i] + y2[i];\r
-                                       //printf("Error! Daten existieren nicht. Zugriff auf vierten punkt");\r
-                               }\r
-                       }\r
-\r
-                       yda = ya[rya];\r
-                       ydb = yb[ryb];\r
-\r
-                       //printf("(%d,%d)",rx,ry);\r
-                       if (rx == ry) {\r
-                               //printf("(%d,%d@%d,%d)",rxa,rxb,rya,ryb);\r
-                               //printf("[%.2f,%.2f@%.2f,%.2f]",xda,xdb,yda,ydb);\r
-                               //printf("%d%d %.1f %.1f %.1f|||",j,k,dt[0],dt[1],dt[2]);\r
-                               //printf("%d%d %.1f %.1f %.1f\n",j,k,d[0],d[1],d[2]);\r
-                               if (rxa == rya) {\r
-                                       //printf("%d%d %.1f %.1f | %.1f %.1f || %.1f %.1f | %.1f %.1f || %.1f %.1f %.1f\n",j,k,x0[0], x1[0], x0[1], x3[1], y0[0],\r
-                                       //              y1[0], y0[1], y3[1], d[0], d[1], d[2]);\r
-                                       //printf("%d%d %.1f %.1f %.1f\n",j,k,d[0],d[1],d[2]);\r
-\r
-                                       tmp\r
-                                                       = calcParIntO3( fabs(xda), fabs(xdb),\r
-                                                                       fabs(yda), fabs(ydb), d[rxa],\r
-                                                                       d[rxb], d[rx],eta);\r
-\r
-                               } else {\r
-                                       //printf("%d%d %.1f %.1f | %.1f %.1f || %.1f %.1f | %.1f %.1f || %.1f %.1f %.1f\n",j,k,x0[0], x1[0], x0[1], x3[1], y0[0],\r
-                                       //              y1[0], y0[1], y3[1], d[0], d[1], d[2]);\r
-                                       //printf("%d%d %.1f %.1f %.1f\n",j,k,d[0],d[1],d[2]);\r
-                                       tmp\r
-                                                       = calcParIntO3( fabs(xda), fabs(xdb),\r
-                                                                       fabs(ydb), fabs(yda), d[rxa],\r
-                                                                       d[rxb], d[rx],eta);\r
-                                       //       printf("%d%d|%.2f\n",j,k,tmp);\r
-                               }\r
-\r
-                       } else {\r
-                               //printf("(%d,%d@%d,%d)", rxa, rxb, rya, ryb);\r
-                               //printf("(%d,%d)", rx, ry);\r
-                               //printf("\n");\r
-\r
-                               if (rxa == rya) {\r
-                                       tmp\r
-                                                       = calcOrtIntO3( fabs(xdb), fabs(xda),\r
-                                                                       fabs(yda), fabs(ydb), d[rxb],\r
-                                                                       d[rxa], d[rx],eta);\r
-                               } else if (rxa == ryb) {\r
-                                       tmp\r
-                                                       = calcOrtIntO3( fabs(xdb), fabs(xda),\r
-                                                                       fabs(ydb), fabs(yda), d[rxb],\r
-                                                                       d[rxa], d[rx],eta);\r
-                               } else if (rxb == rya) {\r
-                                       tmp\r
-                                                       = calcOrtIntO3( fabs(xda), fabs(xdb),\r
-                                                                       fabs(yda), fabs(ydb), d[rxa],\r
-                                                                       d[rxb], d[rx],eta);\r
-                               } else {\r
-                                       tmp\r
-                                                       = calcOrtIntO3( fabs(xda), fabs(xdb),\r
-                                                                       fabs(ydb), fabs(yda), d[rxa],\r
-                                                                       d[rxb], d[rx],eta);\r
-                               }\r
-\r
-                       }\r
-                       A[(k * em) + j] = 1. / (4 * M_PI) * tmp;\r
-\r
-               }\r
-\r
-       }\r
-       //printf("\n");\r
-       //Rueckgabe (eventuell zurueck schreiben)\r
-       //   mxFree(x0);\r
-       //mxFree(x1);\r
-       //mxFree(x3);\r
-       //mxFree(y0);\r
-       //mxFree(y1);\r
-       //mxFree(y3);\r
-       //mxFree(xn);\r
-       //mxFree(yn);\r
-       //mxFree(d);\r
-\r
-       return;\r
-}\r
diff --git a/src/mex_calcOrtInt.cpp b/src/mex_calcOrtInt.cpp
deleted file mode 100755 (executable)
index f4b35ae..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-#include <iostream>
-#include <cmath>
-#include <cassert>
-#include "mex.h"
-#include <stdlib.h>
-
-#include "slpRectangle.hpp"
-
-#define my_PI 3.141592653589793
-#define EPS 0.02
-
-using namespace std;
-
-
-void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) {
-       //sicherheitsabfragen zu Datengroessen
-       if (nrhs != 7)
-               mexErrMsgTxt("expected (x1,x2,y1,y2,d1,d2,d3)");
-       if (nlhs > 2)
-               mexErrMsgTxt("has maximal two output arguments");
-
-       plhs[0] = mxCreateDoubleMatrix(1, 3, mxREAL);
-
-       *mxGetPr(plhs[0]) = calcortIntA(*mxGetPr(prhs[0]),*mxGetPr(prhs[1]),*mxGetPr(prhs[2]),*mxGetPr(prhs[3]),*mxGetPr(prhs[4]),*mxGetPr(prhs[5]),*mxGetPr(prhs[6]));
-//     *(mxGetPr(plhs[0])+1) = calcParIntQX1X2(*mxGetPr(prhs[0]),*mxGetPr(prhs[1]),*mxGetPr(prhs[2]),*mxGetPr(prhs[3]),*mxGetPr(prhs[4]),*mxGetPr(prhs[5]),*mxGetPr(prhs[6]));
-//     *(mxGetPr(plhs[0])+2) = calcParIntQY1X1(*mxGetPr(prhs[0]),*mxGetPr(prhs[1]),*mxGetPr(prhs[2]),*mxGetPr(prhs[3]),*mxGetPr(prhs[4]),*mxGetPr(prhs[5]),*mxGetPr(prhs[6]));
-
-}
-
-
-
diff --git a/src/mex_calcParInt.cpp b/src/mex_calcParInt.cpp
deleted file mode 100755 (executable)
index 08b26a9..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-#include <iostream>
-#include <cmath>
-#include <cassert>
-#include "mex.h"
-#include <stdlib.h>
-
-#include "slpRectangle.hpp"
-
-#define my_PI 3.141592653589793
-#define EPS 0.02
-
-using namespace std;
-
-
-void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) {
-       //sicherheitsabfragen zu Datengroessen
-       if (nrhs != 7)
-               mexErrMsgTxt("expected (x1,x2,y1,y2,d1,d2,d3)");
-       if (nlhs > 2)
-               mexErrMsgTxt("has maximal two output arguments");
-
-
-       plhs[0] = mxCreateDoubleMatrix(1, 3, mxREAL);
-
-       *mxGetPr(plhs[0]) = calcParIntA(*mxGetPr(prhs[0]),*mxGetPr(prhs[1]),*mxGetPr(prhs[2]),*mxGetPr(prhs[3]),*mxGetPr(prhs[4]),*mxGetPr(prhs[5]),*mxGetPr(prhs[6]));
-       *(mxGetPr(plhs[0])+1) = calcParIntQX1X2(*mxGetPr(prhs[0]),*mxGetPr(prhs[1]),*mxGetPr(prhs[2]),*mxGetPr(prhs[3]),*mxGetPr(prhs[4]),*mxGetPr(prhs[5]),*mxGetPr(prhs[6]));
-       *(mxGetPr(plhs[0])+2) = calcParIntQY1X1(*mxGetPr(prhs[0]),*mxGetPr(prhs[1]),*mxGetPr(prhs[2]),*mxGetPr(prhs[3]),*mxGetPr(prhs[4]),*mxGetPr(prhs[5]),*mxGetPr(prhs[6]));
-
-}
-
-
-
diff --git a/src/mex_g0.cpp b/src/mex_g0.cpp
deleted file mode 100644 (file)
index 4353069..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-#include <iostream>
-#include <cmath>
-#include <cassert>
-#include "mex.h"
-#include <stdlib.h>
-
-#include "slpRectangle.hpp"
-
-#define my_PI 3.141592653589793
-#define EPS 0.02
-
-using namespace std;
-
-
-void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) {
-       //sicherheitsabfragen zu Datengroessen
-       if (nrhs != 4)
-               mexErrMsgTxt("expected (p, y, x, l)");
-       if (nlhs > 2)
-               mexErrMsgTxt("has maximal two output arguments");
-
-
-       plhs[0] = mxCreateDoubleMatrix(1, 1, mxREAL);
-       plhs[1] = mxCreateDoubleMatrix(1, 1, mxREAL);
-
-       *mxGetPr(plhs[0]) = g_AY(*mxGetPr(prhs[0]),*mxGetPr(prhs[1]),*mxGetPr(prhs[2]),*mxGetPr(prhs[3]));
-       *mxGetPr(plhs[0]) = g_QY(*mxGetPr(prhs[0]),*mxGetPr(prhs[1]),*mxGetPr(prhs[2]),*mxGetPr(prhs[3]));
-
-}
-
-
-
diff --git a/src/mexit.m b/src/mexit.m
deleted file mode 100644 (file)
index f868508..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-
-mex mex_g0.cpp slpRectangle.cpp
-mex mex_G00.cpp slpRectangle.cpp
-mex mex_Fpar.cpp slpRectangle.cpp
-mex mex_Fort.cpp slpRectangle.cpp
-
-mex mex_build_A.cpp slpRectangle.cpp
-mex mex_build_As1.cpp slpRectangle.cpp
-mex mex_build_As2.cpp slpRectangle.cpp
-
diff --git a/src/save1.mat b/src/save1.mat
deleted file mode 100644 (file)
index bc8e6ba..0000000
Binary files a/src/save1.mat and /dev/null differ
diff --git a/src/save10.mat b/src/save10.mat
deleted file mode 100644 (file)
index ebe7708..0000000
Binary files a/src/save10.mat and /dev/null differ
diff --git a/src/save11.mat b/src/save11.mat
deleted file mode 100644 (file)
index 9ba30c9..0000000
Binary files a/src/save11.mat and /dev/null differ
diff --git a/src/save12.mat b/src/save12.mat
deleted file mode 100644 (file)
index 5806d47..0000000
Binary files a/src/save12.mat and /dev/null differ
diff --git a/src/save13.mat b/src/save13.mat
deleted file mode 100644 (file)
index 99aadeb..0000000
Binary files a/src/save13.mat and /dev/null differ
diff --git a/src/save2.mat b/src/save2.mat
deleted file mode 100644 (file)
index d560b6b..0000000
Binary files a/src/save2.mat and /dev/null differ
diff --git a/src/save3.mat b/src/save3.mat
deleted file mode 100644 (file)
index 193c06e..0000000
Binary files a/src/save3.mat and /dev/null differ
diff --git a/src/save4.mat b/src/save4.mat
deleted file mode 100644 (file)
index 290ccd8..0000000
Binary files a/src/save4.mat and /dev/null differ
diff --git a/src/save5.mat b/src/save5.mat
deleted file mode 100644 (file)
index dde8537..0000000
Binary files a/src/save5.mat and /dev/null differ
diff --git a/src/save6.mat b/src/save6.mat
deleted file mode 100644 (file)
index 2fa67a3..0000000
Binary files a/src/save6.mat and /dev/null differ
diff --git a/src/save7.mat b/src/save7.mat
deleted file mode 100644 (file)
index bfabafd..0000000
Binary files a/src/save7.mat and /dev/null differ
diff --git a/src/save8.mat b/src/save8.mat
deleted file mode 100644 (file)
index 32661e3..0000000
Binary files a/src/save8.mat and /dev/null differ
diff --git a/src/save9.mat b/src/save9.mat
deleted file mode 100644 (file)
index 47df2c7..0000000
Binary files a/src/save9.mat and /dev/null differ
index 8fad4118382baf76bc42a1e13ddbef62195597a4..6a294955c7172c15325fe0229cea0f4b5db461b0 100644 (file)
@@ -7,14 +7,10 @@
 \r
 #include "slpRectangle.hpp"\r
 \r
-#define EPS 10e5\r
-\r
 using namespace std;\r
 \r
-double gauss_w5[] = {0.1185,0.2393,0.2844,0.2393,0.1185};\r
-double gauss_n5[] = {0.0469,0.2308,0.5000,0.7692,0.9531};\r
-\r
-\r
+double gauss_w5[] = { 0.1185, 0.2393, 0.2844, 0.2393, 0.1185 };\r
+double gauss_n5[] = { 0.0469, 0.2308, 0.5000, 0.7692, 0.9531 };\r
 \r
 int sign(double);\r
 //double arsinh(double);\r
@@ -22,6 +18,7 @@ int sign(double);
 \r
 /* ============================== */\r
 \r
+\r
 int inline sign(double x) {\r
        return x > 0 ? 1 : (x < 0 ? -1 : 0);\r
 }\r
@@ -31,16 +28,17 @@ int inline sign(double x) {
  }\r
  */\r
 \r
-double inline max(double x, double y){\r
-       return x<y?y:x;\r
+double inline max(double x, double y) {\r
+       return x < y ? y : x;\r
 }\r
 \r
 double g_QY(double p, double y, double x, double l) {\r
 \r
        double sol = 0;\r
 \r
-       for(int i = 0;i<5;++i){\r
-               sol += pow((x-gauss_n5[i]*y)*(x-gauss_n5[i]*y)+l*l,p)*gauss_w5[i]*y;\r
+       for (int i = 0; i < 5; ++i) {\r
+               sol += pow((x - gauss_n5[i] * y) * (x - gauss_n5[i] * y) + l * l, p)\r
+                               * gauss_w5[i] * y;\r
        }\r
 \r
        return sol;\r
@@ -81,26 +79,27 @@ double g_AY(double p, double y, double x, double l) {
 double G_QY1Y2(double p, double y1, double y2, double x1, double x2, double l) {\r
 \r
        double sol = 0;\r
-       for(int i = 0;i<5;++i){\r
-               for(int j=0;j<5;++j){\r
-                       sol += pow((x1-y1*gauss_n5[i])*(x1-y1*gauss_n5[i])\r
-                                       +(x2-y2*gauss_n5[j])*(x2-y2*gauss_n5[j])+l*l,p)*y1*gauss_w5[i]*y2*gauss_w5[j];\r
+       for (int i = 0; i < 5; ++i) {\r
+               for (int j = 0; j < 5; ++j) {\r
+                       sol += pow(\r
+                                       (x1 - y1 * gauss_n5[i]) * (x1 - y1 * gauss_n5[i]) + (x2\r
+                                                       - y2 * gauss_n5[j]) * (x2 - y2 * gauss_n5[j]) + l\r
+                                                       * l, p) * y1 * gauss_w5[i] * y2 * gauss_w5[j];\r
                }\r
        }\r
        return sol;\r
 }\r
 \r
-\r
 double G_AY2X2(double y1, double y2, double x1, double x2, double d3) {\r
 \r
        //       printf("%.1f %.1f | %.1f %.1f | %.1f %.1f %.1f",x1,x2,y1,y2,d1,d2,d3);\r
 \r
-       double hlp = ((x1 - y1 ) * (x1 - y1 ) + (x2 - y2) * (x2 - y2) + d3 * d3);\r
+       double hlp = ((x1 - y1) * (x1 - y1) + (x2 - y2) * (x2 - y2) + d3 * d3);\r
 \r
        double sol = sqrt(hlp);\r
 \r
        if ((x2 - y2) != 0)\r
-               sol += (x2 - y2) * log(sqrt(hlp)-(x2 - y2));\r
+               sol += (x2 - y2) * log(sqrt(hlp) - (x2 - y2));\r
 \r
        return sol;\r
 }\r
@@ -132,13 +131,15 @@ double G_AY1Y2(double p, double y1, double y2, double x1, double x2, double l) {
                sol /= 2 * p + 2;\r
        } else {\r
                sol = NAN;\r
-               cout << "warning in G_AY1Y2: no case for p="<< p <<" defined. Possible: [-1.5,-0.5,0.5,...]\n";\r
+               cout << "warning in G_AY1Y2: no case for p=" << p\r
+                               << " defined. Possible: [-1.5,-0.5,0.5,...]\n";\r
        }\r
 \r
        return sol;\r
 }\r
 \r
-double Gs_AX2Y1Y2(double p, double y1, double y2, double x1, double x2, double l) {\r
+double Gs_AX2Y1Y2(double p, double y1, double y2, double x1, double x2,\r
+               double l) {\r
        double sol = 0;\r
 \r
        //sol += y2*G_AY1Y2(y1,x2,)\r
@@ -169,8 +170,6 @@ double F_par(double x1, double x2, double y1, double y2, double d1, double d2,
        return sol;\r
 }\r
 \r
-\r
-\r
 double F_ort(double x1, double x2, double y2, double y3, double d1, double d2,\r
                double d3) {\r
 \r
@@ -197,19 +196,19 @@ double F_ort(double x1, double x2, double y2, double y3, double d1, double d2,
 }\r
 \r
 /*double applyInt4(\r
              double(*f)(double, double, double, double, double, double, double),\r
              double a, double b, double c, double d, double r, double t, double u,\r
              double v, double d1, double d2, double d3) {\r
+ double(*f)(double, double, double, double, double, double, double),\r
+ double a, double b, double c, double d, double r, double t, double u,\r
+ double v, double d1, double d2, double d3) {\r
 \r
      return f(b, d, t, v, d1, d2, d3) - f(b, d, t, u, d1, d2, d3) - f(b, d, r,\r
                      v, d1, d2, d3) + f(b, d, r, u, d1, d2, d3) - f(b, c, t, v, d1, d2,\r
                      d3) + f(b, c, t, u, d1, d2, d3) + f(b, c, r, v, d1, d2, d3) - f(b,\r
                      c, r, u, d1, d2, d3) - f(a, d, t, v, d1, d2, d3) + f(a, d, t, u,\r
                      d1, d2, d3) + f(a, d, r, v, d1, d2, d3) - f(a, d, r, u, d1, d2, d3)\r
                      + f(a, c, t, v, d1, d2, d3) - f(a, c, t, u, d1, d2, d3) - f(a, c,\r
                      r, v, d1, d2, d3) + f(a, c, r, u, d1, d2, d3);\r
+ return f(b, d, t, v, d1, d2, d3) - f(b, d, t, u, d1, d2, d3) - f(b, d, r,\r
+ v, d1, d2, d3) + f(b, d, r, u, d1, d2, d3) - f(b, c, t, v, d1, d2,\r
+ d3) + f(b, c, t, u, d1, d2, d3) + f(b, c, r, v, d1, d2, d3) - f(b,\r
+ c, r, u, d1, d2, d3) - f(a, d, t, v, d1, d2, d3) + f(a, d, t, u,\r
+ d1, d2, d3) + f(a, d, r, v, d1, d2, d3) - f(a, d, r, u, d1, d2, d3)\r
+ + f(a, c, t, v, d1, d2, d3) - f(a, c, t, u, d1, d2, d3) - f(a, c,\r
+ r, v, d1, d2, d3) + f(a, c, r, u, d1, d2, d3);\r
 \r
-}*/\r
+ }*/\r
 \r
 double apply0Int4(\r
                double(*f)(double, double, double, double, double, double, double),\r
@@ -229,15 +228,14 @@ double apply0Int2(
                double(*f)(double, double, double, double, double, double, double),\r
                double b, double d, double t, double v, double d1, double d2, double d3) {\r
 \r
-       return f(b, d, t, v, d1, d2, d3)\r
-                       -f(b, 0, t, v, d1, d2, d3)\r
-                       -f(0, d, t, v, d1, d2, d3)\r
-                       +f(0, 0, t, v, d1, d2, d3);\r
+       return f(b, d, t, v, d1, d2, d3) - f(b, 0, t, v, d1, d2, d3) - f(0, d, t,\r
+                       v, d1, d2, d3) + f(0, 0, t, v, d1, d2, d3);\r
 \r
 }\r
 \r
 // Berechnet das eigentliche Integral für parallele Elemente voll Analytisch\r
-double calcParIntA(double b, double d, double t, double v, double d1, double d2, double d3) {\r
+double calcParIntA(double b, double d, double t, double v, double d1,\r
+               double d2, double d3) {\r
        return apply0Int4(F_par, b, d, t, v, d1, d2, d3);\r
 \r
 }\r
@@ -271,10 +269,16 @@ double calcParIntQY1X1(double b, double d, double t, double v, double d1,
 \r
        for (int i = 0; i < 5; ++i) {\r
                for (int j = 0; j < 5; ++j) {\r
-                       sol += G_AY2X2( t * gauss_n5[j] + d1, v + d2, b * gauss_n5[i],d , d3) * t * b * gauss_w5[i] * gauss_w5[j];\r
-                       sol -= G_AY2X2( t * gauss_n5[j] + d1, v + d2, b * gauss_n5[i], 0, d3) * t * b * gauss_w5[i] * gauss_w5[j];\r
-                       sol -= G_AY2X2( t * gauss_n5[j] + d1, d2, b * gauss_n5[i], d, d3) * t * b * gauss_w5[i] * gauss_w5[j];\r
-                       sol += G_AY2X2( t * gauss_n5[j] + d1, d2, b * gauss_n5[i], 0, d3) * t * b * gauss_w5[i] * gauss_w5[j];\r
+                       sol\r
+                                       += G_AY2X2(t * gauss_n5[j] + d1, v + d2, b * gauss_n5[i],\r
+                                                       d, d3) * t * b * gauss_w5[i] * gauss_w5[j];\r
+                       sol\r
+                                       -= G_AY2X2(t * gauss_n5[j] + d1, v + d2, b * gauss_n5[i],\r
+                                                       0, d3) * t * b * gauss_w5[i] * gauss_w5[j];\r
+                       sol -= G_AY2X2(t * gauss_n5[j] + d1, d2, b * gauss_n5[i], d, d3)\r
+                                       * t * b * gauss_w5[i] * gauss_w5[j];\r
+                       sol += G_AY2X2(t * gauss_n5[j] + d1, d2, b * gauss_n5[i], 0, d3)\r
+                                       * t * b * gauss_w5[i] * gauss_w5[j];\r
                }\r
        }\r
 \r
@@ -282,141 +286,180 @@ double calcParIntQY1X1(double b, double d, double t, double v, double d1,
 \r
 }\r
 \r
-double calcParIntQY1(double b, double d, double t, double v, double d1, double d2, double d3) {\r
+double calcParIntQY1(double b, double d, double t, double v, double d1,\r
+               double d2, double d3) {\r
        //Fall 4\r
        return apply0Int4(F_par, b, d, t, v, d1, d2, d3); ///ACHTUNG noch Falsch\r
 \r
 }\r
 \r
-double calcOrtIntA(double b, double d, double t, double v, double d1, double d2, double d3) {\r
+double calcOrtIntA(double b, double d, double t, double v, double d1,\r
+               double d2, double d3) {\r
        return apply0Int4(F_ort, b, d, t, v, d1, d2, d3);\r
 \r
 }\r
 \r
-double calcOrtIntQY1Y2(double b, double d, double t, double v, double d1, double d2, double d3) {\r
+double calcOrtIntQY1Y2(double b, double d, double t, double v, double d1,\r
+               double d2, double d3) {\r
        return 0;\r
 \r
 }\r
 \r
+double calcParIntO0(double b, double d, double t, double v, double d1,\r
+               double d2, double d3, double eta) {\r
+       return calcParIntA(b,d,t,v,d1,d2,d3);\r
+}\r
+double calcOrtIntO0(double b, double d, double t, double v, double d1,\r
+               double d2, double d3, double eta) {\r
+       return calcOrtIntA(b,d,t,v,d1,d2,d3);\r
+}\r
 \r
-double calcParIntO1(double b, double d, double t, double v, double d1, double d2, double d3) {\r
+double calcParIntO1(double b, double d, double t, double v, double d1,\r
+               double d2, double d3, double eta) {\r
 \r
        //Elmente anordnen\r
-       if(b*b+d*d>t*t+v*v){\r
+       if (b * b + d * d > t * t + v * v) {\r
                double tmp = 0;\r
 \r
-               tmp = b; b = t; t = tmp;\r
-               tmp = d; d = v; v = tmp;\r
+               tmp = b;\r
+               b = t;\r
+               t = tmp;\r
+               tmp = d;\r
+               d = v;\r
+               v = tmp;\r
 \r
                d1 = -d1;\r
                d2 = -d2;\r
                d3 = -d3;\r
        }\r
 \r
-       return calcParIntA( b, d, t, v, d1, d2, d3);\r
+       return calcParIntA(b, d, t, v, d1, d2, d3);\r
 }\r
 \r
-double calcOrtIntO1(double b, double d, double t, double v, double d1, double d2, double d3) {\r
+double calcOrtIntO1(double b, double d, double t, double v, double d1,\r
+               double d2, double d3, double eta) {\r
 \r
        //Elmente anordnen\r
-       if(b*b+d*d>t*t+v*v){\r
+       if (b * b + d * d > t * t + v * v) {\r
                double tmp = 0;\r
 \r
-               tmp = b; b = t; t = tmp;\r
-               tmp = d; d = v; v = tmp;\r
+               tmp = b;\r
+               b = t;\r
+               t = tmp;\r
+               tmp = d;\r
+               d = v;\r
+               v = tmp;\r
 \r
                d1 = -d1;\r
                d2 = -d2;\r
                d3 = -d3;\r
        }\r
 \r
-       return calcOrtIntA( b, d, t, v, d1, d2, d3);\r
+       return calcOrtIntA(b, d, t, v, d1, d2, d3);\r
 }\r
 \r
-\r
-double calcParIntO2(double b, double d, double t, double v, double d1, double d2, double d3,double eta) {\r
+double calcParIntO2(double b, double d, double t, double v, double d1,\r
+               double d2, double d3, double eta) {\r
 \r
        //Elmente anordnen\r
-       if(b*b+d*d>t*t+v*v){\r
+       if (b * b + d * d > t * t + v * v) {\r
                double tmp = 0;\r
 \r
-               tmp = b; b = t; t = tmp;\r
-               tmp = d; d = v; v = tmp;\r
+               tmp = b;\r
+               b = t;\r
+               t = tmp;\r
+               tmp = d;\r
+               d = v;\r
+               v = tmp;\r
 \r
                d1 = -d1;\r
                d2 = -d2;\r
                d3 = -d3;\r
        }\r
 \r
-       if((b*b+d*d) *eta <= d1*d1+d2*d2+d3*d3){\r
-               return calcParIntQX1X2( b, d, t, v, d1, d2, d3);\r
-       }else{\r
-               return calcParIntA( b, d, t, v, d1, d2, d3);\r
+       if ((b * b + d * d) * eta <= d1 * d1 + d2 * d2 + d3 * d3) {\r
+               return calcParIntQX1X2(b, d, t, v, d1, d2, d3);\r
+       } else {\r
+               return calcParIntA(b, d, t, v, d1, d2, d3);\r
        }\r
 \r
-\r
 }\r
 \r
-double calcOrtIntO2(double b, double d, double t, double v, double d1, double d2, double d3,double eta) {\r
+double calcOrtIntO2(double b, double d, double t, double v, double d1,\r
+               double d2, double d3, double eta) {\r
 \r
        //Elmente anordnen\r
-       if(b*b+d*d>t*t+v*v){\r
+       if (b * b + d * d > t * t + v * v) {\r
                double tmp = 0;\r
 \r
-               tmp = b; b = t; t = tmp;\r
-               tmp = d; d = v; v = tmp;\r
+               tmp = b;\r
+               b = t;\r
+               t = tmp;\r
+               tmp = d;\r
+               d = v;\r
+               v = tmp;\r
 \r
                d1 = -d1;\r
                d2 = -d2;\r
                d3 = -d3;\r
        }\r
 \r
-       if((b*b+d*d) *eta <= d1*d1+d2*d2+d3*d3){\r
+       if ((b * b + d * d) * eta <= d1 * d1 + d2 * d2 + d3 * d3) {\r
                return 0;\r
-       }else{\r
-               return calcOrtIntA( b, d, t, v, d1, d2, d3);\r
+       } else {\r
+               return calcOrtIntA(b, d, t, v, d1, d2, d3);\r
        }\r
 }\r
 \r
-\r
-double calcParIntO3(double b, double d, double t, double v, double d1, double d2, double d3,double eta) {\r
+double calcParIntO3(double b, double d, double t, double v, double d1,\r
+               double d2, double d3, double eta) {\r
 \r
        //Achsen vertauschen\r
-       if(b*b+t*t>d*d+v*v){\r
+       if (b * b + t * t > d * d + v * v) {\r
                double tmp = 0;\r
 \r
-               tmp = b; b = d; d = tmp;\r
-               tmp = t; t = v; v = tmp;\r
+               tmp = b;\r
+               b = d;\r
+               d = tmp;\r
+               tmp = t;\r
+               t = v;\r
+               v = tmp;\r
 \r
-               tmp = d1; d1 = d2; d2 = tmp;\r
+               tmp = d1;\r
+               d1 = d2;\r
+               d2 = tmp;\r
        }\r
 \r
-       if(max(b,t) *eta <= d1){\r
+       if (max(b, t) * eta <= d1) {\r
                return calcParIntQY1X1(b, d, t, v, d1, d2, d3);\r
-       }else{\r
-               return calcParIntA( b, d, t, v, d1, d2, d3);\r
+       } else {\r
+               return calcParIntA(b, d, t, v, d1, d2, d3);\r
        }\r
 \r
-\r
 }\r
 \r
-double calcOrtIntO3(double b, double d, double t, double v, double d1, double d2, double d3,double eta) {\r
+double calcOrtIntO3(double b, double d, double t, double v, double d1,\r
+               double d2, double d3, double eta) {\r
 \r
        //Elmente anordnen\r
-       if(b*b+d*d>t*t+v*v){\r
+       if (b * b + d * d > t * t + v * v) {\r
                double tmp = 0;\r
 \r
-               tmp = b; b = t; t = tmp;\r
-               tmp = d; d = v; v = tmp;\r
+               tmp = b;\r
+               b = t;\r
+               t = tmp;\r
+               tmp = d;\r
+               d = v;\r
+               v = tmp;\r
 \r
                d1 = -d1;\r
                d2 = -d2;\r
                d3 = -d3;\r
        }\r
 \r
-       if(max(b,t) *eta > d1){\r
+       if (max(b, t) * eta > d1) {\r
                return 0;\r
-       }else{\r
-               return calcOrtIntA( b, d, t, v, d1, d2, d3);\r
+       } else {\r
+               return calcOrtIntA(b, d, t, v, d1, d2, d3);\r
        }\r
 }\r
index f81dfd5aff862e88f47a0e9e1208ace59f095875..4c63dc45440574ad7071c34b5a6cd99f8a1e2590 100644 (file)
@@ -1,16 +1,11 @@
 #ifndef HILBERT3D_LAPLACE_SLPRECTANGLE_HPP_GUARD_
 #define HILBERT3D_LAPLACE_SLPRECTANGLE_HPP_GUARD_
 
-//int sign(double);
-//double arsinh(double);
-
-
 // sol = g0(p,y,x,l);
 double g_AY(double, double, double, double);
 // sol = g0(p,y,x,l);
 double g_QY(double, double, double, double);
 
-
 // sol = G00(p,y1,y2,x1,x2,l);
 double G_AY1Y2(double, double, double, double, double, double);
 // sol = G00(p,y1,y2,x1,x2,l);
@@ -18,13 +13,11 @@ double G_AY2X2(double, double, double, double, double, double);
 // sol = G00(p,y1,y2,x1,x2,l);
 double G_QY1Y2(double, double, double, double, double, double);
 
-
 // sol = F_par(x1,x2,y1,y2,d1,d2,d3);
 double F_par(double, double, double, double, double, double, double);
 // sol = F_ort(x1,x2,y2,y3,d1,d2,d3);
 double F_ort(double, double, double, double, double, double, double);
 
-
 // sol = quad0Int4((F_par/F_ort),b,d,t,v,d1,d2,d3);
 double apply0Int4(
                double(*)(double, double, double, double, double, double, double),
@@ -34,27 +27,37 @@ double apply0Int4(
 double calcParIntA(double, double, double, double, double, double, double);
 double calcParIntQX1X2(double, double, double, double, double, double, double);
 double calcParIntQY1X1(double, double, double, double, double, double, double);
-
 double calcParIntQX1(double, double, double, double, double, double, double);
 
-
 // sol = calcOrtInt.(b,d,t,v,d1,d2,d3);
 double calcOrtIntA(double, double, double, double, double, double, double);
 double calcOrtIntQX1X2(double, double, double, double, double, double, double);
 
+//Voll Analytische Berechnung
+double calcParIntO0(double, double, double, double, double, double, double,
+               double);
+double calcOrtIntO0(double, double, double, double, double, double, double,
+               double);
+
 // Elemente Vertauschen
 // sol = calc...Int01(b,d,t,v,d1,d2,d3);
-double calcParIntO1(double, double, double, double, double, double, double);
-double calcOrtIntO1(double, double, double, double, double, double, double);
+double calcParIntO1(double, double, double, double, double, double, double,
+               double);
+double calcOrtIntO1(double, double, double, double, double, double, double,
+               double);
 
 // Quadratur ueber kleineres Element
 // sol = calc...Int02(b,d,t,v,d1,d2,d3,eta);
-double calcParIntO2(double, double, double, double, double, double, double, double);
-double calcOrtIntO2(double, double, double, double, double, double, double, double);
+double calcParIntO2(double, double, double, double, double, double, double,
+               double);
+double calcOrtIntO2(double, double, double, double, double, double, double,
+               double);
 
 // Quadratur kuerzere Achse/Seite
 // sol = calc...Int03(b,d,t,v,d1,d2,d3,eta);
-double calcParIntO3(double, double, double, double, double, double, double, double);
-double calcOrtIntO3(double, double, double, double, double, double, double, double);
+double calcParIntO3(double, double, double, double, double, double, double,
+               double);
+double calcOrtIntO3(double, double, double, double, double, double, double,
+               double);
 
 #endif
diff --git a/src/test_Fort.m b/src/test_Fort.m
deleted file mode 100644 (file)
index ad326d2..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-function [ret] = test_Fort(a,b,c,d,r,t,u,v,l1,l2,l3)
-
-
-    quad_sol = surfDoubleQuad(@(x1,x2,y2,y3)1/sqrt((x1-l1).^2+(x2-y2-l2).^2+(y3+l3).^2)...
-                ,a,b,c,d,r,t,u,v,4);
-
-    intF = @(f,a,b,c,d,r,t,u,v)...
-        f(b,d,t,v)-f(b,d,t,u)-f(b,d,r,v)+f(b,d,r,u)...
-        -f(b,c,t,v)+f(b,c,t,u)+f(b,c,r,v)-f(b,c,r,u)...
-        -f(a,d,t,v)+f(a,d,t,u)+f(a,d,r,v)-f(a,d,r,u)...
-        +f(a,c,t,v)-f(a,c,t,u)-f(a,c,r,v)+f(a,c,r,u);
-            
-    sol = intF(@(x1,x2,y1,y2)mex_Fort(x1,x2,y1,y2,l1,l2,l3),a,b,c,d,r,t,u,v);
-
-
-
-    ret = [quad_sol sol];
-end
-
diff --git a/src/test_Fpar.m b/src/test_Fpar.m
deleted file mode 100644 (file)
index 0f394ef..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-function [ret] = test_Fpar(a,b,c,d,r,t,u,v,l1,l2,l3)
-%
-% [ret] = test_Fpar(a,b,c,d,r,t,u,v,l1,l2,l3)
-
-    quad_sol = surfDoubleQuad(@(x1,x2,y1,y2)1/sqrt((x1-y1-l1).^2+(x2-y2-l2).^2+l3.^2)...
-                ,a,b,c,d,r,t,u,v,5);
-
-    intF = @(f,a,b,c,d,r,t,u,v)...
-        f(b,d,t,v)-f(b,d,t,u)-f(b,d,r,v)+f(b,d,r,u)...
-        -f(b,c,t,v)+f(b,c,t,u)+f(b,c,r,v)-f(b,c,r,u)...
-        -f(a,d,t,v)+f(a,d,t,u)+f(a,d,r,v)-f(a,d,r,u)...
-        +f(a,c,t,v)-f(a,c,t,u)-f(a,c,r,v)+f(a,c,r,u);
-      
-      
-      
-      
-      [ mex_Fpar(b,d,t,v,l1,l2,l3) mex_FparY1Y2_2(b,d,t,v,l1,l2,l3);...
-        mex_Fpar(b,d,t,u,l1,l2,l3) mex_FparY1Y2_2(b,d,t,u,l1,l2,l3);...
-        mex_Fpar(b,d,r,v,l1,l2,l3) mex_FparY1Y2_2(b,d,r,v,l1,l2,l3)];
-      
-      [i j] = mex_G00(-0.5, b, d, t + l1, v + l2, l3);
-            
-    sol = intF(@(x1,x2,y1,y2)mex_Fpar(x1,x2,y1,y2,l1,l2,l3),a,b,c,d,r,t,u,v);
-    
-   sol2 = intF(@(x1,x2,y1,y2)mex_FparY1Y2_2(x1,x2,y1,y2,l1,l2,l3),a,b,c,d,r,t,u,v);
-   
-    int2 = @(x1,y1,c,d,u,v)...
-      mex_FparQY2X2(x1,d,y1,v,l1,l2,l3)...
-      -mex_FparQY2X2(x1,c,y1,v,l1,l2,l3)...
-      -mex_FparQY2X2(x1,d,y1,u,l1,l2,l3)...
-      +mex_FparQY2X2(x1,c,y1,u,l1,l2,l3);
-    
-    sol3 = surfQuad(@(x1,y1)(int2(x1,y1,c,d,u,v)),a,b,r,t,5);
-    
-    sol4 =...
-      surfQuad(@(x1,y1)mex_FparQY2X2(x1,d,y1,v,l1,l2,l3),a,b,r,t,5)...
-      -surfQuad(@(x1,y1)mex_FparQY2X2(x1,c,y1,v,l1,l2,l3),a,b,r,t,5)...
-      -surfQuad(@(x1,y1)mex_FparQY2X2(x1,d,y1,u,l1,l2,l3),a,b,r,t,5)...
-      +surfQuad(@(x1,y1)mex_FparQY2X2(x1,c,y1,u,l1,l2,l3),a,b,r,t,5);
-
-    
-    ret = [quad_sol sol sol2 sol3 sol4];
-end
-
diff --git a/src/test_G00.m b/src/test_G00.m
deleted file mode 100644 (file)
index 097f8c4..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-function [ret] = test_G00(p, x1, x2,l,a,b,c,d)
-%
-% [ret] = test_G00(p, x1, x2,l,a,b,c,d)
-
-    quad_sol = surfQuad(@(y1,y2)((x1-y1).^2+(x2-y2).^2+l.^2).^p,a,b,c,d,4);
-
-
-    [my(1) mq(1)] = mex_G00(p,a,c,x1,x2,l)
-    [my(2) mq(2)] = mex_G00(p,b,d,x1,x2,l)
-    [my(3) mq(3)] = mex_G00(p,b,c,x1,x2,l)
-    [my(4) mq(4)] = mex_G00(p,a,d,x1,x2,l)
-
-
-    my_sol = my(1)+my(2)-my(3)-my(4);
-    mq_sol = mq(1)+mq(2)-mq(3)-mq(4);
-
-    ret = [quad_sol my_sol mq_sol];
-end
-
diff --git a/src/test_SolveSpeed1.fig b/src/test_SolveSpeed1.fig
deleted file mode 100644 (file)
index 24401f8..0000000
Binary files a/src/test_SolveSpeed1.fig and /dev/null differ
diff --git a/src/test_functions.m b/src/test_functions.m
deleted file mode 100644 (file)
index ce33b3a..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-function done=test_functions(eps)
-
-    done = 0;
-%% g0 testen  
-p_g0 = [0.5 0 -0.5 -1 -1.5];
-for l= 1:5
-    for p = p_g0
-        s = test_g0(p,1.4,l,1,4);
-        if(abs(s(1)-s(2))>eps)
-            disp g0
-            l
-            p
-            s
-            return;
-        end
-    end
-end
-    % x muss ausserhalb des Intervalls liegen
-    for p = p_g0
-        s = test_g0(p,1.4,0,2,4);
-        if(abs(s(1)-s(2))>eps)
-            disp g0
-            p
-            s
-            return;
-        end
-    end
-
-%% G00 testen
-p_G00 = [-0.5 -1.5];
-
-    for p = p_G00
-        s = test_G00(p,1.4,0.7,1,2,4,1,3);
-        if(abs(s(1)-s(2))>eps)
-            disp G00
-            p
-            s
-            return;
-        end
-    end
-    
-    for p = p_G00
-        s = test_G00(p,1.1,0.3,0,2,4.5,1,2.5);
-        if(abs(s(1)-s(2))>eps)
-            disp G00
-            p
-            s
-            return;
-        end
-    end
-    
-%% F_par testen
-    
-        
-        s = test_Fpar(1,3,2,3,4,5,1,3,1,3,1);
-        if(abs(s(1)-s(2))>eps)
-            disp Fpar
-            p
-            s
-            return;
-        end
-        
-        
-        
-    done = 1;
-end
\ No newline at end of file
diff --git a/src/test_g0.m b/src/test_g0.m
deleted file mode 100644 (file)
index 4163f95..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-function [ret] = test_g0(p, x,l,a,b)
-
-
-% quad_sol = quad(@(y)((x-y).^2+l.^2).^p,a,b);
-[no we] = gauss(5,a,b);
-f = @(y)((x-y).^2+l.^2).^p;
-quad_sol = we*f(no);
-
-% cumsum(f(no))'
-
-% X = 0:0.2:5;
-% Y = ((x-X).^2+l.^2).^p;
-% 
-% plot(X,Y)
-
-[my(1) mq(1)] = mex_g0(p,a,x,l);
-[my(2) mq(2)]= mex_g0(p,b,x,l);
-
-my_sol = my(2) - my(1);
-mq_sol = mq(2) - mq(1);
-
-
-
-ret = [quad_sol my_sol mq_sol];
-end
-
diff --git a/src/test_solveErrorS1.m b/src/test_solveErrorS1.m
deleted file mode 100755 (executable)
index b165322..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-\r
-mex mex_build_As1.cpp slpRectangle.cpp\r
-\r
-dataIso =[];\r
-dataAniso =[];\r
-maxSize = 10^3;\r
-Netz = 'exmpl_2DLShape'; %Energienorm sollte gegen 8.28466 konvergieren\r
-% Netz = 'exmpl_3DFichCube'; %Energienorm sollte gegen 162265 konvergieren\r
-% Netz = 'exmpl_2DQuad';\r
-\r
-%% Isotrope Verfeinerung\r
-disp 'Isotrop'\r
-load(Netz)\r
-\r
-ref = 0;\r
-while size(elements,1)<maxSize\r
-  tic\r
-  ref = ref+1;\r
-\r
-  [coordinates_fine,elements_fine, f2s]=refineQuad(coordinates,elements,2*ones(1,size(elements,1)));\r
-  A_fine = mex_build_As1(coordinates_fine,elements_fine);\r
-  b = sqrt(sum(quadNorm(coordinates_fine,elements_fine,'w').^2,2));\r
-  x_fine = A_fine\b;\r
-  xe_fine = x_fine'*A_fine*x_fine;\r
-\r
-  ind = computeEstSlpMuTilde(x_fine,coordinates,elements,f2s);\r
-  marked = 2*ones(1,size(elements,1));\r
-\r
-  dataIso(ref,:) = [size(elements,1) sqrt(sum(ind)) xe_fine];\r
-  [coordinates, elements] = refineQuad(coordinates,elements,marked);\r
-  toc\r
-end\r
-dataIso\r
-\r
-\r
-%% Anisotrope Verfeinerung\r
-disp 'Anisotrop'\r
-load(Netz)\r
-\r
-ref = 0;\r
-while size(elements,1)<maxSize\r
-  tic\r
-  ref = ref+1;\r
-\r
-  %Netz Isotrop verfeinern (4 Teile)\r
-  [coordinates_fine,elements_fine, f2s]=refineQuad(coordinates,elements,2*ones(1,size(elements,1)));\r
-  \r
-  %Matrix mit feinem Netz berechnen\r
-  A_fine = mex_build_As1(coordinates_fine,elements_fine);\r
-%   A2 = mex_build_A(coordinates_fine,elements_fine);\r
-  \r
-%   figure(1)\r
-%   spy(A_fine-A_fine')\r
-%   \r
-%   figure (2)\r
-%   spy(A2-A2')\r
-%   eh = A_fine - A2;\r
-%   sum(sum(abs(A2-A2')))\r
-%   sum(sum(abs(A_fine-A_fine')))\r
-  \r
-%   spy(eh)\r
\r
-%   sum(sum(abs(eh)))\r
-%   if(eh.^2)\r
-%     disp 'hä'\r
-%   end\r
-  \r
-  %rechte Seite Aufbauen\r
-  b = sqrt(sum(quadNorm(coordinates_fine,elements_fine,'w').^2,2));\r
-  \r
-  %Lösungsvektor bestimmen\r
-  x_fine = A_fine\b;\r
-  \r
-  %Energienorm^2 bestimmen\r
-  xe_fine = x_fine'*A_fine*x_fine;\r
-\r
-  % Welche Elemente sollen verfeinert werden\r
-  ind = computeEstSlpMuTilde(x_fine,coordinates,elements,f2s);\r
-  \r
-  % Wie soll verfeinert werden\r
-  marked = mark(x_fine(f2s)',ind,0.5,0.5);\r
-\r
-  %Daten zur Auswertung zwischenspeichern (testweise?)\r
-  dataAniso(ref,:) = [size(elements,1) sqrt(sum(ind)) xe_fine];\r
-  \r
-  %Sicherheit falls keine Elemente markiert sind\r
-  if(sum(marked~=1)==0)\r
-    disp 'Abgebrochen weil nicht mehr verfeinert wird!'\r
-    break;\r
-  end\r
-  \r
-  %Verfeinern\r
-  [coordinates, elements] = refineQuad(coordinates,elements,marked);\r
-  toc\r
-end\r
-dataAniso\r
-\r
-clear ref b A_fine coordinates_fine elements_fine marked ind f2s x_fine\r
-\r
-\r
-%% Alles Zeichnen\r
-figure (1)\r
-loglog(dataIso(:,1),dataIso(:,2),dataAniso(:,1),dataAniso(:,2));\r
-\r
-legend('Isotrop','Anisotrop')\r
-xlabel('Elemente')\r
-ylabel('Fehler')\r
-\r
-figure (2)\r
-loglog(dataIso(:,1),dataIso(:,3),dataAniso(:,1),dataAniso(:,3));\r
-\r
-legend('Isotrop','Anisotrop')\r
-xlabel('Elemente')\r
-ylabel('EnergieNorm')\r
diff --git a/src/test_solveError_1050_2DQuad.fig b/src/test_solveError_1050_2DQuad.fig
deleted file mode 100644 (file)
index 897feaf..0000000
Binary files a/src/test_solveError_1050_2DQuad.fig and /dev/null differ
diff --git a/src/test_solveError_1050_2DQuad.mat b/src/test_solveError_1050_2DQuad.mat
deleted file mode 100644 (file)
index abab0a5..0000000
Binary files a/src/test_solveError_1050_2DQuad.mat and /dev/null differ
diff --git a/src/test_solveError_1050_3DFichCube.fig b/src/test_solveError_1050_3DFichCube.fig
deleted file mode 100644 (file)
index cf76c24..0000000
Binary files a/src/test_solveError_1050_3DFichCube.fig and /dev/null differ
diff --git a/src/test_solveError_1050_3DFichCube.mat b/src/test_solveError_1050_3DFichCube.mat
deleted file mode 100644 (file)
index f4fc430..0000000
Binary files a/src/test_solveError_1050_3DFichCube.mat and /dev/null differ
diff --git a/src/test_solveError_Grid2.m b/src/test_solveError_Grid2.m
deleted file mode 100755 (executable)
index 52aa416..0000000
+++ /dev/null
@@ -1,132 +0,0 @@
-\r
-mex mex_build_As2.cpp slpRectangle.cpp\r
-\r
-dataIso =[];\r
-dataAniso =[];\r
-maxSize = 500;\r
-fileName = './test_save';\r
-Netz = 'exmpl_2DLShape'; %Energienorm sollte gegen 8.28466 konvergieren\r
-% Netz = 'exmpl_3DFichCube'; %Energienorm sollte gegen 162265 konvergieren\r
-% Netz = 'exmpl_2DQuad';\r
-\r
-\r
-%% Anisotrope Verfeinerung\r
-\r
-if(~exist('d1'))\r
-  \r
-  disp 'Normal'\r
-  load(Netz)\r
-\r
-  ref = 0;\r
-\r
-while size(elements,1)<maxSize\r
-  tic\r
-  ref = ref+1; \r
-  \r
-\r
-\r
-  %Netz Isotrop verfeinern (4 Teile)\r
-  [coordinates_fine,elements_fine, f2s]=refineQuad(coordinates,elements,2*ones(1,size(elements,1)));\r
-  \r
-  %Matrix mit feinem Netz berechnen\r
-  A_fine = mex_build_A(coordinates_fine,elements_fine);\r
-  \r
-  %rechte Seite Aufbauen\r
-  b = sqrt(sum(quadNorm(coordinates_fine,elements_fine,'w').^2,2));\r
-  \r
-  %Lösungsvektor bestimmen\r
-  x_fine = A_fine\b;\r
-  \r
-  %Energienorm^2 bestimmen\r
-  xe_fine = x_fine'*A_fine*x_fine;\r
-\r
-  % Welche Elemente sollen verfeinert werden\r
-  ind = computeEstSlpMuTilde(x_fine,coordinates,elements,f2s);\r
-  \r
-  % Wie soll verfeinert werden\r
-  marked = mark(x_fine(f2s)',ind,0.5,0.5);\r
-\r
-  %Daten zur Auswertung zwischenspeichern (testweise?)\r
-  dataAniso(ref,:) = [size(elements,1) sqrt(sum(ind)) xe_fine];\r
-  \r
-  %Sicherheit falls keine Elemente markiert sind\r
-  if(sum(marked~=1)==0)\r
-    disp 'Abgebrochen weil nicht mehr verfeinert wird!'\r
-    break;\r
-  end\r
-  \r
-  %Verfeinern\r
-  %[coordinates, elements] = refineQuad(coordinates,elements,marked);\r
-  file = ['save' int2str(ref)];\r
-  load(file);\r
-  toc\r
-end\r
-d1 = dataAniso\r
-end\r
-\r
-%% Anisotrope Verfeinerung\r
-disp 'Optimiert'\r
-load(Netz)\r
-\r
-ref = 0;\r
-while size(elements,1)<maxSize\r
-  tic\r
-  ref = ref+1; \r
-  \r
-\r
-\r
-  %Netz Isotrop verfeinern (4 Teile)\r
-  [coordinates_fine,elements_fine, f2s]=refineQuad(coordinates,elements,2*ones(1,size(elements,1)));\r
-  \r
-  %Matrix mit feinem Netz berechnen\r
-  A_fine = mex_build_As2(coordinates_fine,elements_fine);\r
-  \r
-  %rechte Seite Aufbauen\r
-  b = sqrt(sum(quadNorm(coordinates_fine,elements_fine,'w').^2,2));\r
-  \r
-  %Lösungsvektor bestimmen\r
-  x_fine = A_fine\b;\r
-  \r
-  %Energienorm^2 bestimmen\r
-  xe_fine = x_fine'*A_fine*x_fine;\r
-\r
-  % Welche Elemente sollen verfeinert werden\r
-  ind = computeEstSlpMuTilde(x_fine,coordinates,elements,f2s);\r
-  \r
-  % Wie soll verfeinert werden\r
-  marked = mark(x_fine(f2s)',ind,0.5,0.5);\r
-\r
-  %Daten zur Auswertung zwischenspeichern (testweise?)\r
-  dataAniso(ref,:) = [size(elements,1) sqrt(sum(ind)) xe_fine];\r
-  \r
-  %Sicherheit falls keine Elemente markiert sind\r
-%   if(sum(marked~=1)==0)\r
-%     disp 'Abgebrochen weil nicht mehr verfeinert wird!'\r
-%     break;\r
-%   end\r
-  \r
-  %Verfeinern\r
-  %[coordinates, elements] = refineQuad(coordinates,elements,marked);\r
-  file = ['save' int2str(ref)];\r
-  load(file);\r
-  toc\r
-end\r
-d2 = dataAniso\r
-\r
-clear ref b A_fine coordinates_fine elements_fine marked ind f2s x_fine\r
-\r
-\r
-%% Alles Zeichnen\r
-figure (1)\r
-loglog(d1(:,1),d1(:,2),d2(:,1),d2(:,2));\r
-\r
-legend('Normal','optimiert')\r
-xlabel('Elemente')\r
-ylabel('Fehler')\r
-\r
-figure (2)\r
-loglog(d1(:,1),d1(:,3),d2(:,1),d2(:,3));\r
-\r
-legend('Normal','Optimiert')\r
-xlabel('Elemente')\r
-ylabel('EnergieNorm')\r
diff --git a/src/test_solveError_Grid3.m b/src/test_solveError_Grid3.m
deleted file mode 100755 (executable)
index df116a6..0000000
+++ /dev/null
@@ -1,132 +0,0 @@
-\r
-mex mex_build_As3.cpp slpRectangle.cpp\r
-\r
-dataIso =[];\r
-dataAniso =[];\r
-maxSize = 500;\r
-fileName = './test_save';\r
-Netz = 'exmpl_2DLShape'; %Energienorm sollte gegen 8.28466 konvergieren\r
-% Netz = 'exmpl_3DFichCube'; %Energienorm sollte gegen 162265 konvergieren\r
-% Netz = 'exmpl_2DQuad';\r
-\r
-\r
-%% Anisotrope Verfeinerung\r
-\r
-if(~exist('d1'))\r
-  \r
-  disp 'Normal'\r
-  load(Netz)\r
-\r
-  ref = 0;\r
-\r
-while size(elements,1)<maxSize\r
-  tic\r
-  ref = ref+1; \r
-  \r
-\r
-\r
-  %Netz Isotrop verfeinern (4 Teile)\r
-  [coordinates_fine,elements_fine, f2s]=refineQuad(coordinates,elements,2*ones(1,size(elements,1)));\r
-  \r
-  %Matrix mit feinem Netz berechnen\r
-  A_fine = mex_build_A(coordinates_fine,elements_fine);\r
-  \r
-  %rechte Seite Aufbauen\r
-  b = sqrt(sum(quadNorm(coordinates_fine,elements_fine,'w').^2,2));\r
-  \r
-  %Lösungsvektor bestimmen\r
-  x_fine = A_fine\b;\r
-  \r
-  %Energienorm^2 bestimmen\r
-  xe_fine = x_fine'*A_fine*x_fine;\r
-\r
-  % Welche Elemente sollen verfeinert werden\r
-  ind = computeEstSlpMuTilde(x_fine,coordinates,elements,f2s);\r
-  \r
-  % Wie soll verfeinert werden\r
-  marked = mark(x_fine(f2s)',ind,0.5,0.5);\r
-\r
-  %Daten zur Auswertung zwischenspeichern (testweise?)\r
-  dataAniso(ref,:) = [size(elements,1) sqrt(sum(ind)) xe_fine];\r
-  \r
-  %Sicherheit falls keine Elemente markiert sind\r
-  if(sum(marked~=1)==0)\r
-    disp 'Abgebrochen weil nicht mehr verfeinert wird!'\r
-    break;\r
-  end\r
-  \r
-  %Verfeinern\r
-  %[coordinates, elements] = refineQuad(coordinates,elements,marked);\r
-  file = ['save' int2str(ref)];\r
-  load(file);\r
-  toc\r
-end\r
-d1 = dataAniso\r
-end\r
-\r
-%% Anisotrope Verfeinerung\r
-disp 'Optimiert'\r
-load(Netz)\r
-\r
-ref = 0;\r
-while size(elements,1)<maxSize\r
-  tic\r
-  ref = ref+1; \r
-  \r
-\r
-\r
-  %Netz Isotrop verfeinern (4 Teile)\r
-  [coordinates_fine,elements_fine, f2s]=refineQuad(coordinates,elements,2*ones(1,size(elements,1)));\r
-  \r
-  %Matrix mit feinem Netz berechnen\r
-  A_fine = mex_build_As3(coordinates_fine,elements_fine);\r
-  \r
-  %rechte Seite Aufbauen\r
-  b = sqrt(sum(quadNorm(coordinates_fine,elements_fine,'w').^2,2));\r
-  \r
-  %Lösungsvektor bestimmen\r
-  x_fine = A_fine\b;\r
-  \r
-  %Energienorm^2 bestimmen\r
-  xe_fine = x_fine'*A_fine*x_fine;\r
-\r
-  % Welche Elemente sollen verfeinert werden\r
-  ind = computeEstSlpMuTilde(x_fine,coordinates,elements,f2s);\r
-  \r
-  % Wie soll verfeinert werden\r
-  marked = mark(x_fine(f2s)',ind,0.5,0.5);\r
-\r
-  %Daten zur Auswertung zwischenspeichern (testweise?)\r
-  dataAniso(ref,:) = [size(elements,1) sqrt(sum(ind)) xe_fine];\r
-  \r
-  %Sicherheit falls keine Elemente markiert sind\r
-%   if(sum(marked~=1)==0)\r
-%     disp 'Abgebrochen weil nicht mehr verfeinert wird!'\r
-%     break;\r
-%   end\r
-  \r
-  %Verfeinern\r
-  %[coordinates, elements] = refineQuad(coordinates,elements,marked);\r
-  file = ['save' int2str(ref)];\r
-  load(file);\r
-  toc\r
-end\r
-d2 = dataAniso\r
-\r
-clear ref b A_fine coordinates_fine elements_fine marked ind f2s x_fine\r
-\r
-\r
-%% Alles Zeichnen\r
-figure (1)\r
-loglog(d1(:,1),d1(:,2),d2(:,1),d2(:,2));\r
-\r
-legend('Normal','optimiert')\r
-xlabel('Elemente')\r
-ylabel('Fehler')\r
-\r
-figure (2)\r
-loglog(d1(:,1),d1(:,3),d2(:,1),d2(:,3));\r
-\r
-legend('Normal','Optimiert')\r
-xlabel('Elemente')\r
-ylabel('EnergieNorm')\r
diff --git a/src/test_solveError_Grids.m b/src/test_solveError_Grids.m
new file mode 100644 (file)
index 0000000..5113db9
--- /dev/null
@@ -0,0 +1,130 @@
+\r
+mex mex_build_AU.cpp slpRectangle.cpp\r
+\r
+dataIso =[];\r
+dataAniso =[];\r
+maxSize = 500;\r
+fileName = './test_save';\r
+Netz = 'exmpl_2DLShape'; %Energienorm sollte gegen 8.28466 konvergieren\r
+% Netz = 'exmpl_3DFichCube'; %Energienorm sollte gegen 16.2265 konvergieren\r
+% Netz = 'exmpl_2DQuad';\r
+\r
+\r
+%% Anisotrope Verfeinerung\r
+\r
+if(~exist('d1'))\r
+  \r
+  disp 'Normal'\r
+  load(Netz)\r
+\r
+  ref = 0;\r
+\r
+while size(elements,1)<maxSize\r
+  tic\r
+  ref = ref+1; \r
+  \r
+  %Netz Isotrop verfeinern (4 Teile)\r
+  [coordinates_fine,elements_fine, f2s]=refineQuad(coordinates,elements,2*ones(1,size(elements,1)));\r
+  \r
+  %Matrix mit feinem Netz berechnen\r
+  A_fine = mex_build_A(coordinates_fine,elements_fine);\r
+  \r
+  %rechte Seite Aufbauen\r
+  b = sqrt(sum(quadNorm(coordinates_fine,elements_fine,'w').^2,2));\r
+  \r
+  %Lösungsvektor bestimmen\r
+  x_fine = A_fine\b;\r
+  \r
+  %Energienorm^2 bestimmen\r
+  xe_fine = x_fine'*A_fine*x_fine;\r
+\r
+  % Welche Elemente sollen verfeinert werden\r
+  ind = computeEstSlpMuTilde(x_fine,coordinates,elements,f2s);\r
+  \r
+  % Wie soll verfeinert werden\r
+  marked = mark(x_fine(f2s)',ind,0.5,0.5);\r
+\r
+  %Daten zur Auswertung zwischenspeichern (testweise?)\r
+  dataAniso(ref,:) = [size(elements,1) sqrt(sum(ind)) xe_fine];\r
+  \r
+  %Sicherheit falls keine Elemente markiert sind\r
+  if(sum(marked~=1)==0)\r
+    disp 'Abgebrochen weil nicht mehr verfeinert wird!'\r
+    break;\r
+  end\r
+  \r
+  %Verfeinern\r
+  %[coordinates, elements] = refineQuad(coordinates,elements,marked);\r
+  file = ['save' int2str(ref)];\r
+  load(file);\r
+  toc\r
+end\r
+d1 = dataAniso\r
+end\r
+\r
+%% Anisotrope Verfeinerung\r
+disp 'Optimiert'\r
+load(Netz)\r
+\r
+ref = 0;\r
+while size(elements,1)<maxSize\r
+  tic\r
+  ref = ref+1; \r
+  \r
+\r
+\r
+  %Netz Isotrop verfeinern (4 Teile)\r
+  [coordinates_fine,elements_fine, f2s]=refineQuad(coordinates,elements,2*ones(1,size(elements,1)));\r
+  \r
+  %Matrix mit feinem Netz berechnen\r
+  A_fine = mex_build_AU(coordinates_fine,elements_fine);\r
+  \r
+  %rechte Seite Aufbauen\r
+  b = sqrt(sum(quadNorm(coordinates_fine,elements_fine,'w').^2,2));\r
+  \r
+  %Lösungsvektor bestimmen\r
+  x_fine = A_fine\b;\r
+  \r
+  %Energienorm^2 bestimmen\r
+  xe_fine = x_fine'*A_fine*x_fine;\r
+\r
+  % Welche Elemente sollen verfeinert werden\r
+  ind = computeEstSlpMuTilde(x_fine,coordinates,elements,f2s);\r
+  \r
+  % Wie soll verfeinert werden\r
+  marked = mark(x_fine(f2s)',ind,0.5,0.5);\r
+\r
+  %Daten zur Auswertung zwischenspeichern (testweise?)\r
+  dataAniso(ref,:) = [size(elements,1) sqrt(sum(ind)) xe_fine];\r
+  \r
+  %Sicherheit falls keine Elemente markiert sind\r
+%   if(sum(marked~=1)==0)\r
+%     disp 'Abgebrochen weil nicht mehr verfeinert wird!'\r
+%     break;\r
+%   end\r
+  \r
+  %Verfeinern\r
+  %[coordinates, elements] = refineQuad(coordinates,elements,marked);\r
+  file = ['save' int2str(ref)];\r
+  load(file);\r
+  toc\r
+end\r
+d2 = dataAniso\r
+\r
+clear ref b A_fine coordinates_fine elements_fine marked ind f2s x_fine\r
+\r
+\r
+%% Alles Zeichnen\r
+figure (1)\r
+loglog(d1(:,1),d1(:,2),d2(:,1),d2(:,2));\r
+\r
+legend('Normal','optimiert')\r
+xlabel('Elemente')\r
+ylabel('Fehler')\r
+\r
+figure (2)\r
+loglog(d1(:,1),d1(:,3),d2(:,1),d2(:,3));\r
+\r
+legend('Normal','Optimiert')\r
+xlabel('Elemente')\r
+ylabel('EnergieNorm')\r
diff --git a/src/test_solveS.m b/src/test_solveS.m
deleted file mode 100644 (file)
index 96d646e..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-
-N = size(elements,1);
-
-A1 = zeros(N);
-
-x = zeros(N,2);
-xe = zeros(1,2);
-t = zeros(1,2);
-
-% untere schranke s t obere schranke k l
-intF = @(f,s1,s2,k1,k2,t1,t2,l1,l2) ...
-    f(k1,k2,l1,l2)-f(k1,k2,l1,t2)-f(k1,k2,t1,l2)+f(k1,k2,t1,t2)...
-    -f(k1,s2,l1,l2)+f(k1,s2,l1,t2)+f(k1,s2,t1,l2)-f(k1,s2,t1,t2)...
-    -f(s1,k2,l1,l2)+f(s1,k2,l1,t2)+f(s1,k2,t1,l2)-f(s1,l2,t1,t2)...
-    +f(s1,s2,l1,l2)-f(s1,0,l1,t2)-f(s1,s2,t1,l2)+f(s1,s2,t1,t2);
-tic
-A2 = build_A2(coordinates,elements);
-t(1) = toc;
-disp ' '
-tic
-A2 = mex_build_A(coordinates,elements);
-t(2) = toc;
-b = sqrt(sum(quadNorm(coordinates,elements,'w').^2,2));
-
-x(:,1) = A1\b;
-xe(1) = x(:,1)'*A1*x(:,1);
-
-x(:,2) = A2\b;
-xe(2) = x(:,2)'*A2*x(:,2);
-
-x;
-xe
-t
\ No newline at end of file
diff --git a/src/test_solveSpeed.m b/src/test_solveSpeed.m
deleted file mode 100644 (file)
index eadacaa..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-\r
-rt_times = 5;\r
-\r
-time = zeros(rt_times,3);\r
-\r
-    test_solveS\r
-    \r
-    time(1,:) = [size(x,1) t];\r
-\r
-for l = 2:rt_times\r
-    test_refine\r
-    test_solveS\r
-    \r
-    time(l,:) = [size(x,1) t];\r
-end\r
-\r
-\r
-loglog(time(:,1),time(:,2),time(:,1),time(:,3));\r
-\r
-legend('Matlab','Mex')\r
-xlabel('Elemente')\r
-ylabel('Zeit')\r
-\r
diff --git a/src/test_solveSpeed1.mat b/src/test_solveSpeed1.mat
deleted file mode 100644 (file)
index 904568a..0000000
Binary files a/src/test_solveSpeed1.mat and /dev/null differ