3 * This source code is part of
7 * GROningen MAchine for Chemical Simulations
10 * Written by David van der Spoel, Erik Lindahl, Berk Hess, and others.
11 * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
12 * Copyright (c) 2001-2004, The GROMACS development team,
13 * check out http://www.gromacs.org for more information.
15 * This program is free software; you can redistribute it and/or
16 * modify it under the terms of the GNU General Public License
17 * as published by the Free Software Foundation; either version 2
18 * of the License, or (at your option) any later version.
20 * If you want to redistribute modifications, please consider that
21 * scientific software is very special. Version control is crucial -
22 * bugs must be traceable. We will be happy to consider code for
23 * inclusion in the official distribution, but derived work must not
24 * be called official GROMACS. Details are found in the README & COPYING
25 * files - if they are missing, get the official version at www.gromacs.org.
27 * To help us fund GROMACS development, we humbly ask that you cite
28 * the papers on the package - you can find them in the top README file.
30 * For more info, check our website at http://www.gromacs.org
33 * Gromacs Runs On Most of All Computer Systems
40 #include "types/simple.h"
41 #include "gmxcomplex.h"
48 typedef struct gmx_nentron_atomic_structurefactors_t
{
50 int *p
; /* proton number */
51 int *n
; /* neuton number */
52 double *slength
; /* scattering length in fm */
53 char **atomnm
; /* atom symbol */
54 } gmx_nentron_atomic_structurefactors_t
;
56 typedef struct gmx_sans_t
{
57 t_topology
*top
; /* topology */
58 double *slength
; /* scattering length for this topology */
61 typedef struct gmx_radial_distribution_histogram_t
{
62 int grn
; /* number of bins */
63 double binwidth
; /* bin size */
64 double *r
; /* Distances */
65 double *gr
; /* Probability */
66 } gmx_radial_distribution_histogram_t
;
68 typedef struct gmx_static_structurefator_t
{
69 int qn
; /* number of items */
70 double *s
; /* scattering */
71 double *q
; /* q vectors */
72 double qstep
; /* q increment */
73 } gmx_static_structurefator_t
;
75 void check_binwidth(real binwidth
);
77 void check_mcover(real mcover
);
79 void normalize_probability(int n
, double *a
);
81 gmx_nentron_atomic_structurefactors_t
*gmx_neutronstructurefactors_init(const char *datfn
);
83 gmx_sans_t
*gmx_sans_init(t_topology
*top
, gmx_nentron_atomic_structurefactors_t
*gnsf
);
85 gmx_radial_distribution_histogram_t
*calc_radial_distribution_histogram (gmx_sans_t
*gsans
,
95 gmx_static_structurefator_t
*convert_histogram_to_intensity_curve (gmx_radial_distribution_histogram_t
*pr
, double start_q
, double end_q
, double q_step
);