3 * This source code is part of
7 * GROningen MAchine for Chemical Simulations
9 * VERSION 3.3.99_development_20071104
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-2006, 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 * Groningen Machine for Chemical Simulation
40 #include "gromacs/math/vec.h"
43 void calc_force(int natom
,rvec f
[],rvec fff
[])
46 int jindex
[] = { 0, 5, 10};
50 for(j
=0; (j
<2); j
++) {
52 for(i
=jindex
[j
]; (i
<jindex
[j
+1]); i
++) {
53 for(m
=0; (m
<DIM
); m
++) {
59 msf1
= iprod(fff
[0],fff
[0]);
60 msf2
= iprod(fff
[1],fff
[1]);
62 pr_rvecs(debug
,0,"force",f
,natom
);
64 fprintf(debug
,"FMOL: %10.3f %10.3f %10.3f %10.3f %10.3f %10.3f\n",
65 fff
[0][XX
],fff
[0][YY
],fff
[0][ZZ
],fff
[1][XX
],fff
[1][YY
],fff
[1][ZZ
]);
66 fprintf(debug
,"RMSF: %10.3e %10.3e\n",msf1
,msf2
);
71 void calc_f_dev(int natoms
,real charge
[],rvec x
[],rvec f
[],
72 t_idef
*idef
,real
*xiH
,real
*xiS
)
74 enum { wwwO
, wwwH1
, wwwH2
, wwwS
, wwwNR
};
75 int lj_index
[wwwNR
] = { 0, 4, 4, 8 };
76 real rmsf
,dFH
,dFS
,dFO
,dr_14
;
77 real q
[wwwNR
],c6
[wwwNR
],c12
[wwwNR
],c12ratio
;
81 for(i
=0; (i
<wwwNR
); i
++) {
83 c12
[i
] = idef
->iparams
[lj_index
[i
]].lj
.c12
;
84 c6
[i
] = idef
->iparams
[lj_index
[i
]].lj
.c6
;
87 calc_force(natoms
,f
,fff
);
92 for(i
=0; (i
<4); i
++) {
93 for(j
=4; (j
<8); j
++) {
95 rvec_sub(x
[i
],x
[j
],dx
);
97 dr_14
= pow(iprod(dx
,dx
),-7);
98 c12ratio
= -12*sqrt(c12
[aj
]/c12
[i
])*dr_14
*iprod(fff
[0],dx
);
117 fprintf(debug
,"FFF: dFS=%10.3e, dFH=%10.3e, dFO=%10.3e, rmsf=%10.3e\n",
123 *xiH
=rmsf
/(10*c12
[wwwH1
]*dFH
);
128 *xiS
=rmsf
/(10*c12
[wwwS
]*dFS
);