From bc140f9935db85cbd199b20f7d4a8ac215498646 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Picca=20Fr=C3=A9d=C3=A9ric-Emmanuel?= Date: Fri, 21 Apr 2017 14:19:36 +0200 Subject: [PATCH] [hkl] It is important to move the diffractometer during a trajectory calculation. --- Documentation/figures/Makefile.am | 13 +++++--- Documentation/figures/sirius-m.gnuplot | 10 ++++++ .../figures/{sirius.gnuplot => sirius-s.gnuplot} | 6 ++-- Documentation/hkl.org.in | 5 ++- tests/hkl-pseudoaxis-soleil-sirius-kappa-t.c | 37 ++++++++++++++++++---- 5 files changed, 56 insertions(+), 15 deletions(-) create mode 100644 Documentation/figures/sirius-m.gnuplot rename Documentation/figures/{sirius.gnuplot => sirius-s.gnuplot} (64%) diff --git a/Documentation/figures/Makefile.am b/Documentation/figures/Makefile.am index bc6ba19d..d649a765 100644 --- a/Documentation/figures/Makefile.am +++ b/Documentation/figures/Makefile.am @@ -4,8 +4,11 @@ .asy.pdf: -@ASY@ -config "" -render=0 -f pdf -noprc -o $@ $< -sirius.svg: sirius.gnuplot s1-11.dat s2-11.dat s1-101.dat s2-101.dat - -@GNUPLOT@ sirius.gnuplot +sirius-s.svg: sirius-s.gnuplot s1-11.dat s2-11.dat s1-101.dat s2-101.dat + -@GNUPLOT@ sirius-s.gnuplot + +sirius-m.svg: sirius-m.gnuplot m1-11.dat m2-11.dat m1-101.dat m2-101.dat + -@GNUPLOT@ sirius-m.gnuplot dist_noinst_DATA = \ 3S+1D.png \ @@ -27,7 +30,8 @@ dist_noinst_DATA = \ e2k_3.png \ e2k_4.png \ qper_qpar.png \ - sirius.svg + sirius-s.svg \ + sirius-m.svg MAINTAINERCLEANFILES = $(dist_noinst_DATA) @@ -53,4 +57,5 @@ EXTRA_DIST = \ e2k_3.asy \ e2k_4.asy \ qper_qpar.asy \ - sirius.gnuplot + sirius-s.gnuplot \ + sirius-m.gnuplot diff --git a/Documentation/figures/sirius-m.gnuplot b/Documentation/figures/sirius-m.gnuplot new file mode 100644 index 00000000..4d22411d --- /dev/null +++ b/Documentation/figures/sirius-m.gnuplot @@ -0,0 +1,10 @@ +set terminal svg +set output 'sirius-m.svg' +set title '[0,0,1] -> [0,0,6] s1/s2 (starting point) 10/100 (steps)' +set xlabel 'l' +set ylabel 'kphi' +plot \ + 'm1-11.dat' u 3:7 w lp t 'm1-10',\ + 'm2-11.dat' u 3:7 w lp t 'm2-10',\ + 'm1-101.dat' u 3:7 w lp t 'm1-100',\ + 'm2-101.dat' u 3:7 w lp t 'm2-100' diff --git a/Documentation/figures/sirius.gnuplot b/Documentation/figures/sirius-s.gnuplot similarity index 64% rename from Documentation/figures/sirius.gnuplot rename to Documentation/figures/sirius-s.gnuplot index 4e9d75ef..66cdf8ed 100644 --- a/Documentation/figures/sirius.gnuplot +++ b/Documentation/figures/sirius-s.gnuplot @@ -1,8 +1,8 @@ set terminal svg -set output 'sirius.svg' -set title 'kphi s1/s2 (starting point) 10/100 (steps)' +set output 'sirius-s.svg' +set title '[0,0,1] -> [0,0,6] s1/s2 (starting point) 10/100 (steps)' set xlabel 'l' -set ylabel 'position' +set ylabel 'kphi' plot \ 's1-11.dat' u 3:7 w lp t 's1-10',\ 's2-11.dat' u 3:7 w lp t 's2-10',\ diff --git a/Documentation/hkl.org.in b/Documentation/hkl.org.in index 01b5cef8..368a032f 100644 --- a/Documentation/hkl.org.in +++ b/Documentation/hkl.org.in @@ -1010,7 +1010,10 @@ git clone git://repo.or.cz/hkl.git another solution which is at around 180° of the other solutions. #+CAPTION: plot the [0,0,1] -> [0,0,6] trajectory from two different starting point and different step size - [[./figures/sirius.svg]] + [[./figures/sirius-s.svg]] + + #+CAPTION: plot the [0,0,1] -> [0,0,6] trajectory from two different starting point and different step size + [[./figures/sirius-m.svg]] *** TODO [0/2] PetraIII **** TODO computation problem diff --git a/tests/hkl-pseudoaxis-soleil-sirius-kappa-t.c b/tests/hkl-pseudoaxis-soleil-sirius-kappa-t.c index ccb16d69..dbb1b598 100644 --- a/tests/hkl-pseudoaxis-soleil-sirius-kappa-t.c +++ b/tests/hkl-pseudoaxis-soleil-sirius-kappa-t.c @@ -170,7 +170,7 @@ static uint Trajectory_len(struct Trajectory tconfig) return n; } -static HklGeometryList *Trajectory_solve(struct Trajectory tconfig, struct Geometry gconfig, struct Sample sconfig) +static HklGeometryList *Trajectory_solve(struct Trajectory tconfig, struct Geometry gconfig, struct Sample sconfig, uint move) { const struct Engine *econfig; HklGeometryList *solutions = hkl_geometry_list_new(); @@ -192,7 +192,8 @@ static HklGeometryList *Trajectory_solve(struct Trajectory tconfig, struct Geome HklGeometryList *geometries = Engine_solve(engines, *econfig); hkl_trajectory_stats_add(stats, geometries); solution = hkl_geometry_list_items_first_get(geometries); - hkl_engine_list_select_solution(engines, solution); + if(move) + hkl_engine_list_select_solution(engines, solution); hkl_geometry_list_add(solutions, hkl_geometry_list_item_geometry_get(solution)); @@ -276,24 +277,46 @@ static void stability(void) SoleilSiriusKappa(1.458637, -0.5193202, 64.7853160, 133.5621380, 124.9690000, -0.0223369, 30.0000299); + /* move between each step */ static struct Trajectory tconfig1 = TrajectoryHklFromTo(0, 0, 1, 0, 0, 6, 11); - solutions = Trajectory_solve(tconfig1, gconfig, gaas); + solutions = Trajectory_solve(tconfig1, gconfig, gaas, TRUE); + GeometryList_save_as_dat("../Documentation/figures/m1-11.dat", tconfig1, solutions); + res &= DIAG(NULL != solutions); + hkl_geometry_list_free(solutions); + + solutions = Trajectory_solve(tconfig1, gconfig, gaas, TRUE); + GeometryList_save_as_dat("../Documentation/figures/m2-11.dat", tconfig1, solutions); + res &= DIAG(NULL != solutions); + hkl_geometry_list_free(solutions); + + static struct Trajectory tconfig2 = TrajectoryHklFromTo(0, 0, 1, 0, 0, 6, 101); + solutions = Trajectory_solve(tconfig2, gconfig, gaas, TRUE); + GeometryList_save_as_dat("../Documentation/figures/m1-101.dat", tconfig2, solutions); + res &= DIAG(NULL != solutions); + hkl_geometry_list_free(solutions); + + solutions = Trajectory_solve(tconfig2, gconfig2, gaas, TRUE); + GeometryList_save_as_dat("../Documentation/figures/m2-101.dat", tconfig2, solutions); + res &= DIAG(NULL != solutions); + hkl_geometry_list_free(solutions); + + /* do not move between each steps */ + solutions = Trajectory_solve(tconfig1, gconfig, gaas, FALSE); GeometryList_save_as_dat("../Documentation/figures/s1-11.dat", tconfig1, solutions); res &= DIAG(NULL != solutions); hkl_geometry_list_free(solutions); - solutions = Trajectory_solve(tconfig1, gconfig, gaas); + solutions = Trajectory_solve(tconfig1, gconfig, gaas, FALSE); GeometryList_save_as_dat("../Documentation/figures/s2-11.dat", tconfig1, solutions); res &= DIAG(NULL != solutions); hkl_geometry_list_free(solutions); - static struct Trajectory tconfig2 = TrajectoryHklFromTo(0, 0, 1, 0, 0, 6, 101); - solutions = Trajectory_solve(tconfig2, gconfig, gaas); + solutions = Trajectory_solve(tconfig2, gconfig, gaas, FALSE); GeometryList_save_as_dat("../Documentation/figures/s1-101.dat", tconfig2, solutions); res &= DIAG(NULL != solutions); hkl_geometry_list_free(solutions); - solutions = Trajectory_solve(tconfig2, gconfig2, gaas); + solutions = Trajectory_solve(tconfig2, gconfig2, gaas, FALSE); GeometryList_save_as_dat("../Documentation/figures/s2-101.dat", tconfig2, solutions); res &= DIAG(NULL != solutions); hkl_geometry_list_free(solutions); -- 2.11.4.GIT