From d65369706284eb206331490b0687acac7bbe5f39 Mon Sep 17 00:00:00 2001 From: David van der Spoel Date: Tue, 31 Jan 2012 16:39:34 +0100 Subject: [PATCH] Changed order of parameters in top file For linear angles. Now the distance parameter comes first, and then the force constant, like in other bonded potentials. In addition, the angle defined by the same atom types but with the opposite order of atoms now gets a modified constant (1-a). Change-Id: I6db408be01b0cbb795edaa9943b72dbe149e3f97 --- src/kernel/convparm.c | 8 ++++---- src/kernel/toppush.c | 12 +++++++++++- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/kernel/convparm.c b/src/kernel/convparm.c index 1898c24945..bc161b5d8c 100644 --- a/src/kernel/convparm.c +++ b/src/kernel/convparm.c @@ -160,10 +160,10 @@ static void assign_param(t_functype ftype,t_iparams *newparam, newparam->qangle.c[i]=old[i+1]; break; case F_LINEAR_ANGLES: - newparam->linangle.klinA = old[0]; - newparam->linangle.aA = old[1]; - newparam->linangle.klinB = old[2]; - newparam->linangle.aB = old[3]; + newparam->linangle.aA = old[0]; + newparam->linangle.klinA = old[1]; + newparam->linangle.aB = old[2]; + newparam->linangle.klinB = old[3]; break; case F_ANGLES: case F_BONDS: diff --git a/src/kernel/toppush.c b/src/kernel/toppush.c index c5192aaee8..eabb245ce4 100644 --- a/src/kernel/toppush.c +++ b/src/kernel/toppush.c @@ -547,7 +547,17 @@ static void push_bondtype(t_params * bt, memcpy(bt->param[bt->nr].c, b->c,sizeof(b->c)); memcpy(bt->param[bt->nr].a, b->a,sizeof(b->a)); memcpy(bt->param[bt->nr+1].c,b->c,sizeof(b->c)); - + + /* The definitions of linear angles depend on the order of atoms, + * that means that for atoms i-j-k, with certain parameter a, the + * corresponding k-j-i angle will have parameter 1-a. + */ + if (ftype == F_LINEAR_ANGLES) + { + bt->param[bt->nr+1].c[0] = 1-bt->param[bt->nr+1].c[0]; + bt->param[bt->nr+1].c[2] = 1-bt->param[bt->nr+1].c[2]; + } + for (j=0; (j < nral); j++) { bt->param[bt->nr+1].a[j] = b->a[nral-1-j]; -- 2.22.0