From: treecity Date: Mon, 24 Oct 2011 07:02:45 +0000 (+0000) Subject: [src] mex_build_AU : Progress Anzeige... leider funktioniert sie nicht X-Git-Url: https://git.leopard-lacewing.eu/?a=commitdiff_plain;h=4fc2e7b93b7c23dda7cb4e638b00cf69a271a319;p=bacc.git [src] mex_build_AU : Progress Anzeige... leider funktioniert sie nicht [src] A_step bug mit type behoben git-svn-id: https://drops.fb12.tu-berlin.de/svn/bacc/trunk@62 26120e32-c555-405d-b3e1-1f783fb42516 --- diff --git a/src/A_Iso.m b/src/A_Iso.m index 4d02c1a..e021601 100644 --- a/src/A_Iso.m +++ b/src/A_Iso.m @@ -16,9 +16,8 @@ for i = 1:times if(size(G_Ti,1)>2) nextF = G_Ti(end,1)*4; calc = size(G_Ti,1)+(-1:0); - nextTime = [nextS neville2(G_Ti(calc,1)',G_Ti(calc,2)',nextF) ... - neville2(G_Ti(calc,1)',G_Ti(calc,3)',nextF) ... - neville2(G_Ti(calc,1)',G_Ti(calc,4)',nextF)] + nextTime = [nextF neville2(G_Ti(calc,1)',G_Ti(calc,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) end diff --git a/src/A_stepAnIso.m b/src/A_stepAnIso.m index 5001ca4..beb3bd1 100644 --- a/src/A_stepAnIso.m +++ b/src/A_stepAnIso.m @@ -27,22 +27,20 @@ time = zeros(1,3); [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)); + tic dataAniso = size(G_E,1); for i = 1:length(type) A_fine = mex_build_AU(coordinates_fine,elements_fine,mu(i),type(i)); - b = sqrt(sum(quadNorm(coordinates_fine,elements_fine,'w').^2,2)); - x_fine = A_fine\b; xe_fine = x_fine'*A_fine*x_fine; ind = computeEstSlpMuTilde(x_fine,G_C,G_E,f2s); - dataAniso = [dataAniso type sqrt(sum(ind)) xe_fine]; + dataAniso = [dataAniso type(i) sqrt(sum(ind)) xe_fine]; end time(2) = toc; diff --git a/src/A_stepIso.m b/src/A_stepIso.m index b0f1233..0a7a22e 100644 --- a/src/A_stepIso.m +++ b/src/A_stepIso.m @@ -25,20 +25,20 @@ time = zeros(1,2); [coordinates_fine,elements_fine,neigh_fine,f2s,er]=refineQuad(G_C,G_E,G_N,2); time(1) = toc; + b = sqrt(sum(quadNorm(coordinates_fine,elements_fine,'w').^2,2)); + tic dataIso = size(G_E,1); - for i = type + for i = 1:length(type) A_fine = mex_build_AU(coordinates_fine,elements_fine,mu(i),type(i)); - b = sqrt(sum(quadNorm(coordinates_fine,elements_fine,'w').^2,2)); - x_fine = A_fine\b; xe_fine = x_fine'*A_fine*x_fine; ind = computeEstSlpMuTilde(x_fine,G_C,G_E,f2s); - dataIso = [dataIso type sqrt(sum(ind)) xe_fine]; + dataIso = [dataIso type(i) sqrt(sum(ind)) xe_fine]; end time(2) = toc; diff --git a/src/mex_build_AU.cpp b/src/mex_build_AU.cpp index 9519a0d..a57c197 100644 --- a/src/mex_build_AU.cpp +++ b/src/mex_build_AU.cpp @@ -43,6 +43,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { int i, j, k; //Schleifenindizes double tmp; //Zwischenspeicherung der Einzelnen Werte + int count; //Sicherheitsabfragen zu Datengroessen if ((nrhs != 4)) @@ -71,7 +72,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { double * E = mxGetPr(prhs[1]); double mu = *(mxGetPr(prhs[2])); - int type = *(mxGetPr(prhs[3])); + int type = (int) *(mxGetPr(prhs[3])); //Initialisieren der Hilfsvektoren @@ -119,6 +120,8 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { //LageInformationen int rx, rxa, rxb, ry, rya, ryb; + cout << " Progress: #"; + count = 0; //Ausrechnen for (j = 0; j < em; ++j) { x0[0] = C[(int) E[j] - 1]; @@ -169,7 +172,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { } } - for (k = 0; k < em; ++k) { + for (k = j; k < em; ++k) { y0[0] = C[(int) E[k] - 1]; y0[1] = C[cm + (int) E[k] - 1]; y0[2] = C[2 * cm + (int) E[k] - 1]; @@ -258,10 +261,18 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { } A[(k * em) + j] = 1. / (4 * M_PI) * tmp; + if(k!=j) + A[(j * em) + k] = 1. / (4 * M_PI) * tmp; + if(count++ > ((em*(em+1))/2)/10){ + count = 0; + cout << "#"; + cout.flush(); + } } } + cout << endl; //Rueckgabe (eventuell zurueck schreiben) //mxFree(x0); //mxFree(x1);