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);