From e894ad765718afe8145128281e7928d1188c727f Mon Sep 17 00:00:00 2001 From: taw27 Date: Sun, 20 Apr 2008 13:29:56 +0000 Subject: Hmm. Try it in 2D... git-svn-id: svn://cook.msm.cam.ac.uk:745/diff-tomo/dtr@273 bf6ca9ba-c028-0410-8290-897cf20841d1 --- src/refine.c | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/src/refine.c b/src/refine.c index ac2ba38..45402d1 100644 --- a/src/refine.c +++ b/src/refine.c @@ -124,6 +124,8 @@ static double refine_mean_dev(Deviation *d, int nf, SimplexVertex *s, int i) { } +// return fabs(s[i].dax-10.0) + fabs(s[i].day-20.0) + fabs(s[i].dbx-30.0) + fabs(s[i].dby-40.0); + return fom/nf; } @@ -152,7 +154,7 @@ static void refine_simplex_transform(SimplexVertex *s, int v_worst, double fac) centre.dbx = 0.0; centre.dby = 0.0; centre.dbz = 0.0; centre.dcx = 0.0; centre.dcy = 0.0; centre.dcz = 0.0; nv = 0; - for ( i=0; i<10; i++ ) { + for ( i=0; i<5; i++ ) { if ( i != v_worst ) { centre.dax += s[i].dax; centre.dax += s[i].day; centre.dax += s[i].daz; centre.dax += s[i].dbx; centre.dax += s[i].dby; centre.dax += s[i].dbz; @@ -214,7 +216,7 @@ static double refine_iteration(SimplexVertex *s, Deviation *d, int nf, int debug v_second_worst = 0; fom_second_worst = 0.0; if ( debug ) printf("Vertex FoM/nm^-1 DoesNothing\n"); - for ( i=0; i<10; i++ ) { + for ( i=0; i<5; i++ ) { double fom; @@ -255,7 +257,7 @@ static double refine_iteration(SimplexVertex *s, Deviation *d, int nf, int debug int i; if ( debug ) printf("Not as good as the second worst vertex: contracting around the best vertex (%i)\n", v_best); - for ( i=0; i<10; i++ ) { + for ( i=0; i<5; i++ ) { if ( i != v_best ) refine_simplex_contract(s, i, v_best); } @@ -379,25 +381,20 @@ double refine_do_cell(ControlContext *ctx) { assert( f == nf ); /* Initialise the simplex */ - delta = 0.01e9; + delta = 10.0;//0.01e9; s[0].dax = 0.0; s[0].dbx = 0.0; s[0].dcx = 0.0; s[0].day = 0.0; s[0].dby = 0.0; s[0].dcy = 0.0; s[0].daz = 0.0; s[0].dbz = 0.0; s[0].dcz = 0.0; s[0].does_nothing = 0; memcpy(&s[1], &s[0], sizeof(SimplexVertex)); s[1].dax = delta; memcpy(&s[2], &s[0], sizeof(SimplexVertex)); s[2].day = delta; - memcpy(&s[3], &s[0], sizeof(SimplexVertex)); s[3].daz = delta; - memcpy(&s[4], &s[0], sizeof(SimplexVertex)); s[4].dbx = delta; - memcpy(&s[5], &s[0], sizeof(SimplexVertex)); s[5].dby = delta; + memcpy(&s[3], &s[0], sizeof(SimplexVertex)); s[3].dbx = delta; + memcpy(&s[4], &s[0], sizeof(SimplexVertex)); s[4].dby = delta; /* 2d vertices first */ + memcpy(&s[5], &s[0], sizeof(SimplexVertex)); s[5].daz = delta; memcpy(&s[6], &s[0], sizeof(SimplexVertex)); s[6].dbz = delta; memcpy(&s[7], &s[0], sizeof(SimplexVertex)); s[7].dcx = delta; memcpy(&s[8], &s[0], sizeof(SimplexVertex)); s[8].dcy = delta; memcpy(&s[9], &s[0], sizeof(SimplexVertex)); s[9].dcz = delta; - s[3].does_nothing = 1; - s[6].does_nothing = 1; - s[7].does_nothing = 1; - s[8].does_nothing = 1; - s[9].does_nothing = 1; /* Iterate */ maxiter = 500; -- cgit v1.2.3