--- trunk/OOPSE-1.0/utils/sysbuilder/simpleBuilder.cpp 2004/07/28 18:42:59 1427 +++ trunk/OOPSE-1.0/utils/sysbuilder/simpleBuilder.cpp 2004/07/28 20:29:49 1429 @@ -7,17 +7,19 @@ #include #include -#include "simError.h" #include "Globals.hpp" #include "SimInfo.hpp" #include "SimSetup.hpp" -#include "simpleBuilderCmd.hpp" +#include "simpleBuilderCmd.h" #include "StringUtils.hpp" #include "LatticeFactory.hpp" #include "Vector3d.hpp" +#include "MoLocator.hpp" +#include "Lattice.hpp" using namespace std; +void createMdFile(const string& oldMdFileName, const string& newMdFileName, int numMol); int main( int argc, char* argv[]){ @@ -34,7 +36,7 @@ int main( int argc, char* argv[]){ BaseLattice* simpleLat; int numMol; double latticeConstant; - vector lc; + vector lc; double mass; double density; int nx, ny, nz; @@ -59,32 +61,31 @@ int main( int argc, char* argv[]){ latticeType = UpperCase(args_info.latticetype_arg); if(!LatticeFactory::getInstance()->hasLatticeCreator(latticeType)){ cerr << latticeType << " is an invalid lattice type" << endl; - cerr << LatticeFactory::getInstance()->oString << endl; + cerr << LatticeFactory::getInstance()->toString() << endl; exit(1); } - nx = args_info.nx_args; + nx = args_info.nx_arg; if(nx <= 0){ cerr << "The number of unit cell in h direction must be greater than 0" << endl; exit(1); } - nx = args_info.nx_args; - if(nx <= 0){ + ny = args_info.ny_arg; + if(ny <= 0){ cerr << "The number of unit cell in l direction must be greater than 0" << endl; exit(1); } - nx = args_info.nx_args; - if(nx <= 0){ + nz = args_info.nz_arg; + if(nz <= 0){ cerr << "The number of unit cell in k direction must be greater than 0" << endl; exit(1); } //get input file name - if (args_info.inputs_num) { + if (args_info.inputs_num) inputFileName = args_info.inputs[0]; - cerr << in_name << "\n"; } else { cerr <<"You must specify a input file name.\n" << endl; cmdline_parser_print_help(); @@ -109,7 +110,7 @@ int main( int argc, char* argv[]){ exit(1); } - oldSimSetup = new SimSetup(oldInfo); + oldSimSetup = new SimSetup(); if(oldSimSetup == NULL){ cerr << "error in creating SimSetup" << endl; exit(1); @@ -117,10 +118,9 @@ int main( int argc, char* argv[]){ oldSimSetup->setSimInfo(oldInfo ); oldSimSetup->parseFile(&inputFileName[0] ); - oldSimSetup->createSim(); - if(oldInfo->nComponets >=2){ + if(oldInfo->nComponents >=2){ cerr << "can not build the system with more than two components" << endl; exit(1); } @@ -133,7 +133,7 @@ int main( int argc, char* argv[]){ } - numMolPerCell = simpleLat->getNpoints(); + numMolPerCell = simpleLat->getNumSitesPerCell(); //calculate lattice constant latticeConstant = pow(numMolPerCell * mass /density, 1.0/3.0); @@ -167,7 +167,7 @@ int main( int argc, char* argv[]){ exit(1); } - newSimSetup = new SimSetup(newInfo); + newSimSetup = new SimSetup(); if(newSimSetup == NULL){ cerr << "error in creating SimSetup" << endl; exit(1); @@ -181,12 +181,12 @@ int main( int argc, char* argv[]){ newInfo->setBoxM(Hmat); //allocat memory for storing pos, vel and etc - newInfo.getConfiguration()->createArrays(newInfo.n_atoms); - for (int i = 0; i < newInfo.n_atoms; i++) - newInfo.atoms[i]->setCoords(); + newInfo->getConfiguration()->createArrays(newInfo->n_atoms); + for (int i = 0; i < newInfo->n_atoms; i++) + newInfo->atoms[i]->setCoords(); //creat Molocator - locator = new MoLocator(newInfo->compStamps[0], newSimSetup->the_ff); + locator = new MoLocator(newInfo->compStamps[0], newSimSetup->getForceField()); //place the molecules @@ -204,7 +204,7 @@ int main( int argc, char* argv[]){ simpleLat->getLatticePointsPos(latticePos, i, j, k); for(int l = 0; l < numMolPerCell; l++) - locator->placeMol(latticePos[l], latticeOrt[l], newInfo->molecules[curMolIndex++]); + locator->placeMol(latticePos[l], latticeOrt[l], &(newInfo->molecules[curMolIndex++])); } } } @@ -215,7 +215,7 @@ int main( int argc, char* argv[]){ cerr << "error in creating DumpWriter" << endl; exit(1); } - writer->writeFinal(); + writer->writeFinal(0); //delete objects @@ -241,17 +241,20 @@ void createMdFile(const string& oldMdFileName, const s ofstream newMdFile; const int MAXLEN = 65535; char buffer[MAXLEN]; + string line; - //create new .md file based on old .md file - oldMdFile.open(oldMdFileName.c_str()) - newMdFile.open(newMdFileName); + oldMdFile.open(oldMdFileName.c_str()); + newMdFile.open(newMdFileName.c_str()); oldMdFile.getline(buffer, MAXLEN); while(!oldMdFile.eof()){ - if(line.find("nMol") < line.size()) - sprintf(buffer, "nMol = %s;", numMol); + if(line.find("nMol") < line.size()){ + + sprintf(buffer, "\t\tnMol = %d;", numMol); + newMdFile << buffer << endl; + } else newMdFile << buffer << endl;