]> git.leopard-lacewing.eu Git - bacc.git/commitdiff
[src] mex_build_AU new Funktions
authortreecity <treecity@26120e32-c555-405d-b3e1-1f783fb42516>
Sat, 14 Jan 2012 21:12:08 +0000 (21:12 +0000)
committertreecity <treecity@26120e32-c555-405d-b3e1-1f783fb42516>
Sat, 14 Jan 2012 21:12:08 +0000 (21:12 +0000)
[src] test_... doing what they should
[src] A_plot added...

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

13 files changed:
.cproject
src/A_AnIso.m
src/A_Iso.m
src/A_plot.m [new file with mode: 0644]
src/A_stepAnIso.m
src/A_stepIso.m
src/mex_Int.cpp [new file with mode: 0644]
src/mex_build_AU.cpp
src/slpRectangle.cpp
src/slpRectangle.hpp
src/test_calcInt1.m
src/test_calcInt2.m
src/test_calcInt3.m

index 24c6a1fbcd0073acd0a9a2f2224729643a058b1c..b3be917f4cf5223e9890fa1789f5e1a2dec02bca 100644 (file)
--- a/.cproject
+++ b/.cproject
@@ -6,7 +6,18 @@
                <cconfiguration id="cdt.managedbuild.config.gnu.exe.debug.1374879834">
                        <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.exe.debug.1374879834" moduleId="org.eclipse.cdt.core.settings" name="Debug">
                                <externalSettings>
-                                       <externalSetting/>
+                                       <externalSetting>
+                                               <entry flags="BUILTIN|READONLY|RESOLVED" kind="includePath" name="/usr/include"/>
+                                               <entry flags="BUILTIN|READONLY|RESOLVED" kind="includePath" name="/usr/include/i386-linux-gnu"/>
+                                               <entry flags="BUILTIN|READONLY|RESOLVED" kind="includePath" name="/usr/lib/gcc/i686-linux-gnu/4.6.1/include-fixed"/>
+                                               <entry flags="BUILTIN|READONLY|RESOLVED" kind="includePath" name="/usr/local/include"/>
+                                               <entry flags="BUILTIN|READONLY|RESOLVED" kind="includePath" name="/usr/lib/gcc/i686-linux-gnu/4.6.1/include"/>
+                                               <entry flags="BUILTIN|READONLY|RESOLVED" kind="includePath" name="/usr/include/c++/4.6/backward"/>
+                                               <entry flags="BUILTIN|READONLY|RESOLVED" kind="includePath" name="/usr/include/c++/4.6/i686-linux-gnu"/>
+                                               <entry flags="BUILTIN|READONLY|RESOLVED" kind="includePath" name="/usr/include/c++/4.6"/>
+                                               <entry flags="RESOLVED" kind="libraryPath" name="/usr/include"/>
+                                               <entry flags="RESOLVED" kind="libraryFile" name="/usr/include"/>
+                                       </externalSetting>
                                </externalSettings>
                                <extensions>
                                        <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
@@ -28,9 +39,7 @@
                                                                <option id="gnu.cpp.compiler.exe.debug.option.optimization.level.1325017702" name="Optimization Level" superClass="gnu.cpp.compiler.exe.debug.option.optimization.level" value="gnu.cpp.compiler.optimization.level.none" valueType="enumerated"/>
                                                                <option id="gnu.cpp.compiler.exe.debug.option.debugging.level.1378814057" name="Debug Level" superClass="gnu.cpp.compiler.exe.debug.option.debugging.level" value="gnu.cpp.compiler.debugging.level.max" valueType="enumerated"/>
                                                                <option id="gnu.cpp.compiler.option.include.paths.810493965" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
-                                                                       <listOptionValue builtIn="false" value="/usr/include"/>
-                                                                       <listOptionValue builtIn="false" value="/usr/include/c++/4.6/"/>
-                                                                       <listOptionValue builtIn="false" value="/usr/local/bin/MATLAB/R2011a/extern/include/mex.h"/>
+                                                                       <listOptionValue builtIn="false" value="/usr/local/bin/MATLAB/R2011b/extern/include"/>
                                                                </option>
                                                                <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.78369668" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
                                                        </tool>
@@ -38,9 +47,7 @@
                                                                <option defaultValue="gnu.c.optimization.level.none" id="gnu.c.compiler.exe.debug.option.optimization.level.475185212" name="Optimization Level" superClass="gnu.c.compiler.exe.debug.option.optimization.level" valueType="enumerated"/>
                                                                <option id="gnu.c.compiler.exe.debug.option.debugging.level.1115195033" name="Debug Level" superClass="gnu.c.compiler.exe.debug.option.debugging.level" value="gnu.c.debugging.level.max" valueType="enumerated"/>
                                                                <option id="gnu.c.compiler.option.include.paths.601253491" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" valueType="includePath">
-                                                                       <listOptionValue builtIn="false" value="/usr/include"/>
-                                                                       <listOptionValue builtIn="false" value="/usr/include/c++/4.6/"/>
-                                                                       <listOptionValue builtIn="false" value="/usr/local/bin/MATLAB/R2011a/extern/include/mex.h"/>
+                                                                       <listOptionValue builtIn="false" value="/usr/local/bin/MATLAB/R2011b/extern/include"/>
                                                                </option>
                                                                <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1826163962" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
                                                        </tool>
@@ -48,7 +55,9 @@
                                                        <tool id="cdt.managedbuild.tool.gnu.cpp.linker.exe.debug.993850582" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.exe.debug">
                                                                <option id="gnu.cpp.link.option.paths.1152453706" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths">
                                                                        <listOptionValue builtIn="false" value="/usr/include"/>
-                                                                       <listOptionValue builtIn="false" value="/usr/local/bin/MATLAB/R2011a/extern/include"/>
+                                                               </option>
+                                                               <option id="gnu.cpp.link.option.libs.779138886" superClass="gnu.cpp.link.option.libs" valueType="libs">
+                                                                       <listOptionValue builtIn="false" value="/usr/include"/>
                                                                </option>
                                                                <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1907807136" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
                                                                        <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
                                                                </inputType>
                                                        </tool>
                                                        <tool id="cdt.managedbuild.tool.gnu.assembler.exe.debug.843191636" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.exe.debug">
-                                                               <option id="gnu.both.asm.option.include.paths.631245337" name="Include paths (-I)" superClass="gnu.both.asm.option.include.paths" valueType="includePath">
-                                                                       <listOptionValue builtIn="false" value="/usr/include"/>
-                                                                       <listOptionValue builtIn="false" value="/usr/include/c++/4.6"/>
-                                                                       <listOptionValue builtIn="false" value="/usr/local/bin/MATLAB/R2011a/extern/include"/>
-                                                               </option>
+                                                               <option id="gnu.both.asm.option.include.paths.631245337" name="Include paths (-I)" superClass="gnu.both.asm.option.include.paths"/>
                                                                <inputType id="cdt.managedbuild.tool.gnu.assembler.input.741618650" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
                                                        </tool>
                                                </toolChain>
                                                                        <listOptionValue builtIn="false" value="/usr/include"/>
                                                                        <listOptionValue builtIn="false" value="/usr/include/c++/4.6/"/>
                                                                        <listOptionValue builtIn="false" value="/usr/local/bin/MATLAB/R2011a/extern/include/mex.h"/>
+                                                                       <listOptionValue builtIn="false" value="/usr/local/bin/MATLAB/R2011b/extern/include/"/>
                                                                </option>
                                                                <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.1789503460" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
                                                        </tool>
                                                                        <listOptionValue builtIn="false" value="/usr/include"/>
                                                                        <listOptionValue builtIn="false" value="/usr/include/c++/4.6/"/>
                                                                        <listOptionValue builtIn="false" value="/usr/local/bin/MATLAB/R2011a/extern/include/mex.h"/>
+                                                                       <listOptionValue builtIn="false" value="/usr/local/bin/MATLAB/R2011b/extern/include/"/>
                                                                </option>
                                                                <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1989618474" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
                                                        </tool>
                                                                        <listOptionValue builtIn="false" value="/usr/include"/>
                                                                        <listOptionValue builtIn="false" value="/usr/local/bin/MATLAB/R2011a/extern/include"/>
                                                                </option>
+                                                               <option id="gnu.cpp.link.option.libs.1698259338" superClass="gnu.cpp.link.option.libs" valueType="libs">
+                                                                       <listOptionValue builtIn="false" value="/usr/include"/>
+                                                               </option>
                                                                <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1068735872" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
                                                                        <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
                                                                        <additionalInput kind="additionalinput" paths="$(LIBS)"/>
                                                                        <listOptionValue builtIn="false" value="/usr/include"/>
                                                                        <listOptionValue builtIn="false" value="/usr/include/c++/4.6/"/>
                                                                        <listOptionValue builtIn="false" value="/usr/local/bin/MATLAB/R2011a/extern/include/mex.h"/>
+                                                                       <listOptionValue builtIn="false" value="/usr/local/bin/MATLAB/R2011b/extern/include/"/>
                                                                </option>
                                                                <inputType id="cdt.managedbuild.tool.gnu.assembler.input.780165160" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
                                                        </tool>
index d60bbccf51d90ec7914d43b5fd356ab4178b5573..74345cd1407476688fa267ff0807616ca872d77c 100644 (file)
@@ -7,7 +7,7 @@ A_loadMeshF(file)
 global G_Ta;
 global G_Da;
 
-if(length(mu)~=length(type)&&length(mu)~=1)
+if(length(mu)~=max(type)-1&&length(mu)~=1)
   disp 'Error: Pleas set right type and mu parameters'
   return
 end
@@ -16,9 +16,10 @@ for i = 1:times
  if(size(G_Ta,1)>2)
   nextF = G_Ta(end,1)*4;
   nextS = neville2(1:size(G_Ta,1),G_Ta(:,1)',size(G_Ta,1)+1);
-  calc = size(G_Ta,1)+(-1:0);
+  cald = size(G_Ta,1)+(-1:0);
+  calc = size(G_Ta,1)+(-2:0);
   nextTime = [nextS neville2(G_Ta(calc,1)',G_Ta(calc,2)',nextF) ...
-    neville2(G_Ta(calc,1)',G_Ta(calc,3)',nextF) ...
+    neville2(G_Ta(cald,1)',G_Ta(cald,3)',nextF) ...
     neville2(G_Ta(calc,1)',G_Ta(calc,4)',nextS)]
   
   %overFlowTime = neville2(G_Ta(size(G_Ta,1)+(-1:0),1)',sum(G_Ta(size(G_Ta,1)+(-1:0),2:4),2)',4500)
index bf51d6cd96eb2320c161a41a54ab6a9ac3c3b3ab..8f78739b52e9dc5d8ffb6ba98f247f77879ed001 100644 (file)
@@ -1,13 +1,14 @@
 function A_Iso(file,times,mu,type)
 %A_Iso(file,times,mu,type)
 
+format longG
 
 A_loadMeshF(file)
 
 global G_Ti;
 global G_Di;
 
-if(length(mu)~=length(type)&&length(mu)~=1)
+if(length(mu)~=max(type)-1&&length(mu)~=1)
   disp 'Error: Pleas set right type and mu parameters'
   return
 end
@@ -15,8 +16,9 @@ end
 for i = 1:times
  if(size(G_Ti,1)>2)
   nextF = G_Ti(end,1)*4;
-  calc = size(G_Ti,1)+(-1:0);
-  nextTime = [nextF neville2(G_Ti(calc,1)',G_Ti(calc,2)',nextF) ...
+  cald = size(G_Ti,1)+(-1:0);
+  calc = size(G_Ti,1)+(-2:0);
+  nextTime = [nextF neville2(G_Ti(cald,1)',G_Ti(cald,2)',nextF) ...
     neville2(G_Ti(calc,1)',G_Ti(calc,3)',nextF)]
   
   %overFlowTime = neville2(G_Ti(size(G_Ti,1)+(-1:0),1)',sum(G_Ti(size(G_Ti,1)+(-1:0),2:4),2)',4500)
diff --git a/src/A_plot.m b/src/A_plot.m
new file mode 100644 (file)
index 0000000..9789e21
--- /dev/null
@@ -0,0 +1,62 @@
+function A_plot()
+
+type2str = ['Analytisch  ' ; 'Quad Element' ; 'Quad Achse  '; 'Quad Seite  '];
+
+
+%% G_Di
+global G_Di;
+
+[m n] = size(G_Di);
+
+step = round(n/3);
+
+
+if step<1
+    disp ('Error: No Data to show.')
+else
+
+figure(2)
+loglog(G_Di(:,1),G_Di(:,[3+(0:step-1)*3]))
+
+xlabel('Elemente');
+ylabel('Schaetzer');
+legend(type2str (G_Di(1,[2+(0:step-1)*3])',:));
+
+
+figure(3)
+loglog(G_Di(:,1),G_Di(:,[4+(0:step-1)*3]))
+
+xlabel('Elemente');
+ylabel('eNorm');
+legend(type2str(G_Di(1,[2+(0:step-1)*3])',:));
+end
+
+%%G_Da
+global G_Da;
+
+[m n] = size(G_Da);
+
+step = round(n/3);
+
+
+if step<1
+    disp ('Error: No Data to show.')
+else
+
+figure(4)
+loglog(G_Da(:,1),G_Da(:,[3+(0:step-1)*3]))
+
+xlabel('Elemente');
+ylabel('Schaetzer');
+legend(type2str (G_Da(1,[2+(0:step-1)*3])',:));
+
+
+figure(5)
+loglog(G_Da(:,1),G_Da(:,[4+(0:step-1)*3]))
+
+xlabel('Elemente');3
+ylabel('eNorm');
+legend(type2str(G_Da(1,[2+(0:step-1)*3])',:));
+end
+
+end
\ No newline at end of file
index 4b3fa1fba7952abd2393dee2d30453358706a0a3..35d58aa3ed7805dbdc77f3ebedd45d2228ebc416 100644 (file)
@@ -12,12 +12,12 @@ if (isempty(G_E) || isempty(G_C) || isempty(G_N))
   return
 end
 
-if(length(mu)~=length(type)&&length(mu)~=1)
+if(length(mu)~=max(type)-1&&length(mu)~=1)
   disp 'Error: Pleas set right type and mu parameters'
   return
 end
 if(length(mu)==1)
-  mu = repmat(mu,length(type),1);
+  mu = repmat(mu,max(type)-1,1);
 end
 
 time = zeros(1,3);
@@ -31,7 +31,7 @@ time = zeros(1,3);
   tic
   dataAniso = size(G_E,1);
   for i = 1:length(type)
-    A_fine = mex_build_AU(coordinates_fine,elements_fine,mu(i),type(i));
+    A_fine = mex_build_AU(coordinates_fine,elements_fine,mu,type(i));
 
     x_fine = A_fine\b;
 
index 41ddd61e46703e590b01be7d39499df2cbbd3b0c..1abcfad0512556d54cd8f6450b0d4e7b77ff4c89 100644 (file)
@@ -12,12 +12,12 @@ if (isempty(G_E) || isempty(G_C))
   return
 end
 
-if(length(mu)~=length(type)&&length(mu)~=1)
+if(length(mu)~=max(type)-1&&length(mu)~=1)
   disp 'Error: Pleas set right type and mu parameters'
   return
 end
 if(length(mu)==1)
-  mu = repmat(mu,length(type),1);
+  mu = repmat(mu,max(type)-1,1);
 end
 
 time = zeros(1,2);
@@ -30,7 +30,7 @@ time = zeros(1,2);
   tic
   dataIso = size(G_E,1);
   for i = 1:length(type)
-  A_fine = mex_build_AU(coordinates_fine,elements_fine,mu(i),type(i));
+  A_fine = mex_build_AU(coordinates_fine,elements_fine,mu,type(i));
   [r c] = find(isnan(A_fine)~=isinf(A_fine));
   if(~isempty(r))
     figure(9)
diff --git a/src/mex_Int.cpp b/src/mex_Int.cpp
new file mode 100644 (file)
index 0000000..5b16086
--- /dev/null
@@ -0,0 +1,297 @@
+/*\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
+//#include "gauss.hpp"\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
+using namespace slpR;\r
+\r
+int dimOfVec(double* vec) {\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 : (" << 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
+//     initeQuad();\r
+//     cout << Quad[1].nod[0];\r
+\r
+       int i, j, k; //Schleifenindizes\r
+       double tmp; //Zwischenspeicherung der Einzelnen Werte\r
+       int count;\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 = (int) *(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
+               break;\r
+       case 1:\r
+               ctypeP = calcParIntO1;\r
+               ctypeO = calcOrtIntO1;\r
+               break;\r
+       case 2:\r
+               ctypeP = calcParIntO2;\r
+               ctypeO = calcOrtIntO2;\r
+               break;\r
+       case 3:\r
+               ctypeP = calcParIntO3;\r
+               ctypeO = calcOrtIntO3;\r
+               break;\r
+\r
+       }\r
+\r
+       //LageInformationen\r
+       int rx, rxa, rxb, ry, rya, ryb;\r
+\r
+//     cout << "  Progress: #";\r
+       count = 0;\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 = i+1; 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
+       //              if(k!=j)\r
+//                             A[(j * em) + k] = 1. / (4 * M_PI) * tmp;\r
+/*                     if(count++ > ((em*(em+1))/2)/10){\r
+                               count = 0;\r
+                               cout << "#";\r
+                               cout.flush();\r
+                       }*/\r
+\r
+               }\r
+\r
+       }\r
+       cout << endl;\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
index c6b866f1977462b6e31f111b7328150daeaa3e3e..7f540611d08d3282ded1e4d124f7d931bc2dddba 100644 (file)
@@ -77,8 +77,9 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) {
        double * C = mxGetPr(prhs[0]);\r
        double * E = mxGetPr(prhs[1]);\r
 \r
-       double mu = *(mxGetPr(prhs[2]));\r
+\r
        int type = (int) *(mxGetPr(prhs[3]));\r
+       double * mu = mxGetPr(prhs[2]);\r
 \r
        //Initialisieren der Hilfsvektoren\r
 \r
@@ -101,30 +102,25 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) {
 \r
        // Welche Funktion soll verwendet werden\r
        double(*ctypeP)(double, double, double, double, double, double, double,\r
-                       double);\r
+                       double*);\r
        double(*ctypeO)(double, double, double, double, double, double, double,\r
-                       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
-               break;\r
-       case 1:\r
-               ctypeP = calcParIntO1;\r
-               ctypeO = calcOrtIntO1;\r
+       default:\r
+               ctypeP = cParO1;\r
+               ctypeO = NULL;\r
                break;\r
        case 2:\r
-               ctypeP = calcParIntO2;\r
-               ctypeO = calcOrtIntO2;\r
+               ctypeP = cParO2;\r
+               ctypeO = NULL;\r
                break;\r
        case 3:\r
-               ctypeP = calcParIntO3;\r
-               ctypeO = calcOrtIntO3;\r
+               ctypeP = cParO3;\r
+               ctypeO = NULL;\r
                break;\r
-\r
        }\r
 \r
        //LageInformationen\r
index 2ca81a3223d5602fbf9cc14ab4a32102484a10e9..ccdfc86adba3098668992b064d7ad1470eecfecb 100644 (file)
@@ -147,7 +147,7 @@ double slpR::G_AY1Y2(double p, double y1, double y2, double x1, double x2, doubl
        } else {\r
                sol = NAN;\r
                cout << "warning in G_AY1Y2: no case for p=" << p\r
-                               << " defined. Possible: [-1.5,-0.5,0.5,...]\n";\r
+                               << " defined. Possible: [-1.5,-0.5,0.5,...]" << endl;\r
        }\r
 \r
        return sol;\r
@@ -157,8 +157,6 @@ double slpR::Gs_AX2Y1Y2(double p, double y1, double y2, double x1, double x2,
                double l) {\r
        double sol = 0;\r
 \r
-       //sol += y2*G_AY1Y2(y1,x2,)\r
-\r
        return sol;\r
 }\r
 \r
@@ -334,6 +332,15 @@ double slpR::calcParIntQY1X1(double b, double d, double t, double v, double d1,
 double slpR::calcParIntQY1(double b, double d, double t, double v, double d1,\r
                double d2, double d3) {\r
        //Fall 4\r
+\r
+\r
+\r
+\r
+\r
+       double sol = 0;\r
+\r
+\r
+\r
        return 0; ///ACHTUNG noch Falsch\r
 \r
 }\r
@@ -438,11 +445,12 @@ double slpR::calcParIntO2(double b, double d, double t, double v, double d1,
                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 calcParIntQX1X2(b, d, t, v, d1, d2, d3);\r
-       } else {\r
-               return calcParIntA(b, d, t, v, d1, d2, d3);\r
-       }\r
+//     } else {\r
+//             cout << "2error";\r
+//             return calcParIntA(b, d, t, v, d1, d2, d3);\r
+//     }\r
 \r
 }\r
 \r
@@ -468,6 +476,7 @@ double slpR::calcOrtIntO2(double b, double d, double t, double v, double d1,
        if ((b * b + d * d) * eta <= d1 * d1 + d2 * d2 + d3 * d3) {\r
                return calcOrtIntQX1X2(b, d, t, v, d1, d2, d3);\r
        } else {\r
+               cout << "2error";\r
                return calcOrtIntA(b, d, t, v, d1, d2, d3);\r
        }\r
 }\r
@@ -491,11 +500,12 @@ double slpR::calcParIntO3(double b, double d, double t, double v, double d1,
                d2 = tmp;\r
        }\r
 \r
-       if ((min(b, t) * eta <= d1) && (min(d, v) * eta <= d2) ) {\r
+//     if ((min(b, t) * eta <= d1) && (min(d, v) * eta <= d2) ) {\r
                return calcParIntQY1X1(b, d, t, v, d1, d2, d3);\r
-       } else {\r
-               return calcParIntA(b, d, t, v, d1, d2, d3);\r
-       }\r
+//     } else {\r
+//             cout << "3error";\r
+//             return calcParIntA(b, d, t, v, d1, d2, d3);\r
+//     }\r
 \r
 }\r
 \r
@@ -508,3 +518,95 @@ double slpR::calcOrtIntO3(double b, double d, double t, double v, double d1,
                return calcOrtIntA(b, d, t, v, d1, d2, d3);\r
        }\r
 }\r
+\r
+\r
+\r
+double slpR::cParO1(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
+\r
+\r
+double slpR::cParO2(double b, double d, double t, double v, double d1,\r
+               double d2, double d3, double* eta) {\r
+\r
+       double tmp = 0;\r
+\r
+       // kleine Seite nach vorn\r
+       if(b>t){\r
+               tmp = b;\r
+               b = t;\r
+               t = tmp;\r
+               d1=-d1;\r
+       }\r
+\r
+       // kleine Seite nach vorn\r
+       if(d>v){\r
+               tmp = d;\r
+               d = v;\r
+               v = tmp;\r
+               d2=-d2;\r
+       }\r
+\r
+       if ((b * b + d * d) * eta[0] < d1 * d1 + d2 * d2 + d3 * d3) {\r
+//             cout << "E";\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
+       return 0;\r
+}\r
+\r
+double slpR::cParO3(double b, double d, double t, double v, double d1,\r
+               double d2, double d3, double* eta) {\r
+\r
+       double tmp = 0;\r
+\r
+       // kleine Seite nach vorn\r
+       if(b>t){\r
+               tmp = b;\r
+               b = t;\r
+               t = tmp;\r
+               d1=-d1;\r
+       }\r
+\r
+       // kleine Seite nach vorn\r
+       if(d>v){\r
+               tmp = d;\r
+               d = v;\r
+               v = tmp;\r
+               d2=-d2;\r
+       }\r
+\r
+       if ((b * b + d * d) * eta[0] < d1 * d1 + d2 * d2 + d3 * d3) {\r
+\r
+               //kleinere Achse nach vorn\r
+               if (b * b + t * t > d * d + v * v) {\r
+                       double tmp = 0;\r
+\r
+                       tmp = b;\r
+                       b = d;\r
+                       d = tmp;\r
+                       tmp = t;\r
+                       t = v;\r
+                       v = tmp;\r
+\r
+                       tmp = d1;\r
+                       d1 = d2;\r
+                       d2 = tmp;\r
+               }\r
+\r
+               if (min(b, t) * eta[1] <= d1){\r
+//                     cout << "A";\r
+                       return calcParIntQY1X1(b, d, t, v, d1, d2, d3);\r
+               }else{\r
+//                     cout << "E";\r
+                       return calcParIntQX1X2(b, d, t, v, d1, d2, d3);\r
+               }\r
+       } else {\r
+               return calcParIntA(b, d, t, v, d1, d2, d3);\r
+       }\r
+\r
+       return 0;\r
+}\r
index 801b9a6ac59fe3a01b313191c3695f640bdca885..6b568252266407bcd3642b708a4f555e2057956d 100644 (file)
@@ -67,5 +67,17 @@ namespace slpR {
                        double);
 
 
+       //Automatische entscheidung, welche Quad verwendet werden soll
+       // sol = cParIntX(b,d,t,v,d1,d2,d3,eta);
+
+       //Voll Analytisch
+       double cParO1(double, double, double, double, double, double, double,
+                       double*);
+       double cParO2(double, double, double, double, double, double, double,
+                       double*);
+       double cParO3(double, double, double, double, double, double, double,
+                       double*);
+
+
 }
 #endif
index 2945b615ffdfac73c1d19b506fffd43e7eb5dad7..3dd4861e23aaa1b18969e170be3f158b5d5f9976 100644 (file)
@@ -1 +1 @@
-\r\rcoo = @(h,diff)[0 0 0;1 0 0; 1 1 0;0 1  0; 0 0 0 ; 0+h 0 0; 0+h h 0 ; 0 h 0]+[zeros(4,3);repmat(diff,4,1)];\relements=[1 2 3 4;5 6 7 8];\rneigh = zeros(2,8);\rdat = [];\r\rdiff = [2 0 0];\r\r%% Laage ??bersicht\rfigure(1)\rh = 1;\rcoordinates=coo(h,diff)\rcurrent = coordinates(elements(1,[1:4,1])',:);\rfill3(current(:,1),current(:,2),current(:,3),'g');\rhold on\rcurrent = coordinates(elements(2,[1:4,1])',:);\rfill3(current(:,1),current(:,2),current(:,3),'b');\r\rh = h/2;\rcoordinates=coo(h,diff);\rcurrent = coordinates(elements(2,[1:4,1])',:);\rfill3(current(:,1),current(:,2),current(:,3),'y');\rhold off\rlegend('Element1(h)','Element2(h)','Element2(h/2)');\rtitle('Laage der Elemente');\r\r%% Integrale bei kleiner werdenden Elementen\r\rh = 2;\rfor I = 1:50\r\r  h = h/2;\r  coordinates=coo(h,diff);\r  \r  A0 = mex_build_AU(coordinates,elements,0,0);\r  A2 = mex_build_AU(coordinates,elements,1,2);\r  A1 = mex_build_AU(coordinates,elements,1,1);\r  I\r  dat(I,1:4) = [h A0(1,2) A2(1,2) A1(1,2)];\r    dat(dat<0)=0;\rend\r\rfigure(2)\rloglog(dat(:,1),abs(dat(:,2)),dat(:,1),abs(dat(:,3)),dat(:,1),abs(dat(:,4)));\r\rlegend('Analytisch','Quad Element','Element vertauschen','location','best');\rxlabel('Elementgroesse (k??rzeste Seite)');\rylabel('Integral');\rtitle('Integral bei kleiner werdenden Element');\r\r%% Netzverfeinerung mit schlechtem Netz\r\rh =  (1/2)^25;\rcoordinates=coo(h,diff);\r\rA_loadMesh(coordinates,elements,neigh);\rdatA=[];\rfor I = 1:4\r  datA(I,:) = A_stepIso(1,[0 3 2]);\r%   datA(I,:) = A_stepAniso(1,[0 3 2],1,0);\r  I\rend\rfigure(3)\rloglog(datA(2:end,1),datA(2:end,3),datA(2:end,1),datA(2:end,9),datA(2:end,1),datA(2:end,6))\r\rlegend('Analytisch','Quad Element','Quad Achse','location','best');\rxlabel('Anzahl der Elemente');\rylabel('mu Schaetzer');\rtitle('mu Schaetzer mit "schlechtem" Startnetz');\r\rfigure(4)\rloglog(datA(:,1),datA(:,4),datA(:,1),datA(:,10),datA(:,1),datA(:,7))\r\rlegend('Analytisch','Quad Element','Quad Achse','location','best');\rxlabel('Anzahl der Elemente');\rylabel('EnergieNorm ^2 ');\rtitle('EnergieNorm ^2 mit "schlechtem" Startnetz');\r\rdatA\r
\ No newline at end of file
+\r\rcoo = @(h,diff)[0 0 0;1 0 0; 1 1 0;0 1  0; 0 0 0 ; 0+h 0 0; 0+h h 0 ; 0 h 0]+[zeros(4,3);repmat(diff,4,1)];\relements=[1 2 3 4;5 6 7 8];\rneigh = zeros(2,8);\rdat = [];\r\rdiff = [2 0 0];\r\r%% Laage Uebersicht\rfigure(1)\rh = 1;\rcoordinates=coo(h,diff);\rcurrent = coordinates(elements(1,[1:4,1])',:);\rfill3(current(:,1),current(:,2),current(:,3),'g');\rhold on\rcurrent = coordinates(elements(2,[1:4,1])',:);\rfill3(current(:,1),current(:,2),current(:,3),'b');\r\rh = h/2;\rcoordinates=coo(h,diff);\rcurrent = coordinates(elements(2,[1:4,1])',:);\rfill3(current(:,1),current(:,2),current(:,3),'y');\rhold off\rlegend('Element1(h)','Element2(h)','Element2(h/2)');\rtitle('Laage der Elemente');\r\r%% Integrale bei kleiner werdenden Elementen\r\rh = 2;\rfor I = 1:50\r\r  h = h/2;\r  coordinates=coo(h,diff);\r  \r  A0 = mex_build_AU(coordinates,elements,0,0);\r  A2 = mex_build_AU(coordinates,elements,1,2);\r  A3 = mex_build_AU(coordinates,elements,1,3);\r  I\r  dat(I,1:4) = [h A0(1,2) A2(1,2) A3(1,2)];\r    dat(dat<0)=0;\rend\r\rfigure(2)\rloglog(dat(:,1),abs(dat(:,2)),dat(:,1),abs(dat(:,3)),'-.',dat(:,1),abs(dat(:,4)),'--');\r\rlegend('Analytisch','Quad Element','Quad Achse','location','best');\rxlabel('Elementgroesse (k??rzeste Seite)');\rylabel('Integral');\rtitle('Integral bei kleiner werdenden Element');\r\r%% Netzverfeinerung mit schlechtem Netz\r\r% h =  (1/2)^25;\r% coordinates=coo(h,diff);\r\r% A_loadMesh(coordinates,elements,neigh);\r% datA=[];\r% for I = 1:4\r%   datA(I,:) = A_stepIso(1,[0 3 2]);\r% %   datA(I,:) = A_stepAniso(1,[0 3 2],1,0);\r%   I\r% end\r% figure(3)\r% loglog(datA(2:end,1),datA(2:end,3),datA(2:end,1),datA(2:end,9),datA(2:end,1),datA(2:end,6))\r\r% legend('Analytisch','Quad Element','Quad Achse','location','best');\r% xlabel('Anzahl der Elemente');\r% ylabel('mu Schaetzer');\r% title('mu Schaetzer mit "schlechtem" Startnetz');\r\r% figure(4)\r% loglog(datA(:,1),datA(:,4),datA(:,1),datA(:,10),datA(:,1),datA(:,7))\r\r% legend('Analytisch','Quad Element','Quad Achse','location','best');\r% xlabel('Anzahl der Elemente');\r% ylabel('EnergieNorm ^2 ');\r% title('EnergieNorm ^2 mit "schlechtem" Startnetz');\r\rdatA\r
\ No newline at end of file
index 6087e4bc18e0b37d037e1ef954d36baa9e1d9e0b..b7300f9987463350c554e74bd6bb0574b3af627a 100644 (file)
@@ -35,9 +35,9 @@ for I = 1:50
   
   A0 = mex_build_AU(coordinates,elements,0,0);
   A2 = mex_build_AU(coordinates,elements,1,2);
-  A1 = mex_build_AU(coordinates,elements,1,3);
+  A3 = mex_build_AU(coordinates,elements,1,3);
   I
-  dat(I,1:4) = [h A0(1,2) A2(1,2) A1(1,2)];
+  dat(I,1:4) = [h A0(1,2) A2(1,2) A3(1,2)];
     dat(dat<0)=0;
 end
 
@@ -51,30 +51,30 @@ title('Integral bei kleiner werdenden Element');
 
 %% Netzverfeinerung mit schlechtem Netz
 
-h =  (1/2)^25;
-coordinates=coo(h,diff);
-
-A_loadMesh(coordinates,elements,neigh);
-datA=[];
-for I = 1:4
-  datA(I,:) = A_stepIso(1,[0 3 2]);
-%   datA(I,:) = A_stepAniso(1,[0 1 3 2],1,0);
-  I
-end
-figure(3)
-loglog(datA(2:end,1),datA(2:end,3),datA(2:end,1),datA(2:end,9),datA(2:end,1),datA(2:end,6))
-
-legend('Analytisch','Quad Element','Quad Achse','location','best');
-xlabel('Anzahl der Elemente');
-ylabel('mu Schaetzer');
-title('mu Schaetzer mit "schlechtem" Startnetz');
-
-figure(4)
-loglog(datA(:,1),datA(:,4),datA(:,1),datA(:,10),datA(:,1),datA(:,7))
-
-legend('Analytisch','Quad Element','Quad Achse','location','best');
-xlabel('Anzahl der Elemente');
-ylabel('EnergieNorm ^2 ');
-title('EnergieNorm ^2 mit "schlechtem" Startnetz');
-
-datA
+h =  (1/2)^25;
+coordinates=coo(h,diff);
+% 
+A_loadMesh(coordinates,elements,neigh);
+datA=[];
+for I = 1:4
+  datA(I,:) = A_stepIso(1,[0 3 2]);
+%   datA(I,:) = A_stepAniso(1,[0 1 3 2],1,0);
+  I
+end
+figure(3)
+loglog(datA(2:end,1),datA(2:end,3),datA(2:end,1),datA(2:end,9),datA(2:end,1),datA(2:end,6))
+% 
+legend('Analytisch','Quad Element','Quad Achse','location','best');
+xlabel('Anzahl der Elemente');
+ylabel('mu Schaetzer');
+title('mu Schaetzer mit "schlechtem" Startnetz');
+% 
+figure(4)
+loglog(datA(:,1),datA(:,4),datA(:,1),datA(:,10),datA(:,1),datA(:,7))
+% 
+legend('Analytisch','Quad Element','Quad Achse','location','best');
+xlabel('Anzahl der Elemente');
+ylabel('EnergieNorm ^2 ');
+title('EnergieNorm ^2 mit "schlechtem" Startnetz');
+% 
+datA
index 359ad3d144ae19ae980f5d86aca31c7f9339b389..97d7a8f800b2ff84e2f3d48a5730c83e83c1ea68 100644 (file)
@@ -37,14 +37,14 @@ for I = 1:50
   
   A0 = mex_build_AU(coordinates,elements,0,0);
   A2 = mex_build_AU(coordinates,elements,1,2);
-  A1 = mex_build_AU(coordinates,elements,1,3);
+  A3 = mex_build_AU(coordinates,elements,1,3);
   I
-  dat(I,1:4) = [h A0(1,2) A2(1,2) A1(1,2)];
+  dat(I,1:4) = [h A0(1,2) A2(1,2) A3(1,2)];
     dat(dat<0)=0;
 end
 
 figure(2)
-loglog(dat(:,1),abs(dat(:,2)),dat(:,1),abs(dat(:,3)),dat(:,1),abs(dat(:,4)));
+loglog(dat(:,1),abs(dat(:,2)),dat(:,1),abs(dat(:,3)),'-.',dat(:,1),abs(dat(:,4)),'--');
 
 legend('Analytisch','Quad Element','Quad Achse','location','best');
 xlabel('Elementgroesse (k??rzeste Seite)');
@@ -52,31 +52,31 @@ ylabel('Integral');
 title('Integral bei kleiner werdenden Element');
 
 %% Netzverfeinerung mit schlechtem Netz
-
-h =  (1/2)^25;
-coordinates=coo(h,diff);
-
-A_loadMesh(coordinates,elements,neigh);
-datA=[];
-for I = 1:4
-  datA(I,:) = A_stepIso(1,[0 3 2]);
-%   datA(I,:) = A_stepAniso(1,[0 3 2],1,0);
-  I
-end
-figure(3)
-loglog(datA(2:end,1),datA(2:end,3),datA(2:end,1),datA(2:end,9),datA(2:end,1),datA(2:end,6))
-
-legend('Analytisch','Quad Element','Quad Achse','location','best');
-xlabel('Anzahl der Elemente');
-ylabel('mu Schaetzer');
-title('mu Schaetzer mit "schlechtem" Startnetz');
-
-figure(4)
-loglog(datA(:,1),datA(:,4),datA(:,1),datA(:,10),datA(:,1),datA(:,7))
-
-legend('Analytisch','Quad Element','Quad Achse','location','best');
-xlabel('Anzahl der Elemente');
-ylabel('EnergieNorm ^2 ');
-title('EnergieNorm ^2 mit "schlechtem" Startnetz');
-
-datA
+% 
+h =  (1/2)^25;
+coordinates=coo(h,diff);
+% 
+A_loadMesh(coordinates,elements,neigh);
+datA=[];
+for I = 1:4
+  datA(I,:) = A_stepIso(1,[0 3 2]);
+%   datA(I,:) = A_stepAniso(1,[0 3 2],1,0);
+  I
+end
+figure(3)
+loglog(datA(2:end,1),datA(2:end,3),datA(2:end,1),datA(2:end,9),datA(2:end,1),datA(2:end,6))
+% 
+legend('Analytisch','Quad Element','Quad Achse','location','best');
+xlabel('Anzahl der Elemente');
+ylabel('mu Schaetzer');
+title('mu Schaetzer mit "schlechtem" Startnetz');
+% 
+figure(4)
+loglog(datA(:,1),datA(:,4),datA(:,1),datA(:,10),datA(:,1),datA(:,7))
+% 
+legend('Analytisch','Quad Element','Quad Achse','location','best');
+xlabel('Anzahl der Elemente');
+ylabel('EnergieNorm ^2 ');
+title('EnergieNorm ^2 mit "schlechtem" Startnetz');
+% 
+datA