diff options
Diffstat (limited to 'src/pattern_sim.c')
-rw-r--r-- | src/pattern_sim.c | 36 |
1 files changed, 27 insertions, 9 deletions
diff --git a/src/pattern_sim.c b/src/pattern_sim.c index 347dd618..a3fea8e3 100644 --- a/src/pattern_sim.c +++ b/src/pattern_sim.c @@ -633,11 +633,6 @@ int main(int argc, char *argv[]) free(template_file); } - if ( sym_str == NULL ) sym_str = strdup("1"); - pointgroup_warning(sym_str); - sym = get_pointgroup(sym_str); - /* sym_str is used below */ - if ( grad_str == NULL ) { STATUS("You didn't specify a gradient calculation method, so" " I'm using the 'mosaic' method, which is fastest.\n"); @@ -720,16 +715,35 @@ int main(int argc, char *argv[]) phases = NULL; flags = NULL; + if ( sym_str == NULL ) sym_str = strdup("1"); + pointgroup_warning(sym_str); + sym = get_pointgroup(sym_str); + } else { RefList *reflections; + char *sym_str_fromfile = NULL; - reflections = read_reflections(intfile); + reflections = read_reflections_2(intfile, &sym_str_fromfile); if ( reflections == NULL ) { ERROR("Problem reading input file %s\n", intfile); return 1; } + /* If we don't have a point group yet, and if the file provides + * one, use the one from the file */ + if ( (sym_str == NULL) && (sym_str_fromfile != NULL) ) { + sym_str = sym_str_fromfile; + STATUS("Using symmetry from reflection file: %s\n", + sym_str); + } + + /* If we still don't have a point group, use "1" */ + if ( sym_str == NULL ) sym_str = strdup("1"); + + pointgroup_warning(sym_str); + sym = get_pointgroup(sym_str); + if ( grad == GRADIENT_PHASED ) { phases = phases_from_list(reflections); } else { @@ -785,9 +799,12 @@ int main(int argc, char *argv[]) FILE *fh; unsigned long int seed; fh = fopen("/dev/urandom", "r"); - fread(&seed, sizeof(seed), 1, fh); + if ( fread(&seed, sizeof(seed), 1, fh) == 1 ) { + gsl_rng_set(rng, seed); + } else { + ERROR("Failed to seed random number generator\n"); + } fclose(fh); - gsl_rng_set(rng, seed); } powder.det = image.det; @@ -848,7 +865,8 @@ int main(int argc, char *argv[]) if ( intfile == NULL ) { STATUS(" Full intensities: all equal\n"); } else { - STATUS(" Full intensities: from %s\n", intfile); + STATUS(" Full intensities: from %s (symmetry %s)\n", + intfile, sym_str); } do { |