From 189da15810deabd739d7c11c6e95fea55739fe60 Mon Sep 17 00:00:00 2001 From: Thomas White Date: Sat, 1 Aug 2020 15:13:49 +0200 Subject: Initial import from archive --- src/elements.c | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 src/elements.c (limited to 'src/elements.c') diff --git a/src/elements.c b/src/elements.c new file mode 100644 index 0000000..96b33e6 --- /dev/null +++ b/src/elements.c @@ -0,0 +1,86 @@ +/* + * elements.c + * + * Elemental Data + * + * (c) 2006-2007 Thomas White + * + * synth2D - Two-Dimensional Crystallographic Fourier Synthesis + * + */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include +#include + +#include "elements.h" + +Element elements[255]; +static unsigned int elements_initialised = 0; + +void elements_initialise() { + + int i, whoops; + FILE *fh; + + if ( elements_initialised ) return; + + i = 0; whoops = 0; + fh = fopen(DATADIR"/synth2d/elements", "r"); + do { + + char line[512]; + char buf[512]; + float a1, b1, a2, b2, a3, b3, a4, b4, c; + + fgets(line, 511, fh); + if ( ferror(fh) || feof(fh) ) { + whoops = 1; + break; + } + if ( strlen(line) > 1 ) { + + if ( line[strlen(line)-1] == '\n' ) { + line[strlen(line)-1] = '\0'; + } + + sscanf(line, "%s\t%i\t%9f\t%9f\t%9f\t%9f\t%9f\t%9f\t%9f\t%9f\t%9f", buf, &elements[i].z, &a1, &b1, &a2, &b2, &a3, &b3, &a4, &b4, &c); + elements[i].element_name = strdup(buf); + elements[i].sfac_a1 = a1; elements[i].sfac_b1 = b1; + elements[i].sfac_a2 = a2; elements[i].sfac_b2 = b2; + elements[i].sfac_a3 = a3; elements[i].sfac_b3 = b3; + elements[i].sfac_a4 = a4; elements[i].sfac_b4 = b4; + elements[i].sfac_c = c; + + i++; + + } else { + line[0] = '\0'; + } + + } while ( !whoops && !feof(fh) ); + + elements[i].element_name = "EOF"; + elements_initialised = 1; + +} + +unsigned int elements_lookup(const char *name) { + + size_t i; + + i = 0; + while ( strcmp(elements[i].element_name, "EOF") != 0 ) { + if ( strcmp(elements[i].element_name, name) == 0 ) return i; + i++; + } + + fprintf(stderr, "Failed to look up element\n"); + return i; + +} + -- cgit v1.2.3