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
44 void calc_force(int natom,rvec f[],rvec fff[])
47 int jindex[] = { 0, 5, 10};
51 for(j=0; (j<2); j++) {
53 for(i=jindex[j]; (i<jindex[j+1]); i++) {
54 for(m=0; (m<DIM); m++) {
60 msf1 = iprod(fff[0],fff[0]);
61 msf2 = iprod(fff[1],fff[1]);
63 pr_rvecs(debug,0,"force",f,natom);
65 fprintf(debug,"FMOL: %10.3f %10.3f %10.3f %10.3f %10.3f %10.3f\n",
66 fff[0][XX],fff[0][YY],fff[0][ZZ],fff[1][XX],fff[1][YY],fff[1][ZZ]);
67 fprintf(debug,"RMSF: %10.3e %10.3e\n",msf1,msf2);
72 void calc_f_dev(int natoms,real charge[],rvec x[],rvec f[],
73 t_idef *idef,real *xiH,real *xiS)
75 enum { wwwO, wwwH1, wwwH2, wwwS, wwwNR };
76 int lj_index[wwwNR] = { 0, 4, 4, 8 };
77 real rmsf,dFH,dFS,dFO,dr_14;
78 real q[wwwNR],c6[wwwNR],c12[wwwNR],c12ratio;
82 for(i=0; (i<wwwNR); i++) {
84 c12[i] = idef->iparams[lj_index[i]].lj.c12;
85 c6[i] = idef->iparams[lj_index[i]].lj.c6;
88 calc_force(natoms,f,fff);
93 for(i=0; (i<4); i++) {
94 for(j=4; (j<8); j++) {
96 rvec_sub(x[i],x[j],dx);
98 dr_14 = pow(iprod(dx,dx),-7);
99 c12ratio = -12*sqrt(c12[aj]/c12[i])*dr_14*iprod(fff[0],dx);
118 fprintf(debug,"FFF: dFS=%10.3e, dFH=%10.3e, dFO=%10.3e, rmsf=%10.3e\n",
124 *xiH=rmsf/(10*c12[wwwH1]*dFH);
129 *xiS=rmsf/(10*c12[wwwS]*dFS);