--- trunk/src/applications/hydrodynamics/Hydro.cpp 2006/03/17 23:20:35 906 +++ trunk/src/applications/hydrodynamics/Hydro.cpp 2006/04/25 02:09:01 945 @@ -64,12 +64,11 @@ void registerHydrodynamicsModels(); Shape* shape; }; void registerHydrodynamicsModels(); -void calcHydrodynamicsProp(HydrodynamicsModel* model, Shape* shape,double viscosity, double temperature, std::ostream& os, const std::string& prefix); int main(int argc, char* argv[]){ //register force fields registerForceFields(); - + registerHydrodynamicsModels(); gengetopt_args_info args_info; std::string dumpFileName; @@ -119,7 +118,7 @@ int main(int argc, char* argv[]){ 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 +126,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 +138,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 +158,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 +169,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) { + shape->calcHydroProps(model, viscosity, temperature); + model->writeHydroProps(outputDiff); + } + delete model; } @@ -184,14 +200,4 @@ 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(); -}