| 42 |  | * | 
| 43 |  | *  Created by Charles F. Vardeman II on 10 Apr 2006. | 
| 44 |  | *  @author  Charles F. Vardeman II | 
| 45 | < | *  @version $Id: randomBuilder.cpp,v 1.2 2006-05-17 21:51:42 tim Exp $ | 
| 45 | > | *  @version $Id: randomBuilder.cpp,v 1.3 2006-10-09 22:16:44 gezelter Exp $ | 
| 46 |  | * | 
| 47 |  | */ | 
| 48 |  |  | 
| 86 |  | std::string inputFileName; | 
| 87 |  | std::string outPrefix; | 
| 88 |  | std::string outMdFileName; | 
| 89 | – | std::string outInitFileName; | 
| 89 |  | Lattice *simpleLat; | 
| 90 |  | int* numMol; | 
| 91 |  | RealType latticeConstant; | 
| 159 |  | Globals* simParams = oldInfo->getSimParams(); | 
| 160 |  |  | 
| 161 |  | int nComponents =simParams->getNComponents(); | 
| 162 | < | if (oldInfo->getNMoleculeStamp()>= 2) { | 
| 162 | > | if (oldInfo->getNMoleculeStamp() > 2) { | 
| 163 |  | std::cerr << "can not build the system with more than two components" | 
| 164 |  | << std::endl; | 
| 165 |  | exit(1); | 
| 227 |  | outMdFileName = outPrefix + ".md"; | 
| 228 |  |  | 
| 229 |  | //creat new .md file on fly which corrects the number of molecule | 
| 230 | < | createMdFile(inputFileName, outMdFileName, nComponents,numMol); | 
| 232 | < |  | 
| 233 | < |  | 
| 234 | < |  | 
| 235 | < | //determine the output file names | 
| 236 | < | if (args_info.output_given){ | 
| 237 | < | outInitFileName = args_info.output_arg; | 
| 238 | < | }else{ | 
| 239 | < | outInitFileName = getPrefix(inputFileName.c_str()) + ".in"; | 
| 240 | < | } | 
| 230 | > | createMdFile(inputFileName, outMdFileName, nComponents, numMol); | 
| 231 |  |  | 
| 232 |  | //fill Hmat | 
| 233 |  | hmat(0, 0)= nx * latticeConstant; | 
| 257 |  | /* Randomize position vector */ | 
| 258 |  | std::random_shuffle(latticeSites.begin(), latticeSites.end()); | 
| 259 |  |  | 
| 270 | – |  | 
| 260 |  | if (oldInfo != NULL) | 
| 261 |  | delete oldInfo; | 
| 262 | < |  | 
| 274 | < |  | 
| 262 | > |  | 
| 263 |  | // We need to read in new siminfo object. | 
| 264 | < | //parse md file and set up the system | 
| 265 | < | //SimCreator NewCreator; | 
| 264 | > | // parse md file and set up the system | 
| 265 | > |  | 
| 266 |  | SimCreator newCreator; | 
| 267 | < | SimInfo* NewInfo = newCreator.createSim(outMdFileName, false); | 
| 267 | > | SimInfo* newInfo = newCreator.createSim(outMdFileName, false); | 
| 268 |  |  | 
| 269 |  | /* create Molocators */ | 
| 270 | < | locator = new MoLocator(NewInfo->getMoleculeStamp(0), NewInfo->getForceField()); | 
| 270 | > | locator = new MoLocator(newInfo->getMoleculeStamp(0), newInfo->getForceField()); | 
| 271 |  |  | 
| 272 |  |  | 
| 273 |  |  | 
| 274 |  | Molecule* mol; | 
| 275 |  | SimInfo::MoleculeIterator mi; | 
| 276 | < | mol = NewInfo->beginMolecule(mi); | 
| 276 | > | mol = newInfo->beginMolecule(mi); | 
| 277 |  | int l = 0; | 
| 278 | < | for (mol = NewInfo->beginMolecule(mi); mol != NULL; mol = NewInfo->nextMolecule(mi)) { | 
| 278 | > | for (mol = newInfo->beginMolecule(mi); mol != NULL; mol = newInfo->nextMolecule(mi)) { | 
| 279 |  | locator->placeMol(latticeSites[l], latticeOrt[l], mol); | 
| 280 |  | l++; | 
| 281 |  | } | 
| 282 |  |  | 
| 295 | – |  | 
| 296 | – |  | 
| 283 |  | //create dumpwriter and write out the coordinates | 
| 284 | < | oldInfo->setFinalConfigFileName(outInitFileName); | 
| 285 | < | writer = new DumpWriter(oldInfo); | 
| 284 | > | newInfo->setFinalConfigFileName(outMdFileName); | 
| 285 | > | writer = new DumpWriter(newInfo); | 
| 286 |  |  | 
| 287 |  | if (writer == NULL) { | 
| 288 |  | std::cerr << "error in creating DumpWriter" << std::endl; | 
| 289 |  | exit(1); | 
| 290 |  | } | 
| 291 |  |  | 
| 292 | < | writer->writeDump(); | 
| 293 | < | std::cout << "new initial configuration file: " << outInitFileName | 
| 294 | < | << " is generated." << std::endl; | 
| 309 | < |  | 
| 310 | < | //delete objects | 
| 311 | < |  | 
| 312 | < | //delete oldInfo and oldSimSetup | 
| 313 | < | if (oldInfo != NULL) | 
| 314 | < | delete oldInfo; | 
| 315 | < |  | 
| 316 | < | if (writer != NULL) | 
| 317 | < | delete writer; | 
| 318 | < |  | 
| 319 | < | delete simpleLat; | 
| 320 | < |  | 
| 292 | > | writer->writeEor(); | 
| 293 | > | std::cout << "new OOPSE MD file: " << outMdFileName | 
| 294 | > | << " has been generated." << std::endl; | 
| 295 |  | return 0; | 
| 296 |  | } | 
| 297 |  |  |