ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE-4/src/applications/hydrodynamics/RoughShell.cpp
(Generate patch)

Comparing trunk/OOPSE-4/src/applications/hydrodynamics/RoughShell.cpp (file contents):
Revision 2674 by tim, Fri Mar 17 23:20:35 2006 UTC vs.
Revision 2675 by tim, Wed Mar 29 18:09:26 2006 UTC

# Line 77 | Line 77 | bool RoughShell::createBeads(std::vector<BeadParam>& b
77   };
78   bool RoughShell::createBeads(std::vector<BeadParam>& beads) {
79      std::pair<Vector3d, Vector3d> boxBoundary = shape_->getBox();
80 <    double len = boxBoundary.second[0] - boxBoundary.first[0];
81 <    int numLattices = static_cast<int>(len/sigma_) + 1;
80 >    double firstMin = std::min(std::min(boxBoundary.first[0], boxBoundary.first[1]), boxBoundary.first[2]);
81 >    double secondMax = std::max(std::max(boxBoundary.second[0], boxBoundary.second[1]), boxBoundary.second[2]);
82 >    double len = secondMax - firstMin;
83 >    int numLattices = static_cast<int>(len/sigma_) + 2;
84      Grid3D<BeadLattice>  grid(numLattices, numLattices, numLattices);
85  
86      //fill beads
# Line 86 | Line 88 | bool RoughShell::createBeads(std::vector<BeadParam>& b
88          for (int j = 0; j < numLattices; ++j) {
89              for (int k = 0; k < numLattices; ++k) {
90                  BeadLattice& currentBead = grid(i, j, k);
91 <                currentBead.origin = Vector3d(i*sigma_ + boxBoundary.first[0], j *sigma_ + boxBoundary.first[1], k*sigma_+ boxBoundary.first[2]);
91 >                currentBead.origin = Vector3d((i-1)*sigma_ + boxBoundary.first[0], (j-1) *sigma_ + boxBoundary.first[1], (k-1)*sigma_+ boxBoundary.first[2]);
92                  currentBead.radius = sigma_;
93                  currentBead.interior = shape_->isInterior(grid(i, j, k).origin);                
94              }
# Line 100 | Line 102 | bool RoughShell::createBeads(std::vector<BeadParam>& b
102                   std::vector<BeadLattice> neighborCells = grid.getAllNeighbors(i, j, k);
103                   //if one of its neighbor cells is exterior, current cell is on the surface
104  
105 <                 std::vector<BeadLattice>::iterator ei = std::find_if(neighborCells.begin(), neighborCells.end(), ExteriorFunctor());                
106 <                 std::vector<BeadLattice>::iterator ii = std::find_if(neighborCells.begin(), neighborCells.end(), InteriorFunctor());                
107 <                
108 <                  if (ei != neighborCells.end() && ii != neighborCells.end()) {
105 >                 if (grid(i, j, k).interior){
106 >
107 >                    bool allNeighBorIsInterior = true;
108 >                    for (std::vector<BeadLattice>::iterator l = neighborCells.begin(); l != neighborCells.end(); ++l) {
109 >                        if (!l->interior) {
110 >                            allNeighBorIsInterior = false;
111 >                            break;
112 >                        }
113 >                    }
114 >
115 >                    if (allNeighBorIsInterior)
116 >                        continue;
117 >
118                        BeadParam surfaceBead;
119 <                      surfaceBead.atomName = "Bead";
119 >                      surfaceBead.atomName = "H";
120                        surfaceBead.pos = grid(i, j, k).origin;
121                        surfaceBead.radius = grid(i, j, k).radius;
122 <                      beads.push_back(surfaceBead);
112 <                  }
122 >                      beads.push_back(surfaceBead);                    
123  
124 +                 }
125              }
126          }
127      }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines