ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/branches/development/src/lattice/shapedLattice.cpp
(Generate patch)

Comparing trunk/src/lattice/shapedLattice.cpp (file contents):
Revision 963 by tim, Wed May 17 21:51:42 2006 UTC vs.
Revision 1290 by cli2, Wed Sep 10 19:51:45 2008 UTC

# Line 42 | Line 42
42   *
43   *  Created by Charles F. Vardeman II on 17 Feb 2006.
44   *  @author  Charles F. Vardeman II
45 < *  @version $Id: shapedLattice.cpp,v 1.4 2006-05-17 21:51:42 tim Exp $
45 > *  @version $Id: shapedLattice.cpp,v 1.7 2008-09-10 19:51:43 cli2 Exp $
46   *
47   */
48  
49 <
49 > #include <cstdlib>
50   #include "lattice/shapedLattice.hpp"
51   #include "math/Vector3.hpp"
52   #include "brains/Register.hpp"
53   #include "lattice/LatticeFactory.hpp"
54  
55   namespace oopse{
56 <        shapedLattice::shapedLattice(RealType latticeConstant,
56 >  shapedLattice::shapedLattice(RealType latticeConstant,
57                                 std::string latticeType) {
58 <                latticeConstant_ = latticeConstant;
59 <                latticeType_ = latticeType;
60 <                registerLattice();
61 <                simpleLattice_ = LatticeFactory::getInstance()->createLattice(latticeType);
62 <                if (simpleLattice_ == NULL){
63 <                        std::cerr << "shapedLattice:: Error creating lattice" << std::endl;
64 <                        exit(1);
65 <                }
58 >    latticeConstant_ = latticeConstant;
59 >    latticeType_ = latticeType;
60 >    registerLattice();
61 >    simpleLattice_ = LatticeFactory::getInstance()->createLattice(latticeType);
62 >    if (simpleLattice_ == NULL){
63 >      std::cerr << "shapedLattice:: Error creating lattice" << std::endl;
64 >      exit(1);
65 >    }
66                  
67 <                //Set the lattice constant
67 >    //Set the lattice constant
68      std::vector<RealType> lc;
69      lc.push_back(latticeConstant_);
70 <                simpleLattice_->setLatticeConstant(lc);
71 <        }
72 <        
73 <  
74 <  
70 >    simpleLattice_->setLatticeConstant(lc);
71 >    sitesComputed_ = false;
72 >  }
73 >    
74    void shapedLattice::setGridDimension(Vector3d dimension){
75      dimension_ = dimension;
76 <                // Find number of unit cells in each direction
77 <                beginNx_ = -(int) ceil(0.5*dimension_[0]/latticeConstant_) ;
78 <                beginNy_ = -(int) ceil(0.5*dimension_[1]/latticeConstant_) ;
79 <                beginNz_ = -(int) ceil(0.5*dimension_[2]/latticeConstant_) ;    
76 >    // Find     number of unit cells in each direction
77 >    beginNx_ = -(int) ceil(0.5*dimension_[0]/latticeConstant_) ;
78 >    beginNy_ = -(int) ceil(0.5*dimension_[1]/latticeConstant_) ;
79 >    beginNz_ = -(int) ceil(0.5*dimension_[2]/latticeConstant_) ;    
80      endNx_ = (int) ceil(0.5*dimension_[0]/latticeConstant_);
81 <                endNy_ = (int) ceil(0.5*dimension_[1]/latticeConstant_);
82 <                endNz_ = (int) ceil(0.5*dimension_[2]/latticeConstant_);    
81 >    endNy_ = (int) ceil(0.5*dimension_[1]/latticeConstant_);
82 >    endNz_ = (int) ceil(0.5*dimension_[2]/latticeConstant_);  
83 >    sitesComputed_ = false;  
84    }
85 +
86 +  void shapedLattice::setOrigin(Vector3d origin){
87 +    origin_ = origin;
88 +    simpleLattice_->setOrigin(origin_);
89 +    sitesComputed_ = false;  
90 +  }
91    
92 <  
93 <  
94 <    std::vector<Vector3d> shapedLattice::getPoints(){
95 <                        std::vector<Vector3d> latticePos;
96 <                        
97 <      
98 <      std::vector<Vector3d> pointsOrt =  simpleLattice_->getLatticePointsOrt();
99 <      int numMolPerCell = simpleLattice_->getNumSitesPerCell();
100 <      for(int i = beginNx_; i < endNx_; i++) {    
101 <        for(int j = beginNy_; j < endNy_; j++) {      
102 <          for(int k = beginNz_; k < endNz_; k++) {
103 <            //get the position of the cell sites
104 <            simpleLattice_->getLatticePointsPos(latticePos, i, j, k);
105 <            
106 <            for(int l = 0; l < numMolPerCell; l++) {
107 <              
108 <              
109 <              if (isInterior(latticePos[l])){
110 <                Vector3d myPoint = latticePos[l];
111 <                Vector3d myOrt = pointsOrt[l];
106 <                coords_.push_back(myPoint);
107 <                coordsOrt_.push_back(myOrt);
108 <              }
92 >  void shapedLattice::findSites(){
93 >
94 >    sites_.clear();
95 >    orientations_.clear();
96 >
97 >    std::vector<Vector3d> latticePos;                        
98 >    std::vector<Vector3d> pointsOrt =  simpleLattice_->getLatticePointsOrt();
99 >    int numMolPerCell = simpleLattice_->getNumSitesPerCell();  
100 >
101 >    for(int i = beginNx_; i < endNx_; i++) {    
102 >      for(int j = beginNy_; j < endNy_; j++) {      
103 >        for(int k = beginNz_; k < endNz_; k++) {
104 >          //get the position of the cell sites
105 >          simpleLattice_->getLatticePointsPos(latticePos, i, j, k);            
106 >          for(int l = 0; l < numMolPerCell; l++) {              
107 >            if (isInterior(latticePos[l])){
108 >              Vector3d myPoint = latticePos[l];
109 >              Vector3d myOrt = pointsOrt[l];
110 >              sites_.push_back(myPoint);
111 >              orientations_.push_back(myOrt);
112              }
113            }
114          }
115        }
116 <      
117 <      return coords_;
118 <      
119 <                }      
116 >    }
117 >    sitesComputed_ = true;
118 >  }
119 >
120 >  std::vector<Vector3d> shapedLattice::getSites() {
121 >    if (!sitesComputed_) {
122 >      findSites();
123 >    }
124 >    return sites_;
125 >  }
126 >
127 >  std::vector<Vector3d> shapedLattice::getOrientations() {
128 >    if (!sitesComputed_) {
129 >      findSites();
130 >    }
131 >    return orientations_;
132 >  }
133   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines