4 * This source code is part of
8 * GROningen MAchine for Chemical Simulations
12 * Copyright (c) 1991-2001
13 * BIOSON Research Institute, Dept. of Biophysical Chemistry
14 * University of Groningen, The Netherlands
16 * This program is free software; you can redistribute it and/or
17 * modify it under the terms of the GNU General Public License
18 * as published by the Free Software Foundation; either version 2
19 * of the License, or (at your option) any later version.
21 * If you want to redistribute modifications, please consider that
22 * scientific software is very special. Version control is crucial -
23 * bugs must be traceable. We will be happy to consider code for
24 * inclusion in the official distribution, but derived work must not
25 * be called official GROMACS. Details are found in the README & COPYING
26 * files - if they are missing, get the official version at www.gromacs.org.
28 * To help us fund GROMACS development, we humbly ask that you cite
29 * the papers on the package - you can find them in the top README file.
31 * Do check out http://www.gromacs.org , or mail us at gromacs@gromacs.org .
34 * GROup of MAchos and Cynical Suckers
36 static char *SRCID_calcfdev_c = "$Id$";
42 void calc_force(int natom,rvec f[],rvec fff[])
45 int jindex[] = { 0, 5, 10};
49 for(j=0; (j<2); j++) {
51 for(i=jindex[j]; (i<jindex[j+1]); i++) {
52 for(m=0; (m<DIM); m++) {
58 msf1 = iprod(fff[0],fff[0]);
59 msf2 = iprod(fff[1],fff[1]);
61 pr_rvecs(debug,0,"force",f,natom);
63 fprintf(debug,"FMOL: %10.3f %10.3f %10.3f %10.3f %10.3f %10.3f\n",
64 fff[0][XX],fff[0][YY],fff[0][ZZ],fff[1][XX],fff[1][YY],fff[1][ZZ]);
65 fprintf(debug,"RMSF: %10.3e %10.3e\n",msf1,msf2);
70 void calc_f_dev(int natoms,real charge[],rvec x[],rvec f[],
71 t_idef *idef,real *xiH,real *xiS)
73 enum { wwwO, wwwH1, wwwH2, wwwS, wwwNR };
74 int lj_index[wwwNR] = { 0, 4, 4, 8 };
75 real rmsf,dFH,dFS,dFO,dr_14;
76 real q[wwwNR],c6[wwwNR],c12[wwwNR],c12ratio;
80 for(i=0; (i<wwwNR); i++) {
82 c12[i] = idef->iparams[lj_index[i]].lj.c12;
83 c6[i] = idef->iparams[lj_index[i]].lj.c6;
86 calc_force(natoms,f,fff);
91 for(i=0; (i<4); i++) {
92 for(j=4; (j<8); j++) {
94 rvec_sub(x[i],x[j],dx);
96 dr_14 = pow(iprod(dx,dx),-7);
97 c12ratio = -12*sqrt(c12[aj]/c12[i])*dr_14*iprod(fff[0],dx);
116 fprintf(debug,"FFF: dFS=%10.3e, dFH=%10.3e, dFO=%10.3e, rmsf=%10.3e\n",
122 *xiH=rmsf/(10*c12[wwwH1]*dFH);
127 *xiS=rmsf/(10*c12[wwwS]*dFS);