557 FunctionEntry(
"Run");
560 int maxSubSteps = 1000;
561 int dumpinterval = 1;
563 std::stringstream outString;
564 outString << std::endl << std::endl
565 <<
"***************************************** " << std::endl;
566 outString <<
" Starting Stepping in Time " << std::endl;
567 outString <<
"***************************************** " << std::endl << std::endl;
568 outString <<
"ElmerFoamDriver:Run: Summary of the simulation " << std::endl;
569 outString <<
" Simulation Type = ElmerFoamFSI" << std::endl;
572 outString << std::endl;
573 StdOut(outString.str(),0,
true);
580 outString <<
"ElmerFoamDriver:Run: System timestep " << ++systemStep
582 StdOut(outString.str(),1,
true);
590 outString <<
"ElmerFoamDriver:Run: Transferring displacements from structures to fluids @ time("
592 StdOut(outString.str(),1,
true);
600 outString <<
"ElmerFoamDriver:Run: Stepping fluids to time("
602 StdOut(outString.str(),1,
true);
632 outString <<
"ElmerFoamDriver:Run: Stepping structures to time("
634 StdOut(outString.str(),1,
true);
641 bool converged =
true;
644 outString <<
"ElmerFoamDriver:Run: Converged at time("
646 outString <<
"ElmerFoamDriver:Run: Converged at time("
648 StdOut(outString.str(),1,
true);
658 if(innerCount > maxSubSteps){
659 outString <<
"ElmerFoamDriver:Run: Failed to converge after "
660 << maxSubSteps <<
", giving up." << std::endl;
661 StdOut(outString.str(),0,
true);
668 StdOut(outString.str(),0,
true);
672 if(!(systemStep%dumpinterval)){
virtual int Run(double endTime)
int TransferDisplacementsToFluid(solidagent *solidAgent, fluidagent *fluidAgent)
virtual int FinalizeTimeStep(double time)
solidagent * structuresAgent
double simulationTimeStep
virtual int InitializeTimeStep(double time)
int TransferLoadsToStructures(fluidagent *fluidAgent, solidagent *solidAgent)
virtual int Run(double time)
double simulationFinalTime