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

Comparing trunk/OOPSE-4/src/applications/nanoparticleBuilder/nanoparticleBuilder.cpp (file contents):
Revision 2672 by chuckv, Fri Mar 24 20:46:26 2006 UTC vs.
Revision 2994 by gezelter, Fri Sep 1 19:16:02 2006 UTC

# Line 90 | Line 90 | int main(int argc, char *argv []) {
90    int nComponents;
91    double latticeConstant;
92    std::vector<double> lc;
93 <  double mass;
93 >  double mass;                                                                                      
94    const double rhoConvertConst = 1.661;
95    double density;
96    double particleRadius;
# Line 130 | Line 130 | int main(int argc, char *argv []) {
130    
131    
132    /*calculate lattice constant (in Angstrom)
133 <  latticeConstant = pow(rhoConvertConst * numMolPerCell * mass / density,
134 <                        1.0 / 3.0);*/
133 >    latticeConstant = pow(rhoConvertConst * numMolPerCell * mass / density,
134 >    1.0 / 3.0);*/
135    
136    latticeConstant = args_info.latticeCnst_arg;
137    particleRadius = args_info.radius_arg;
# Line 162 | Line 162 | int main(int argc, char *argv []) {
162    /* Get number of lattice sites */
163    numSites = nanoParticleSites.size();
164  
165 < //std::cout <<"numSites are %d "<<numSites<<std::endl;
166 < // std::cout <<"nComponents are %d "<<nComponents<<std::endl;
165 >  //std::cout <<"numSites are %d "<<numSites<<std::endl;
166 >  // std::cout <<"nComponents are %d "<<nComponents<<std::endl;
167    numMol = new int[nComponents];
168  
169    
# Line 171 | Line 171 | int main(int argc, char *argv []) {
171    if (!args_info.ShellRadius_given){
172      std::cout << "Creating a random nanoparticle" << std::endl;
173      /* Check to see if we have enough components */
174 <    if (nComponents != args_info.molFraction_given + 1){
174 >    if (nComponents != args_info.molFraction_given && nComponents != 1){
175        std::cerr << "Number of components does not equal molFraction occurances." << std::endl;
176        exit(1);
177      }
178      /* Build the mole fractions and number of molecules of each type */  
179      int totComponents = 0;
180 <    for (int i = 0;i<nComponents-2;i++){ /* Figure out Percent for each component */
180 >    for (int i = 0;i<nComponents-1;i++){ /* Figure out Percent for each component */
181        numMol[i] = int((double)numSites * args_info.molFraction_arg[i]);
182 +      std::cout<<numMol[i]<<std::endl;
183        totComponents += numMol[i];
184      }
185      numMol[nComponents-1] = numSites - totComponents;
186 <        /* do the iPod thing, Shuffle da vector */
187 <        std::random_shuffle(nanoParticleSites.begin(), nanoParticleSites.end());
186 >  
187 >    /* do the iPod thing, Shuffle da vector */
188 >    std::random_shuffle(nanoParticleSites.begin(), nanoParticleSites.end());
189    } else{ /*Handle core-shell with multiple components.*/
190      std::cout << "Creating a core-shell nanoparticle." << std::endl;
191      if (nComponents != args_info.ShellRadius_given + 1){
# Line 193 | Line 195 | int main(int argc, char *argv []) {
195      
196    }
197  
198 <
199 <   //get the orientation of the cell sites
198 >  
199 >  //get the orientation of the cell sites
200    //for the same type of molecule in same lattice, it will not change
201 <   latticeOrt = nanoParticle.getPointsOrt();
201 >  latticeOrt = nanoParticle.getPointsOrt();
202 >  std::cout<<"Orientational vector Size: "<< std::endl;
203 >  std::cout<<latticeOrt.size()<< std::endl;
204    
205    
206    
207    // needed for writing out new md file.
208    
209 <    outPrefix = getPrefix(inputFileName.c_str()) + "_" + latticeType;
210 <    outMdFileName = outPrefix + ".md";
209 >  outPrefix = getPrefix(inputFileName.c_str()) + "_" + latticeType;
210 >  outMdFileName = outPrefix + ".md";
211    
212 <    //creat new .md file on fly which corrects the number of molecule    
213 <    createMdFile(inputFileName, outMdFileName, nComponents,numMol);
212 >  //creat new .md file on fly which corrects the number of molecule    
213 >  createMdFile(inputFileName, outMdFileName, nComponents,numMol);
214    
215    if (oldInfo != NULL)
216      delete oldInfo;
# Line 215 | Line 219 | int main(int argc, char *argv []) {
219    // We need to read in new siminfo object.    
220    //parse md file and set up the system
221    //SimCreator NewCreator;
222 +  SimCreator newCreator;
223 +  SimInfo* NewInfo = newCreator.createSim(outMdFileName, false);
224    
219  SimInfo* NewInfo = oldCreator.createSim(outMdFileName, false);
225    
221  
222 std::cout << "Contents of nanoParticleSites to follow: " << std::endl;
223 for (int i=0; i< nanoParticleSites.size()
224     ; i++) {
225  cout<<nanoParticleSites.at(i)<<endl;
226 }
226    // Place molecules
227    Molecule* mol;
228    SimInfo::MoleculeIterator mi;
229    mol = NewInfo->beginMolecule(mi);
230 < int l = 0;
231 < for (mol = NewInfo->beginMolecule(mi); mol != NULL; mol = NewInfo->nextMolecule(mi)) {
232 <        locator->placeMol(nanoParticleSites[l], latticeOrt[l], mol);
233 <        l++;
230 >  int l = 0;
231 >  for (mol = NewInfo->beginMolecule(mi); mol != NULL; mol = NewInfo->nextMolecule(mi)) {
232 >    locator->placeMol(nanoParticleSites[l], latticeOrt[l], mol);
233 >    l++;
234    }
235  
237
238
236    
237    //fill Hmat
238    hmat(0, 0)=  latticeConstant;
# Line 298 | Line 295 | void createMdFile(const std::string&oldMdFileName, con
295      
296      //correct molecule number
297      if (strstr(buffer, "nMol") != NULL) {
298 <        if(i<components){
299 <      sprintf(buffer, "\tnMol = %i;", numMol[i]);                              
300 <      newMdFile << buffer << std::endl;
301 <      i++;
302 <        }
298 >      if(i<components){
299 >        sprintf(buffer, "\tnMol = %i;", numMol[i]);                            
300 >        newMdFile << buffer << std::endl;
301 >        i++;
302 >      }
303      } else
304        newMdFile << buffer << std::endl;
305      

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines