aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortaw27 <taw27@bf6ca9ba-c028-0410-8290-897cf20841d1>2008-04-20 13:29:56 +0000
committertaw27 <taw27@bf6ca9ba-c028-0410-8290-897cf20841d1>2008-04-20 13:29:56 +0000
commite894ad765718afe8145128281e7928d1188c727f (patch)
tree476b9b266a4a77e75d0df13cb623617193587dd2
parentb705768d46b39d2f7d38ec92db5086c0b8b3671d (diff)
Hmm. Try it in 2D...
git-svn-id: svn://cook.msm.cam.ac.uk:745/diff-tomo/dtr@273 bf6ca9ba-c028-0410-8290-897cf20841d1
-rw-r--r--src/refine.c21
1 files 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;