From c94f33c3aaaaef55fe8879e3aae8ef29e91e7396 Mon Sep 17 00:00:00 2001 From: toshinagata1964 Date: Mon, 14 Oct 2013 11:15:15 +0000 Subject: [PATCH] Exclusion of non-bonding interaction in pi-metal systems were not working. Fixed. git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/molby/trunk@401 a2be9bc6-48de-4e38-9406-05402d4bc13c --- MolLib/MD/MDCore.c | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/MolLib/MD/MDCore.c b/MolLib/MD/MDCore.c index daf2731..88bff3a 100644 --- a/MolLib/MD/MDCore.c +++ b/MolLib/MD/MDCore.c @@ -279,11 +279,12 @@ s_register_missing_parameters(Int **missing, Int *nmissing, Int type, Int t1, In static int s_check_bonded(Molecule *mol, Int idx, Int *results) { - Int i, n, *ip; + Int i, j, n, *ip; const Int *cp; Atom *ap = ATOM_AT_INDEX(mol->atoms, idx); cp = AtomConnectData(&ap->connect); for (i = 0; i < ap->connect.count; i++, cp++) { + Atom *api; n = *cp; for (ip = results; *ip >= 0; ip++) { if (n == *ip) @@ -293,6 +294,35 @@ s_check_bonded(Molecule *mol, Int idx, Int *results) *ip++ = n; *ip = -1; } + api = ATOM_AT_INDEX(mol->atoms, n); + if (api->anchor != NULL) { + const Int *cpi = AtomConnectData(&api->anchor->connect); + for (j = 0; j < api->anchor->connect.count; j++, cpi++) { + n = *cpi; + for (ip = results; *ip >= 0; ip++) { + if (n == *ip) + break; + } + if (*ip < 0) { + *ip++ = n; + *ip = -1; + } + } + } + } + if (ap->anchor != NULL) { + cp = AtomConnectData(&ap->anchor->connect); + for (i = 0; i < ap->anchor->connect.count; i++, cp++) { + n = *cp; + for (ip = results; *ip >= 0; ip++) { + if (n == *ip) + break; + } + if (*ip < 0) { + *ip++ = n; + *ip = -1; + } + } } for (ip = results; *ip >= 0; ip++) ; -- 2.11.0