diff --git a/src/NeighborList.cpp b/src/NeighborList.cpp
index 552c563f80408d24c28cac9ffa3d55f4f5d1a295..08b50e956fa0b37dbcc3831f250dac403348a6dd 100644
--- a/src/NeighborList.cpp
+++ b/src/NeighborList.cpp
@@ -118,6 +118,30 @@ vector<unsigned> NeighborList::getNeighborsAtomicIndex(unsigned iatom)
  return neigh; 
 }
 
+vector<pair <unsigned, unsigned> > NeighborList::getClosePairs()
+{
+ vector<pair <unsigned, unsigned> > pairs;
+ for(unsigned int i=0;i<getNumberOfAtoms();++i){
+  for(unsigned int j=0;j<getNumberOfNeighbors(i);++j){
+   unsigned jatom=neighbors_[i][j];
+   pairs.push_back(pair <unsigned,unsigned> (i,indexes_[jatom]));
+  }
+ }
+ return pairs;
+}
+
+vector<pair <unsigned, unsigned> > NeighborList::getClosePairsAtomicIndex()
+{
+ vector<pair <unsigned, unsigned> > pairs;
+ for(unsigned int i=0;i<getNumberOfAtoms();++i){
+  unsigned iatom=list0_[i];
+  for(unsigned int j=0;j<getNumberOfNeighbors(i);++j){
+   pairs.push_back(pair <unsigned,unsigned> (iatom,neighbors_[i][j]));
+  }
+ }
+ return pairs;
+}
+
 unsigned NeighborList::getNumberOfNeighbors(unsigned index)
 {
  return neighbors_[index].size();
@@ -125,5 +149,5 @@ unsigned NeighborList::getNumberOfNeighbors(unsigned index)
 
 unsigned NeighborList::getNumberOfAtoms() const
 {
- return neighbors_.size();
+ return list0_.size();
 }
diff --git a/src/NeighborList.h b/src/NeighborList.h
index 3063f1073793bd281707ba6608bc4f17b850b755..022f08651440508e83a9f8dcb0599f9f73bbd312 100644
--- a/src/NeighborList.h
+++ b/src/NeighborList.h
@@ -22,6 +22,8 @@ public:
   void update();
   std::vector<unsigned> getNeighbors(unsigned index);
   std::vector<unsigned> getNeighborsAtomicIndex(unsigned iatom);
+  std::vector<std::pair <unsigned, unsigned> > getClosePairs();
+  std::vector<std::pair <unsigned, unsigned> > getClosePairsAtomicIndex();
   unsigned getStride() const;
   unsigned getNumberOfAtoms() const;
   unsigned getNumberOfNeighbors(unsigned index);