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:
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];