1 #ifndef __SIMULATION_H__ 2 #define __SIMULATION_H__ 22 template<
typename DomainBaseT>
30 typedef typename DomainBaseType::GridType
GridType;
31 typedef typename DomainBaseType::StateType
StateType;
60 application(
int numArgs,
char **argList,MPI_Comm mpiCommunicator) :
61 pcpp::parallelprogram(numArgs,argList,mpiCommunicator),
62 errorState(0), iStep(0), numStepsMax(0), numStepsIO(0), numStepsStatus(0)
69 int initializeRunCode = InitializeRun();
70 if(initializeRunCode){
71 ErrOut(
"InitializeRun returned error code.\n");
72 return(initializeRunCode);
74 bool keepGoing = !Finished();
76 int initStepCode = InitializeStep();
78 ErrOut(
"InitializeStep returned error code.\n");
81 int advanceCode = Advance();
83 ErrOut(
"Advance returned error code.\n");
86 int finalizeStepCode = FinalizeStep();
88 ErrOut(
"FinalizeStep returned error code.\n");
89 return(finalizeStepCode);
91 keepGoing = !Finished();
93 int finalizeRunCode = FinalizeRun();
95 ErrOut(
"FinalizeStep returned error code.\n");
96 return(finalizeRunCode);
106 for(
int iDomain = 0;iDomain < domainInfo.
numDomains;iDomain++)
108 DomainBaseType &appDomain(appDomains[iDomain]);
109 AdvancerType &domainAdvancer(*domainAdvancers[iDomain]);
120 int initCode = InitializeDomains();
128 FunctionEntry(
"InitDomains");
130 return(RestartDomains());
132 for(
int iDomain = 0;iDomain < domainInfo.
numDomains;iDomain++)
134 DomainBaseType &appDomain(appDomains[iDomain]);
135 DomainInitializerType &domainInitializer(domainInitializers[iDomain]);
142 FunctionExit(
"InitDomains");
143 return(WriteDomains());
147 FunctionEntry(
"Advance");
148 int advanceCode = AdvanceDomains();
152 FunctionExit(
"Advance");
157 FunctionEntry(
"FinalizeRun");
158 int finalizeCode = FinalizeDomains();
160 return(finalizeCode);
162 FunctionExit(
"FinalizeRun");
167 FunctionEntry(
"FinalizeDomains");
168 bool doRestart = !RestartStep();
172 FunctionExit(
"FinalizeDomains");
179 FunctionEntry(
"InitializeStep");
180 for(
int iDomain = 0;iDomain < domainInfo.
numDomains;iDomain++)
182 DomainBaseType &appDomain(appDomains[iDomain]);
183 AdvancerType &domainAdvancer(*domainAdvancers[iDomain]);
186 return(advanceInitCode);
189 FunctionExit(
"InitializeStep");
194 FunctionEntry(
"FinalizeStep");
195 for(
int iDomain = 0;iDomain < domainInfo.
numDomains;iDomain++)
197 DomainBaseType &appDomain(appDomains[iDomain]);
198 AdvancerType &domainAdvancer(*domainAdvancers[iDomain]);
200 if(advanceFinalizeCode){
201 return(advanceFinalizeCode);
205 int writeOutputCode = WriteDomains();
207 return(writeOutputCode);
211 int writeRestartCode = WriteRestart();
212 if(writeRestartCode){
213 return(writeRestartCode);
216 FunctionExit(
"FinalizeStep");
virtual int InitializeSimulation()
virtual int AdvanceDomain()
domain::info DomainInfoType
virtual int ConfigureApplication()
virtual int RestartDomains()
virtual int InitializeApplication()
virtual int InitializeDomains()
virtual bool RestartStep()
virtual int FinalizeApplication()
virtual int InitializeRun()
std::vector< DomainBaseType > domainvector
DomainInfoType DomainInfo()
DomainBaseType::GridType GridType
Base program definitions for Plascom2.
virtual int InitializeAdvance()
virtual int FinalizeAdvance()
application(int numArgs, char **argList, MPI_Comm mpiCommunicator)
virtual int WriteDomains()
advancervector domainAdvancers
virtual int InitializeDomain(DomainType &inDomain)
virtual bool OutputStep()
virtual int FinalizeRun()
DomainBaseType::StateType StateType
std::vector< DomainInitializerType > initializervector
DomainBaseT DomainBaseType
virtual int ConfigureDomains()
virtual int WriteRestart()
virtual int ConfigureSimulation()
virtual int RunApplication()
virtual int FinalizeStep()
domain::Initializer< DomainBaseType > DomainInitializerType
DomainInfoType domainInfo
GeometryInfoType geometryInfo
virtual int ReadDomains()
advancer::base< DomainBaseType > AdvancerType
initializervector domainInitializers
virtual int InitializeStep()
virtual int AdvanceDomains()
fixtures::ConfigurationType appConfig
std::vector< AdvancerType * > advancervector
virtual int FinalizeDomains()
geometry::info GeometryInfoType
domainvector & GetDomains()