diff options
-rw-r--r-- | src/check_hkl.c | 17 | ||||
-rw-r--r-- | src/cubeit.c | 10 | ||||
-rw-r--r-- | src/partial_sim.c | 17 | ||||
-rw-r--r-- | src/partialator.c | 9 | ||||
-rw-r--r-- | tests/gpu_sim_check.c | 8 |
5 files changed, 39 insertions, 22 deletions
diff --git a/src/check_hkl.c b/src/check_hkl.c index db807b33..8409563f 100644 --- a/src/check_hkl.c +++ b/src/check_hkl.c @@ -47,7 +47,7 @@ static void show_help(const char *s) } -static void plot_shells(RefList *list, UnitCell *cell, const char *sym, +static void plot_shells(RefList *list, UnitCell *cell, const SymOpList *sym, double rmin_fix, double rmax_fix) { double num[NBINS]; @@ -180,7 +180,7 @@ static void plot_shells(RefList *list, UnitCell *cell, const char *sym, } if ( bin == -1 ) continue; - get_asymm(h, k, l, &hs, &ks, &ls, sym); + get_asymm(sym, h, k, l, &hs, &ks, &ls); if ( lookup_count(counted, hs, ks, ls) ) continue; set_count(counted, hs, ks, ls, 1); @@ -305,7 +305,8 @@ int main(int argc, char *argv[]) int c; UnitCell *cell; char *file = NULL; - char *sym = NULL; + char *sym_str = NULL; + SymOpList *sym; RefList *raw_list; RefList *list; Reflection *refl; @@ -334,7 +335,7 @@ int main(int argc, char *argv[]) return 0; case 'y' : - sym = strdup(optarg); + sym_str = strdup(optarg); break; case 'p' : @@ -369,9 +370,11 @@ int main(int argc, char *argv[]) return 1; } - if ( sym == NULL ) { - sym = strdup("1"); + if ( sym_str == NULL ) { + sym_str = strdup("1"); } + sym = get_pointgroup(sym_str); + free(sym_str); file = strdup(argv[optind++]); @@ -390,7 +393,7 @@ int main(int argc, char *argv[]) /* Check that the intensities have the correct symmetry */ if ( check_list_symmetry(raw_list, sym) ) { ERROR("The input reflection list does not appear to" - " have symmetry %s\n", sym); + " have symmetry %s\n", symmetry_name(sym)); return 1; } diff --git a/src/cubeit.c b/src/cubeit.c index 75e4e001..212be426 100644 --- a/src/cubeit.c +++ b/src/cubeit.c @@ -60,7 +60,7 @@ struct static_sum_args signed int ht; signed int kt; signed int lt; - char *sym; + SymOpList *sym; }; @@ -282,7 +282,7 @@ static void sum_image(void *pg, int cookie) * averaging, the pattern must be transformed by the * appropriate symmetry operator(s) to bring it into * alignment. */ - //get_asymm(h, k, l, &ha, &ka, &la, pargs->sym); + //get_asymm(pargs->sym, h, k, l, &ha, &ka, &la); //if ( (ha!=pargs->ht) || (ka!=pargs->kt) || (la!=pargs->lt) ) { // continue; //} @@ -464,7 +464,7 @@ int main(int argc, char *argv[]) unsigned int angles[180]; int config_angles = 0; signed int ht, kt, lt; - char *sym = NULL; + SymOpList *sym; struct queue_args qargs; pthread_mutex_t vals_mutex = PTHREAD_MUTEX_INITIALIZER; pthread_mutex_t angles_mutex = PTHREAD_MUTEX_INITIALIZER; @@ -556,7 +556,7 @@ int main(int argc, char *argv[]) } free(geomfile); - sym = strdup("6/mmm"); /* FIXME: Should be on command line */ + sym = get_pointgroup("6/mmm"); /* FIXME: Should be on command line */ /* Initialise histogram */ for ( i=0; i<180; i++ ) angles[i] = 0; @@ -570,7 +570,7 @@ int main(int argc, char *argv[]) } /* FIXME: Get indices on command line (or elsewhere) */ - get_asymm(3, 4, 5, &ht, &kt, <, sym); + get_asymm(sym, 3, 4, 5, &ht, &kt, <); as = 0.0; bs = 0.0; cs = 0.0; als = 0.0; bes = 0.0; gas = 0.0; diff --git a/src/partial_sim.c b/src/partial_sim.c index 6dafc4ba..04838552 100644 --- a/src/partial_sim.c +++ b/src/partial_sim.c @@ -63,7 +63,7 @@ static void mess_up_cell(UnitCell *cell) /* For each reflection in "partial", fill in what the intensity would be * according to "full" */ static void calculate_partials(RefList *partial, double osf, - RefList *full, const char *sym, + RefList *full, const SymOpList *sym, int random_intensities) { Reflection *refl; @@ -78,7 +78,7 @@ static void calculate_partials(RefList *partial, double osf, double p, Ip, If; get_indices(refl, &h, &k, &l); - get_asymm(h, k, l, &h, &k, &l, sym); + get_asymm(sym, h, k, l, &h, &k, &l); p = get_partiality(refl); rfull = find_refl(full, h, k, l); @@ -143,7 +143,8 @@ int main(int argc, char *argv[]) struct detector *det = NULL; struct beam_params *beam = NULL; RefList *full = NULL; - char *sym = NULL; + char *sym_str = NULL; + SymOpList *sym; UnitCell *cell = NULL; struct quaternion orientation; struct image image; @@ -194,7 +195,7 @@ int main(int argc, char *argv[]) break; case 'y' : - sym = strdup(optarg); + sym_str = strdup(optarg); break; case 'n' : @@ -246,6 +247,10 @@ int main(int argc, char *argv[]) } free(geomfile); + if ( sym_str == NULL ) sym_str = strdup("1"); + sym = get_pointgroup(sym_str); + free(sym_str); + /* Load (full) reflections */ if ( input_file != NULL ) { @@ -258,7 +263,7 @@ int main(int argc, char *argv[]) free(input_file); if ( check_list_symmetry(full, sym) ) { ERROR("The input reflection list does not appear to" - " have symmetry %s\n", sym); + " have symmetry %s\n", symmetry_name(sym)); return 1; } @@ -339,7 +344,7 @@ int main(int argc, char *argv[]) cell_free(cell); free_detector_geometry(det); free(beam); - free(sym); + free_symoplist(sym); reflist_free(full); free(image.filename); diff --git a/src/partialator.c b/src/partialator.c index 6c9748b6..f8db8432 100644 --- a/src/partialator.c +++ b/src/partialator.c @@ -258,7 +258,8 @@ int main(int argc, char *argv[]) char *infile = NULL; char *outfile = NULL; char *geomfile = NULL; - char *sym = NULL; + char *sym_str = NULL; + SymOpList *sym; FILE *fh; int nthreads = 1; struct detector *det; @@ -322,7 +323,7 @@ int main(int argc, char *argv[]) break; case 'y' : - sym = strdup(optarg); + sym_str = strdup(optarg); break; case 'o' : @@ -374,7 +375,9 @@ int main(int argc, char *argv[]) outfile = strdup("partialator.hkl"); } - if ( sym == NULL ) sym = strdup("1"); + if ( sym_str == NULL ) sym_str = strdup("1"); + sym = get_pointgroup(sym_str); + free(sym_str); /* Get detector geometry */ det = get_detector_geometry(geomfile); diff --git a/tests/gpu_sim_check.c b/tests/gpu_sim_check.c index fa8e104d..b006ea8a 100644 --- a/tests/gpu_sim_check.c +++ b/tests/gpu_sim_check.c @@ -23,6 +23,7 @@ #include "../src/detector.h" #include "../src/beam-parameters.h" #include "../src/utils.h" +#include "../src/symmetry.h" #ifdef HAVE_CLOCK_GETTIME @@ -65,6 +66,7 @@ int main(int argc, char *argv[]) const double sep = 20.0; double start, end; double gpu_time, cpu_time; + SymOpList *sym; gctx = setup_gpu(1, NULL, NULL, NULL, 0); if ( gctx == NULL ) { @@ -141,12 +143,16 @@ int main(int argc, char *argv[]) end = get_hires_seconds(); gpu_time = end - start; + sym = get_pointgroup("1"); + start = get_hires_seconds(); get_diffraction(&cpu_image, 8, 8, 8, NULL, NULL, NULL, cell, - GRADIENT_MOSAIC, "1"); + GRADIENT_MOSAIC, sym); end = get_hires_seconds(); cpu_time = end - start; + free_symoplist(sym); + STATUS("The GPU version was %5.2f times faster.\n", cpu_time/gpu_time); gpu_min = +INFINITY; gpu_max = -INFINITY; gpu_tot = 0.0; |