--- trunk/src/applications/hydrodynamics/Hydro.cpp 2006/03/17 23:20:35 906 +++ trunk/src/applications/hydrodynamics/Hydro.cpp 2006/05/25 16:27:27 977 @@ -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; @@ -113,13 +113,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 +127,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 +139,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 +159,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 +170,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 +201,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(); -}