--- trunk/src/applications/hydrodynamics/Hydro.cpp 2006/03/17 23:20:35 906 +++ trunk/src/applications/hydrodynamics/Hydro.cpp 2006/08/30 21:13:57 1027 @@ -64,12 +64,12 @@ void registerHydrodynamicsModels(); Shape* shape; }; void registerHydrodynamicsModels(); -void calcHydrodynamicsProp(HydrodynamicsModel* model, Shape* shape,double viscosity, double temperature, std::ostream& os, const std::string& prefix); +void writeHydroProps(std::ostream& os); int main(int argc, char* argv[]){ //register force fields registerForceFields(); - + registerHydrodynamicsModels(); gengetopt_args_info args_info; std::string dumpFileName; @@ -89,19 +89,16 @@ int main(int argc, char* argv[]){ exit(1); } - mdFileName = dumpFileName; - mdFileName = mdFileName.substr(0, mdFileName.rfind(".")) + ".md"; - if (args_info.output_given){ prefix = args_info.output_arg; } else { - prefix = getPrefix(mdFileName); + prefix = getPrefix(dumpFileName); } std::string outputFilename = prefix + ".diff"; //parse md file and set up the system SimCreator creator; - SimInfo* info = creator.createSim(mdFileName, true); + SimInfo* info = creator.createSim(dumpFileName, true); SimInfo::MoleculeIterator mi; Molecule* mol; @@ -113,13 +110,13 @@ int main(int argc, char* argv[]){ identMat(2,2) = 1.0; Globals* simParams = info->getSimParams(); - double temperature; - double viscosity; + RealType temperature; + RealType viscosity; if (simParams->haveViscosity()) { viscosity = simParams->getViscosity(); } else { - sprintf(painCave.errMsg, "target temperature must be set\n"); + sprintf(painCave.errMsg, "viscosity must be set\n"); painCave.isFatal = 1; simError(); } @@ -127,7 +124,7 @@ int main(int argc, char* argv[]){ if (simParams->haveTargetTemp()) { temperature = simParams->getTargetTemp(); } else { - sprintf(painCave.errMsg, "viscosity must be set\n"); + sprintf(painCave.errMsg, "target temperature must be set\n"); painCave.isFatal = 1; simError(); } @@ -139,16 +136,18 @@ int main(int argc, char* argv[]){ integrableObject = mol->nextIntegrableObject(ii)) { if (uniqueStuntDoubles.find(integrableObject->getType()) == uniqueStuntDoubles.end()) { - SDShape tmp; - tmp.shape = ShapeBuilder::createShape(integrableObject); - tmp.sd = integrableObject; - uniqueStuntDoubles.insert(std::map::value_type(integrableObject->getType(), tmp)); integrableObject->setPos(V3Zero); integrableObject->setA(identMat); if (integrableObject->isRigidBody()) { RigidBody* rb = static_cast(integrableObject); rb->updateAtoms(); } + + SDShape tmp; + tmp.shape = ShapeBuilder::createShape(integrableObject); + tmp.sd = integrableObject; + uniqueStuntDoubles.insert(std::map::value_type(integrableObject->getType(), tmp)); + } } } @@ -157,7 +156,7 @@ int main(int argc, char* argv[]){ std::ofstream outputDiff(outputFilename.c_str()); std::map::iterator si; - for (si != uniqueStuntDoubles.begin(); si != uniqueStuntDoubles.end(); ++si) { + for (si = uniqueStuntDoubles.begin(); si != uniqueStuntDoubles.end(); ++si) { HydrodynamicsModel* model; Shape* shape = si->second.shape; StuntDouble* sd = si->second.sd;; @@ -168,7 +167,22 @@ int main(int argc, char* argv[]){ } else { model = new BeadModel(sd, info); } - calcHydrodynamicsProp(model, shape, viscosity, temperature, outputDiff, prefix); + + model->init(); + + std::ofstream ofs; + std::stringstream outputBeads; + outputBeads << prefix << "_" << model->getStuntDoubleName() << ".xyz"; + ofs.open(outputBeads.str().c_str()); + model->writeBeads(ofs); + ofs.close(); + + //if beads option is turned on, skip the calculation + if (!args_info.beads_flag) { + model->calcHydroProps(shape, viscosity, temperature); + model->writeHydroProps(outputDiff); + } + delete model; } @@ -184,14 +198,3 @@ void registerHydrodynamicsModels() { HydrodynamicsModelFactory::getInstance()->registerHydrodynamicsModel(new HydrodynamicsModelBuilder("AnalyticalModel")); } -void calcHydrodynamicsProp(HydrodynamicsModel* model, Shape* shape,double viscosity, double temperature, std::ostream& os, const std::string& prefix) { - - shape->calcHydroProps(model, viscosity, temperature); - model->writeHydroProps(os); - std::ofstream ofs; - std::stringstream outputBeads; - outputBeads << prefix << "_" << model->getStuntDoubleName() << ".xyz"; - ofs.open(outputBeads.str().c_str()); - model->writeBeads(ofs); - ofs.close(); -}