diff --git a/src/adjmat/AdjacencyMatrixBase.cpp b/src/adjmat/AdjacencyMatrixBase.cpp index 98eb5ed620..e88e322a50 100644 --- a/src/adjmat/AdjacencyMatrixBase.cpp +++ b/src/adjmat/AdjacencyMatrixBase.cpp @@ -267,7 +267,15 @@ void AdjacencyMatrixBase::setupForTask( const unsigned& current, std::vectorforcesWereAdded() ) { + natoms = 0; indices[natoms] = current; natoms++; + unsigned nelements = myval->getRowLength(current), startr = current*myval->getNumberOfColumns(); + for(unsigned j=0; jgetRowIndex( current, j ); + if( ablocks[jind]!=indices[0] && fabs( myval->getForce( startr + j ) )>epsilon ) { indices[natoms] = ablocks[jind]; natoms++; } + } + } else natoms=retrieveNeighbours( current, indices ); unsigned ntwo_atoms=natoms; myvals.setSplitIndex( ntwo_atoms ); // Now retrieve everything for the third atoms diff --git a/src/valtools/VStack.cpp b/src/valtools/VStack.cpp index 1fb7e10388..b2fec71c4d 100644 --- a/src/valtools/VStack.cpp +++ b/src/valtools/VStack.cpp @@ -140,7 +140,7 @@ void VStack::performTask( const std::string& controller, const unsigned& index1, } void VStack::gatherForcesOnStoredValue( const Value* myval, const unsigned& itask, const MultiValue& myvals, std::vector& forces ) const { - unsigned matind = myval->getPositionInMatrixStash(); const std::vector& mat_indices( myvals.getMatrixRowDerivativeIndices( matind ) ); + unsigned matind = myval->getPositionInMatrixStash(); for(unsigned i=0; i