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/model.h | 79 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 src/model.h (limited to 'src/model.h') diff --git a/src/model.h b/src/model.h new file mode 100644 index 0000000..9c78683 --- /dev/null +++ b/src/model.h @@ -0,0 +1,79 @@ +/* + * model.h + * + * Atomic Model Structures + * + * (c) 2006-2007 Thomas White + * + * synth2d - Two-Dimensional Crystallographic Fourier Synthesis + * + */ + +#ifndef MODEL_H +#define MODEL_H + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include "symmetry.h" +#include "reflist.h" +#include "model-editor.h" +#include "refine.h" + +#define MAX_ATOMS 255 + +typedef struct { + + unsigned int ref; /* Atom type reference */ + double x; + double y; + double z; + double B; /* Debye-Waller thermal parameter */ + double occ; /* Site occupancy */ + + unsigned int refine; /* Refine this atom? */ + unsigned int active; /* Include this atom in calculations? */ + +} ModelAtom; + +typedef struct struct_atomicmodel { + + Symmetry sym; + double thickness; + int point_atoms; + + ModelEditor *editor; /* Editor for this model, if open */ + RefinementWindow *refine_window; /* Refinement window for this model, if open */ + int lock_count; + + unsigned int n_atoms; + ModelAtom atoms[MAX_ATOMS]; + +} AtomicModel; + +extern AtomicModel *model_new(void); +extern AtomicModel *model_copy(const AtomicModel *a); +extern void model_move(AtomicModel *a, AtomicModel *b); +extern void model_free(AtomicModel *model); + +extern AtomicModel *model_load(const char *filename); +extern void model_load_as_current(const char *filename); +extern void model_save(const char *filename, AtomicModel *model); + +extern ReflectionList *model_calculate_f(ReflectionList *template, AtomicModel *given_model, signed int layer); +extern void model_calculate_difference_coefficients(ReflectionList *reflections); +extern void model_calculate_refinement_coefficients(ReflectionList *reflections); +extern double model_mod_f(AtomicModel *model, signed int h, signed int k, signed int l); + +extern AtomicModel *model_get_current(); +extern void model_open_editor(void); +extern void model_notify_update(AtomicModel *model); +extern void model_notify_update_editor(AtomicModel *model); +extern void model_default(void); +extern void model_lock(AtomicModel *model); +extern void model_unlock(AtomicModel *model); +extern int model_current_is_blank(void); + +#endif /* MODEL_H */ + -- cgit v1.2.3