using namespace std;\r
\r
int dimOfVec(double* vec) {\r
- if (fabs(vec[2]) > M_EPS)\r
+ if (vec[2] != 0)\r
return 2;\r
- else if (fabs(vec[1]) > M_EPS)\r
+ else if (vec[1] !=0)\r
return 1;\r
- else if (fabs(vec[0]) > M_EPS)\r
+ else if (vec[0] !=0)\r
return 0;\r
else {\r
- cerr << "dimOfVec : (" << vec[0] << vec[1] << vec[2]\r
+ cerr << "dimOfVec : (" << vec[0] << " " << vec[1]<< " " << vec[2]\r
<< ") alle Werte 0 \n";\r
return -1;\r
}\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
+// cout << " Progress: #";\r
count = 0;\r
//Ausrechnen\r
for (j = 0; j < em; ++j) {\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
+/* if(count++ > ((em*(em+1))/2)/10){\r
count = 0;\r
cout << "#";\r
cout.flush();\r
- }\r
+ }*/\r
\r
}\r
\r
--- /dev/null
+#include <iostream>
+#include "mex.h"
+
+void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) {
+ std::cout << "Hello" << std::endl;
+
+
+
+}
}\r
\r
return sol;\r
-\r
}\r
\r
double calcParIntQY1(double b, double d, double t, double v, double d1,\r
\r
}\r
\r
-double calcOrtIntQY1Y2(double b, double d, double t, double v, double d1,\r
+double calcOrtIntQX1X2(double b, double d, double t, double v, double d1,\r
double d2, double d3) {\r
- return 0;\r
+ //Fall 2\r
+ double sol = 0;\r
+\r
+ for (int i = 0; i < 5; ++i) {\r
+ for (int j = 0; j < 5; ++j) {\r
+ sol += G_AY1Y2(-0.5, t + d2, v + d3, d * gauss_n5[j],0, b * gauss_n5[i] - d1)\r
+ * b * d * gauss_w5[i] * gauss_w5[j];\r
+ sol -= G_AY1Y2(-0.5, d2, v + d3, d * gauss_n5[j],0, b * gauss_n5[i] - d1)\r
+ * b * d * gauss_w5[i] * gauss_w5[j];\r
+ sol -= G_AY1Y2(-0.5, t + d2, d3, d * gauss_n5[j],0, b * gauss_n5[i] - d1)\r
+ * b * d * gauss_w5[i] * gauss_w5[j];\r
+ sol += G_AY1Y2(-0.5, d2, d3, d * gauss_n5[j],0, b * gauss_n5[i] - d1)\r
+ * b * d * gauss_w5[i] * gauss_w5[j];\r
+ }\r
+ }\r
+\r
+ return sol;\r
\r
}\r
\r
double tmp = 0;\r
\r
tmp = b;\r
- b = t;\r
- t = tmp;\r
- tmp = d;\r
- d = v;\r
+ b = v;\r
v = tmp;\r
+ tmp = d;\r
+ d = t;\r
+ t = tmp;\r
\r
d1 = -d1;\r
d2 = -d2;\r
double d2, double d3, double eta) {\r
\r
//Elmente anordnen\r
- if (b * b + d * d > t * t + v * v) {\r
+ if (d > t) {\r
double tmp = 0;\r
\r
tmp = b;\r
- b = t;\r
- t = tmp;\r
- tmp = d;\r
- d = v;\r
+ b = v;\r
v = tmp;\r
+ tmp = d;\r
+ d = t;\r
+ t = tmp;\r
\r
d1 = -d1;\r
d2 = -d2;\r
}\r
\r
if ((b * b + d * d) * eta <= d1 * d1 + d2 * d2 + d3 * d3) {\r
- return 0;\r
+ return calcOrtIntQX1X2(b, d, t, v, d1, d2, d3);\r
} else {\r
return calcOrtIntA(b, d, t, v, d1, d2, d3);\r
}\r
double d2, double d3, double eta) {\r
\r
//Elmente anordnen\r
- if (b * b + d * d > t * t + v * v) {\r
+ if (d > t) {\r
double tmp = 0;\r
\r
tmp = b;\r
- b = t;\r
- t = tmp;\r
- tmp = d;\r
- d = v;\r
+ b = v;\r
v = tmp;\r
+ tmp = d;\r
+ d = t;\r
+ t = tmp;\r
\r
d1 = -d1;\r
d2 = -d2;\r
--- /dev/null
+\r\relements=[1 2 3 4;5 6 7 8];\rneigh = zeros(2,8);\r\rdat = [];\r\rh = 1;\rcoordinates=[0 0 0;1 0 0; 1 1 0;0 1 0; 2 0 0; 2+h 0 0; 2+h h 0 ; 2 h 0];\rfigure(1)\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=[0 0 0;1 0 0; 1 1 0;0 1 0; 2 0 0; 2+h 0 0; 2+h h 0 ; 2 h 0];\rcurrent = coordinates(elements(2,[1:4,1])',:);\rfill3(current(:,1),current(:,2),current(:,3),'y');\rhold off\rlegend('Element1(h/2)','Element2(h/2)','Element2(h/4)')\r\rh = 2;\rfor I = 1:50\r\r h = h/2;\rcoordinates=[0 0 0;1 0 0; 1 1 0;0 1 0; 2 0 0; 2+h 0 0; 2+h h 0 ; 2 h 0];\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');\r\rxlabel('Elementgroesse');\rylabel('Integral');
\ No newline at end of file
--- /dev/null
+
+
+elements=[1 2 3 4;5 6 7 8];
+neigh = zeros(2,8);
+
+dat = [];
+
+h = 1/2;
+coordinates=[0 0 0;1 0 0; 1 1 0;0 1 0; 4 0 0; 4+h 0 0; 4+h 1 0 ; 4 1 0];
+figure(1)
+current = coordinates(elements(1,[1:4,1])',:);
+fill3(current(:,1),current(:,2),current(:,3),'g');
+hold on
+current = coordinates(elements(2,[1:4,1])',:);
+fill3(current(:,1),current(:,2),current(:,3),'b');
+
+h = h/2;
+coordinates=[0 0 0;1 0 0; 1 1 0;0 1 0; 4 0 0; 4+h 0 0; 4+h 1 0 ; 4 1 0];
+current = coordinates(elements(2,[1:4,1])',:);
+fill3(current(:,1),current(:,2),current(:,3),'y');
+hold off
+legend('Element1(h/2)','Element2(h/2)','Element2(h/4)')
+
+h = 2;
+for I = 1:50
+
+ h = h/2;
+coordinates=[0 0 0;1 0 0; 1 1 0;0 1 0; 4 0 0; 4+h 0 0; 4+h 1 0 ; 4 1 0];
+
+ A0 = mex_build_AU(coordinates,elements,0,0);
+ A2 = mex_build_AU(coordinates,elements,1,2);
+ A3 = mex_build_AU(coordinates,elements,1,3);
+ I
+ 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)));
+
+legend('Analytisch','Quad Element','Quad Achse');
+
+xlabel('Elementgroesse');
+ylabel('Integral');
\ No newline at end of file
--- /dev/null
+
+
+elements=[1 2 3 4;5 6 7 8];
+neigh = zeros(2,8);
+
+dat = [];
+
+h = 1/2;
+coordinates=[0 0 0;h 0 0; h 1 0;0 1 0; 2 0 0; 2+h 0 0; 2+h 1 0 ; 2 1 0];
+figure(1)
+current = coordinates(elements(1,[1:4,1])',:);
+fill3(current(:,1),current(:,2),current(:,3),'g');
+hold on
+current = coordinates(elements(2,[1:4,1])',:);
+fill3(current(:,1),current(:,2),current(:,3),'b');
+
+h = h/2;
+coordinates=[0 0 0;h 0 0; h 1 0;0 1 0; 2 0 0; 2+h 0 0; 2+h 1 0 ; 2 1 0];
+current = coordinates(elements(1,[1:4,1])',:);
+fill3(current(:,1),current(:,2),current(:,3),'y');
+hold on
+current = coordinates(elements(2,[1:4,1])',:);
+fill3(current(:,1),current(:,2),current(:,3),'r');
+hold off
+legend('Element1(h/2)','Element2(h/2)','Element1(h/4)','Element2(h/4)')
+
+h = 2;
+for I = 1:50
+
+ h = h/2;
+coordinates=[0 0 0;h 0 0; h 1 0;0 1 0; 2 0 0; 2+h 0 0; 2+h 1 0 ; 2 1 0];
+
+ A0 = mex_build_AU(coordinates,elements,0,0);
+ A2 = mex_build_AU(coordinates,elements,1,2);
+ A3 = mex_build_AU(coordinates,elements,1,3);
+ I
+ 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)));
+
+legend('Analytisch','Quad Element','Quad Achse');
+
+xlabel('Elementgroesse');
+ylabel('Integral');
\ No newline at end of file
--- /dev/null
+
+
+elements=[1 2 3 4;5 6 7 8];
+neigh = zeros(2,8);
+
+dat = [];
+
+h = 1/2;
+coordinates=[0 0 0;1 0 0; 1 1 0;0 1 0; 2 0 0; 2 0 h; 2 h h ; 2 h 0];
+figure(1)
+current = coordinates(elements(1,[1:4,1])',:);
+fill3(current(:,1),current(:,2),current(:,3),'g');
+hold on
+current = coordinates(elements(2,[1:4,1])',:);
+fill3(current(:,1),current(:,2),current(:,3),'b');
+
+h = h/2;
+coordinates=[0 0 0;1 0 0; 1 1 0;0 1 0; 2 0 0; 2 0 h; 2 h h ; 2 h 0];
+current = coordinates(elements(2,[1:4,1])',:);
+fill3(current(:,1),current(:,2),current(:,3),'r');
+hold off
+legend('Element1(h/2)','Element2(h/2)','Element1(h/4)','Element2(h/4)')
+
+h = 2;
+for I = 1:50
+
+ h = h/2;
+coordinates=[0 0 0;1 0 0; 1 1 0;0 1 0; 2 0 0; 2 0 h; 2 h h ; 2 h 0];
+
+ A0 = mex_build_AU(coordinates,elements,0,0);
+ A1 = mex_build_AU(coordinates,elements,1,1);
+ A2 = mex_build_AU(coordinates,elements,1,2);
+ I
+ dat(I,1:4) = [h A0(1,2) A1(1,2) A2(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)));
+
+legend('Analytisch','Element vertauschen','Quad Element','location','southeast');
+
+xlabel('Elementgroesse');
+ylabel('Integral');
\ No newline at end of file