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 905 by chuckv, Fri Mar 17 16:11:30 2006 UTC vs.
branches/development/src/lattice/shapedLattice.cpp (file contents), Revision 1875 by gezelter, Fri May 17 14:41:42 2013 UTC

# Line 5 | Line 5
5   * redistribute this software in source and binary code form, provided
6   * that the following conditions are met:
7   *
8 < * 1. Acknowledgement of the program authors must be made in any
9 < *    publication of scientific results based in part on use of the
10 < *    program.  An acceptable form of acknowledgement is citation of
11 < *    the article in which the program was described (Matthew
12 < *    A. Meineke, Charles F. Vardeman II, Teng Lin, Christopher
13 < *    J. Fennell and J. Daniel Gezelter, "OOPSE: An Object-Oriented
14 < *    Parallel Simulation Engine for Molecular Dynamics,"
15 < *    J. Comput. Chem. 26, pp. 252-271 (2005))
16 < *
17 < * 2. Redistributions of source code must retain the above copyright
8 > * 1. Redistributions of source code must retain the above copyright
9   *    notice, this list of conditions and the following disclaimer.
10   *
11 < * 3. Redistributions in binary form must reproduce the above copyright
11 > * 2. Redistributions in binary form must reproduce the above copyright
12   *    notice, this list of conditions and the following disclaimer in the
13   *    documentation and/or other materials provided with the
14   *    distribution.
# Line 37 | Line 28
28   * University of Notre Dame has been advised of the possibility of
29   * such damages.
30   *
31 + * SUPPORT OPEN SCIENCE!  If you use OpenMD or its source code in your
32 + * research, please cite the appropriate papers when you publish your
33 + * work.  Good starting points are:
34 + *                                                                      
35 + * [1]  Meineke, et al., J. Comp. Chem. 26, 252-271 (2005).            
36 + * [2]  Fennell & Gezelter, J. Chem. Phys. 124, 234104 (2006).          
37 + * [3]  Sun, Lin & Gezelter, J. Chem. Phys. 128, 234107 (2008).          
38 + * [4]  Kuang & Gezelter,  J. Chem. Phys. 133, 164101 (2010).
39 + * [4]  Stocker & Gezelter, J. Chem. Theory Comput. 7, 834 (2011). *
40   *
41   *  sphericalLattice.cpp
42   *
43   *  Created by Charles F. Vardeman II on 17 Feb 2006.
44 + *  Edited by Kelsey M. Stocker on 23 Feb 2012.
45   *  @author  Charles F. Vardeman II
46 < *  @version $Id: shapedLattice.cpp,v 1.1 2006-03-17 16:10:19 chuckv Exp $
46 > *  @version $Id$
47   *
48   */
49  
50 <
50 > #include <cstdlib>
51   #include "lattice/shapedLattice.hpp"
52   #include "math/Vector3.hpp"
53   #include "brains/Register.hpp"
54   #include "lattice/LatticeFactory.hpp"
55  
56 < namespace oopse{
57 <        shapedLattice::shapedLattice(double latticeConstant,
58 <                               std::string latticeType) {
59 <                latticeConstant_ = latticeConstant;
60 <                latticeType_ = latticeType;
61 <                registerLattice();
62 <                simpleLattice_ = LatticeFactory::getInstance()->createLattice(latticeType);
63 <                if (simpleLattice_ == NULL){
64 <                        std::cerr << "shapedLattice:: Error creating lattice" << std::endl;
65 <                        exit(1);
66 <                }
56 > using namespace std;
57 > namespace OpenMD{
58 >  shapedLattice::shapedLattice(RealType latticeConstant, string latticeType)
59 >  : latticeConstant_(latticeConstant), latticeType_(latticeType) {
60 >
61 >    registerLattice();
62 >    simpleLattice_ = LatticeFactory::getInstance()->createLattice(latticeType);
63 >    if (simpleLattice_ == NULL){
64 >      std::cerr << "shapedLattice:: Error creating lattice" << std::endl;
65 >      exit(1);
66 >    }
67                  
68 <                //Set the lattice constant
69 <    std::vector<double> lc;
68 >    //Set the lattice constant
69 >    std::vector<RealType> lc;
70      lc.push_back(latticeConstant_);
71 <                simpleLattice_->setLatticeConstant(lc);
72 <    origin_[0]=0.0;
73 <    origin_[1]=0.0;
74 <    origin_[2]=0.0;
74 <        }
75 <        
76 <  
77 <  
71 >    simpleLattice_->setLatticeConstant(lc);
72 >    sitesComputed_ = false;
73 >  }
74 >    
75    void shapedLattice::setGridDimension(Vector3d dimension){
76      dimension_ = dimension;
77 <                // Find number of unit cells in each direction
78 <                beginNx_ = -(int) ceil(dimension_[0]/latticeConstant_) ;
79 <                beginNy_ = -(int) ceil(dimension_[1]/latticeConstant_) ;
80 <                beginNz_ = -(int) ceil(dimension_[2]/latticeConstant_) ;    
81 <    endNx_ = (int) ceil(dimension_[0]/latticeConstant_);
82 <                endNy_ = (int) ceil(dimension_[1]/latticeConstant_);
83 <                endNz_ = (int) ceil(dimension_[2]/latticeConstant_);    
84 <    
77 >    // Find     number of unit cells in each direction
78 >    beginNx_ = -(int) ceil(0.5*dimension_[0]/latticeConstant_) ;
79 >    beginNy_ = -(int) ceil(0.5*dimension_[1]/latticeConstant_) ;
80 >    beginNz_ = -(int) ceil(0.5*dimension_[2]/latticeConstant_) ;    
81 >    endNx_ = (int) ceil(0.5*dimension_[0]/latticeConstant_);
82 >    endNy_ = (int) ceil(0.5*dimension_[1]/latticeConstant_);
83 >    endNz_ = (int) ceil(0.5*dimension_[2]/latticeConstant_);  
84 >    std::cerr << "begin = " << beginNx_ << " " << beginNy_ << " " << beginNz_ << "\n";
85 >    std::cerr << "end = " << endNx_ << " " << endNy_ << " " << endNz_ << "\n";
86 >    sitesComputed_ = false;  
87    }
88 <  
89 <  
91 <  
92 <  void shapedLattice::setGridDimension(Vector3d dimension, Vector3d origin){
93 <    dimension_ = dimension;
88 >
89 >  void shapedLattice::setOrigin(Vector3d origin){
90      origin_ = origin;
91 <                // Find number of unit cells in each direction
92 <                beginNx_ = -(int) ceil(dimension_[0]/latticeConstant_) + (int) floor(origin[0]);
97 <                beginNy_ = -(int) ceil(dimension_[1]/latticeConstant_) + (int) floor(origin[1]);
98 <                beginNz_ = -(int) ceil(dimension_[2]/latticeConstant_) + (int) floor(origin[2]);    
99 <    endNx_ = (int) ceil(dimension_[0]/latticeConstant_) + (int) floor(origin[0]);
100 <                endNy_ = (int) ceil(dimension_[1]/latticeConstant_) + (int) floor(origin[1]);
101 <                endNz_ = (int) ceil(dimension_[2]/latticeConstant_) + (int) floor(origin[2]);    
102 <    
91 >    simpleLattice_->setOrigin(origin_);
92 >    sitesComputed_ = false;  
93    }
94    
95 <  std::vector<Vector3d> shapedLattice::getPoints(){
96 <                        std::vector<Vector3d> latticePos;
97 <                        
98 <      int numMolPerCell = simpleLattice_->getNumSitesPerCell();
99 <      for(int i = beginNx_; i < endNx_; i++) {    
100 <        for(int j = beginNy_; j < endNy_; j++) {      
101 <          for(int k = beginNz_; k < endNz_; k++) {
102 <            //get the position of the cell sites
103 <            simpleLattice_->getLatticePointsPos(latticePos, i, j, k);
104 <            
105 <            for(int l = 0; l < numMolPerCell; l++) {
106 <              
107 <              if (isInterior(latticePos[l])){
108 <                coords_.push_back(latticePos[l]);
109 <              }
95 >  void shapedLattice::findSites(){
96 >
97 >    sites_.clear();
98 >    orientations_.clear();
99 >
100 >    std::vector<Vector3d> latticePos;                        
101 >    std::vector<Vector3d> pointsOrt =  simpleLattice_->getLatticePointsOrt();
102 >    int numMolPerCell = simpleLattice_->getNumSitesPerCell();  
103 >
104 >    for(int i = beginNx_; i < endNx_; i++) {    
105 >      for(int j = beginNy_; j < endNy_; j++) {      
106 >        for(int k = beginNz_; k < endNz_; k++) {
107 >          //get the position of the cell sites
108 >          simpleLattice_->getLatticePointsPos(latticePos, i, j, k);            
109 >          for(int l = 0; l < numMolPerCell; l++) {              
110 >            if (isInterior(latticePos[l])){
111 >              Vector3d myPoint = latticePos[l];
112 >              Vector3d myOrt = pointsOrt[l];
113 >              sites_.push_back(myPoint);
114 >              orientations_.push_back(myOrt);
115              }
116            }
117          }
118        }
119 <      
120 <      return coords_;
121 <      
122 <                }      
119 >    }
120 >    sitesComputed_ = true;
121 >  }
122 >
123 >  std::vector<Vector3d> shapedLattice::getSites() {
124 >    if (!sitesComputed_) {
125 >      findSites();
126 >    }
127 >    return sites_;
128 >  }
129 >
130 >  std::vector<Vector3d> shapedLattice::getOrientations() {
131 >    if (!sitesComputed_) {
132 >      findSites();
133 >    }
134 >    return orientations_;
135 >  }
136   }

Comparing:
trunk/src/lattice/shapedLattice.cpp (property svn:keywords), Revision 905 by chuckv, Fri Mar 17 16:11:30 2006 UTC vs.
branches/development/src/lattice/shapedLattice.cpp (property svn:keywords), Revision 1875 by gezelter, Fri May 17 14:41:42 2013 UTC

# Line 0 | Line 1
1 + Author Id Revision Date

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines