<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"/>
<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>
<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>
<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>
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
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)
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
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)
--- /dev/null
+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
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);
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;
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);
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)
--- /dev/null
+/*\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
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
\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
} 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
double l) {\r
double sol = 0;\r
\r
- //sol += y2*G_AY1Y2(y1,x2,)\r
-\r
return sol;\r
}\r
\r
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
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
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
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
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
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
-\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% \r% datA\r
\ No newline at end of file
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
%% 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
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)');
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