[coordinates_fine,elements_fine,neigh_fine,f2s]=refineQuad(G_C,G_E,G_N,2);
time(1) = toc;
- b = sqrt(sum(quadNorm(coordinates_fine,elements_fine,'w').^2,2));
+ b = sqrt(sum(quadNorm(coordinates_fine,elements_fine,'w').^2,2))
tic
data = size(G_E,1);
end
time(2) = toc;
+ % nur RandElemente Verfeinern
+% marked = ones(1,size(G_E,1));
+% marked(find(sum((G_N(:,1:4)==0),2))) = 2;
- marked = mark(x_fine(f2s)',ind,eta,eps);
+
+ % Adaptiv Verfeinern
+ marked = mark(x_fine(f2s)',ind,eta,eps)
+% plotShape(coordinates_fine,elements_fine,x_fine);
+% plotMark(find(marked>1),G_C,G_E);
% clear 'coordinates_fine' 'elements_fine' 'neigh_fine' 'f2s'
function ind=computeEstSlpMuTilde(x_fine,coo,ele,f2s)
+% x_fine - Phi
+% coo - coordinaten
+% ele - elemente
+% f2s - Vater Sohn beziehungen
+
+
xF2S = x_fine(f2s)';
if(size(xF2S,1)==1)
function REF = mark(xF2S,ind,theta,eta)
% function REF = mark(xF2S,ind,theta,eta)
-% xF2S - Father son
+% xF2S - Father son relation
% ind - error estimator
% eta - refine element? (0..1, 1 = All)
% eps - refine how? (0 = Isotrop)
+% REF - vector with entries [1 : 4]
if(size(xF2S,1)==1)
xF2S = xF2S';
ell = find(sum_ind >= sum_ind(end) * theta,1);
- t1(idx(ell:end)) = 1;
+ t1(idx(ell:end)) = 1; % Nicht verfeinert
end
%% Wie muss verfeinert werden
-if(eps > 0)
+if(eps > 0) % Horizontal oder Vertikal
t3 = (eta*abs(Ct(3,:)) >= sqrt(Ct(2,:).^2+Ct(4,:).^2));
REF(t3) = 3;
t4 = (eta*abs(Ct(4,:)) >= sqrt(Ct(2,:).^2+Ct(3,:).^2));
REF(t4) = 4;
end
-REF(~(t4+t3+t1)) = 2;
+REF(~(t4+t3+t1)) = 2; % Rest wird Horizontal UND Vertikal geteilt
end
end
end
+% anorm = quadNorm(coordinates,elements);
+% for idx = 1:eles
+% current = sum(coordinates(elements(idx,[2,4])',:),1)/2;
+% current = [current ; current+anorm(idx,:)*ind(idx);coordinates(elements(idx,1)',:)];
+% plot3(current(:,1),current(:,2),current(:,3),'r'); % Zeichnet Oberflaeche
+% scatter3(current(2,1),current(2,2),current(2,3),'xr');
+% hold on
+% end
+
xlabel 'x'
ylabel 'y'
zlabel 'z'
break;
end
for ele = ref(randperm(length(ref))) %LOL Zufall bringts
+
% # HangingNode Check
N = G_ref_N(ele,G_ref_N(ele,5:8)==0);
N2 = N(N~=0); %Nachbarn der Kanten mit nur einem Nachbar
if(~isempty(N2))
N3=mod(find((G_ref_N(N2',:)==ele)')-1,4)+5; % ACHTUNG noch mal überprüfen
- N4=N2(diag(G_ref_N(N2',N3'))~=0);
+ N4=N2(diag(G_ref_N(N2',N3'))~=0)
if(~isempty(N4))
for i = N4
if(i>length(G_ref_t))
global G_ref_N;
global G_ref_f2s;
-
-%Innere Beziehungen setzen
-% ...
-
% plotShape(G_ref_C,G_ref_E);
this = G_ref_N(ele,:);
#include "slpRectangle.hpp"\r
#include "gauss.hpp"\r
\r
-#define quad 2 // Anzahl der Quadratur Auswertungstellen 2^quad\r
-using namespace std;\r
-//using namespace slpR;\r
+#define quad 4 // Anzahl der Quadratur Auswertungstellen 2^quad\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
+using namespace std;\r
\r
int sign(double);\r
//double arsinh(double);\r
return 1. / sqrt((x1 - y1) * (x1 - y1) + (x2 - y2) * (x2 - y2) + l * l);\r
}\r
\r
-double slpR::g_QY(double p, double y, double x, double l) {\r
+double inline g_QY(double p, double y, double x, double l) {\r
\r
double sol = 0;\r
\r
}\r
\r
//y-x muss != 0 sein\r
-double slpR::g_AY(double p, double y, double x, double l) {\r
+double inline g_AY(double p, double y, double x, double l) {\r
//printf("%.1f | %.1f | %.1f | %.1f +",p,x,y,l);\r
\r
double sol = 0;\r
return sol;\r
}\r
\r
-double slpR::G_QY1Y2(double p, double y1, double y2, double x1, double x2,\r
+double inline G_QY1Y2(double p, double y1, double y2, double x1, double x2,\r
double l) {\r
\r
double sol = 0;\r
return sol;\r
}\r
\r
-double slpR::G_AY2X2(double y1, double y2, double x1, double x2, double d3) {\r
+double inline G_AY2X2(double y1, double y2, double x1, double x2, double d3) {\r
\r
// cout << "(" << y1 << "," << y2 << ")(" << x1 << "," << x2 << ")(" << d3 << ")" << endl;\r
\r
return sol;\r
}\r
\r
-double slpR::G_AY1Y2(double p, double y1, double y2, double x1, double x2,\r
+double inline G_AY1Y2(double p, double y1, double y2, double x1, double x2,\r
double l) {\r
// printf("%.1f | %.1f %.1f | %.1f %.1f | %.1f +",p,x1,x2,y1,y2,l);\r
double pt = p + 1.5;\r
return sol;\r
}\r
\r
-double slpR::Gs_AX2Y1Y2(double p, double y1, double y2, double x1, double x2,\r
+double inline Gs_AX2Y1Y2(double p, double y1, double y2, double x1, double x2,\r
double l) {\r
double sol = 0;\r
\r
return sol;\r
}\r
\r
-double slpR::F_par(double x1, double x2, double y1, double y2, double d1,\r
+double inline F_par(double x1, double x2, double y1, double y2, double d1,\r
double d2, double d3) {\r
\r
// printf("%.1f %.1f | %.1f %.1f | %.1f %.1f %.1f",x1,x2,y1,y2,d1,d2,d3);\r
return sol;\r
}\r
\r
-double slpR::F_ort(double x1, double x2, double y2, double y3, double d1,\r
+double inline F_ort(double x1, double x2, double y2, double y3, double d1,\r
double d2, double d3) {\r
\r
// printf("%.1f %.1f | %.1f %.1f | %.1f %.1f %.1f",x1,x2,y2,y3,d1,d2,d3);\r
\r
}*/\r
\r
-double slpR::apply0Int4(\r
+double inline apply0Int4(\r
double(*f)(double, double, double, double, double, double, double),\r
double b, double d, double t, double v, double d1, double d2,\r
double d3) {\r
\r
}\r
\r
-double slpR::apply0Int2(\r
+double inline apply0Int2(\r
double(*f)(double, double, double, double, double, double, double),\r
double b, double d, double t, double v, double d1, double d2,\r
double d3) {\r
namespace slpR {
// sol = g0(p,y,x,l);
- double g_AY(double, double, double, double);
+// double g_AY(double, double, double, double);
// sol = g0(p,y,x,l);
- double g_QY(double, double, double, double);
+// double g_QY(double, double, double, double);
// sol = G00(p,y1,y2,x1,x2,l);
- double G_AY1Y2(double, double, double, double, double, double);
+// double G_AY1Y2(double, double, double, double, double, double);
// sol = G00(p,y1,y2,x1,x2,l);
- double G_AY2X2(double, double, double, double, double);
+// double G_AY2X2(double, double, double, double, double);
// sol = G00(p,y1,y2,x1,x2,l);
- double G_QY1Y2(double, double, double, double, double, double);
- double Gs_AX2Y1Y2(double, double, double, double, double, double);
+// double G_QY1Y2(double, double, double, double, double, double);
+// double Gs_AX2Y1Y2(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);
+// 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);
+// 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),
- double, double, double, double, double, double, double);
- double apply0Int2(
- double(*)(double, double, double, double, double, double, double),
- double, double, double, double, double, double, double);
+// double apply0Int4(
+//double(*)(double, double, double, double, double, double, double),
+ //double, double, double, double, double, double, double);
+ // double apply0Int2(
+ //double(*)(double, double, double, double, double, double, double),
+ //double, double, double, double, double, double, double);
// sol = calcParInt.(b,d,t,v,d1,d2,d3);
double calcParIntA(double, double, double, double, double, double, double);
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);