Actually disable GPU when compiling in double
[gromacs.git] / src / tools / nsfactor.h
blob3e6e5fa562cab728d3732e15b23f7403ea420a93
1 /*
3 * This source code is part of
5 * G R O M A C S
7 * GROningen MAchine for Chemical Simulations
9 * VERSION 3.2.0
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
32 * And Hey:
33 * Gromacs Runs On Most of All Computer Systems
36 #ifndef _nsfactor_h
37 #define _nsfactor_h
39 #include "index.h"
40 #include "types/simple.h"
41 #include "gmxcomplex.h"
42 #include "oenv.h"
44 #ifdef __cplusplus
45 extern "C" {
46 #endif
48 typedef struct gmx_nentron_atomic_structurefactors_t {
49 int nratoms;
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 */
59 } gmx_sans_t;
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,
86 rvec *x,
87 matrix box,
88 atom_id *index,
89 int isize,
90 double binwidth,
91 gmx_bool bMC,
92 real mcover,
93 unsigned int seed);
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);
98 #ifdef __cplusplus
100 #endif
101 #endif