ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE/libmdtools/Exclude.cpp
Revision: 1217
Committed: Tue Jun 1 21:45:22 2004 UTC (20 years, 1 month ago) by gezelter
File size: 1723 byte(s)
Log Message:
Bug fix (fixes of skipList and neighbor list under MPI)

File Contents

# User Rev Content
1 mmeineke 431 #include <iostream>
2 gezelter 829 #include <stdlib.h>
3 mmeineke 408
4     #include "Exclude.hpp"
5    
6 gezelter 1097 Exclude* Exclude::_instance = 0;
7 mmeineke 408
8 gezelter 1097 Exclude* Exclude::Instance() {
9     if (_instance == 0) {
10     _instance = new Exclude;
11     }
12     return _instance;
13 mmeineke 408 }
14    
15 gezelter 1097 Exclude::Exclude(){
16     exPairs = NULL;
17     newFortranArrayNeeded = 1;
18 mmeineke 408 }
19    
20 gezelter 1097 Exclude::~Exclude() {
21     if (exPairs != NULL) {
22     delete[] exPairs;
23     }
24     delete _instance;
25 mmeineke 408 }
26 mmeineke 435
27 gezelter 1097 int* Exclude::getFortranArray(){
28    
29     set<pair<int, int> >::iterator i;
30     int j;
31 mmeineke 435
32 gezelter 1097 if (newFortranArrayNeeded != 0) {
33     delete[] exPairs;
34     exPairs = new int[2*getSize()];
35     j = 0;
36     for(i = excludeSet.begin(); i != excludeSet.end(); ++i) {
37     exPairs[j] = (*i).first;
38     j++;
39     exPairs[j] = (*i).second;
40     j++;
41     }
42     newFortranArrayNeeded = 0;
43     }
44    
45 gezelter 1217 return exPairs;
46 gezelter 410 }
47 mmeineke 408
48 gezelter 1097
49     void Exclude::addPair(int i, int j) {
50 gezelter 410
51 gezelter 1097 if (!hasPair(i, j)) {
52    
53     if (i != j) {
54    
55     if (i < j)
56     excludeSet.insert(make_pair(i, j));
57     else
58     excludeSet.insert(make_pair(j, i));
59     }
60 gezelter 410
61 gezelter 1097 newFortranArrayNeeded = 1;
62 gezelter 410 }
63    
64 gezelter 1097 }
65 gezelter 410
66    
67 gezelter 1097 void Exclude::printMe( void ){
68 gezelter 410
69 gezelter 1097 set<pair<int, int> >::iterator i;
70     int index;
71    
72     index = 0;
73     for(i = excludeSet.begin(); i != excludeSet.end(); ++i) {
74 gezelter 410
75 gezelter 1097 std::cerr << "exclude[" << index << "] i, j: " << (*i).first << " - " << (*i).second << "\n";
76     index++;
77    
78     }
79 gezelter 410 }
80    
81 gezelter 1097 int Exclude::hasPair(int i, int j) {
82 gezelter 410
83 gezelter 1097 set<pair<int, int> >::iterator position;
84 gezelter 410
85 gezelter 1097 if (i != j) {
86     if (i < j)
87     position = excludeSet.find(make_pair(i, j));
88     else
89     position = excludeSet.find(make_pair(j, i));
90 gezelter 410
91 gezelter 1097 if (position != excludeSet.end())
92     return 1;
93     else
94     return 0;
95     } else
96     return 0;
97 gezelter 410 }
98 gezelter 1097
99     int Exclude::getSize() {
100     return excludeSet.size();
101     }