From 6eff712573782a2736d767f301160ab26fb44769 Mon Sep 17 00:00:00 2001 From: sjplimp Date: Wed, 30 Oct 2013 14:10:10 +0000 Subject: [PATCH] git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@10886 f3b2605a-c512-4ea7-a41b-209d697bcdaa --- src/special.cpp | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/src/special.cpp b/src/special.cpp index 4ea1056bfe..d455ca5cb6 100644 --- a/src/special.cpp +++ b/src/special.cpp @@ -684,7 +684,10 @@ void Special::angle_trim() // and list of 1,3 and 2,4 atoms in each dihedral stored by atom int nbuf = 0; - for (i = 0; i < nlocal; i++) nbuf += 2*num_angle[i] + 2*2*num_dihedral[i]; + for (i = 0; i < nlocal; i++) { + if (num_angle && atom->nangles) nbuf += 2*num_angle[i]; + if (num_dihedral && atom->ndihedrals) nbuf + 2*2*num_dihedral[i]; + } int *buf; memory->create(buf,nbuf,"special:buf"); @@ -692,18 +695,21 @@ void Special::angle_trim() // and with list of 1,3 and 2,4 atoms in each dihedral int size = 0; - for (i = 0; i < nlocal; i++) - for (j = 0; j < num_angle[i]; j++) { - buf[size++] = angle_atom1[i][j]; - buf[size++] = angle_atom3[i][j]; - } - for (i = 0; i < nlocal; i++) - for (j = 0; j < num_dihedral[i]; j++) { - buf[size++] = dihedral_atom1[i][j]; - buf[size++] = dihedral_atom3[i][j]; - buf[size++] = dihedral_atom2[i][j]; - buf[size++] = dihedral_atom4[i][j]; - } + if (num_angle && atom->nangles) + for (i = 0; i < nlocal; i++) + for (j = 0; j < num_angle[i]; j++) { + buf[size++] = angle_atom1[i][j]; + buf[size++] = angle_atom3[i][j]; + } + + if (num_dihedral && atom->ndihedrals) + for (i = 0; i < nlocal; i++) + for (j = 0; j < num_dihedral[i]; j++) { + buf[size++] = dihedral_atom1[i][j]; + buf[size++] = dihedral_atom3[i][j]; + buf[size++] = dihedral_atom2[i][j]; + buf[size++] = dihedral_atom4[i][j]; + } // cycle buffer around ring of procs back to self // when receive buffer, scan list of 1,3 atoms looking for atoms I own