@@ -122,6 +122,7 @@ let initeqs = generateEquationMemberFuncDecls(initialEquations,"initEquation")
122122 {
123123 public:
124124 <%lastIdentOfPath(modelInfo.name)%>Initialize(IGlobalSettings* globalSettings, boost::shared_ptr<IAlgLoopSolverFactory> nonlinsolverfactory, boost::shared_ptr<ISimData> sim_data, boost::shared_ptr<ISimVars> sim_vars);
125+ <%lastIdentOfPath(modelInfo.name)%>Initialize(<%lastIdentOfPath(modelInfo.name)%>Initialize& instance);
125126 virtual ~<%lastIdentOfPath(modelInfo.name)%>Initialize();
126127 virtual bool initial();
127128 virtual void setInitial(bool);
@@ -200,6 +201,7 @@ case SIMCODE(modelInfo=MODELINFO(__)) then
200201 %>
201202 public:
202203 <%lastIdentOfPath(modelInfo.name)%>Jacobian(IGlobalSettings* globalSettings, boost::shared_ptr<IAlgLoopSolverFactory> nonlinsolverfactory, boost::shared_ptr<ISimData> sim_data, boost::shared_ptr<ISimVars> sim_vars);
204+ <%lastIdentOfPath(modelInfo.name)%>Jacobian(<%lastIdentOfPath(modelInfo.name)%>Jacobian& instance);
203205 virtual ~<%lastIdentOfPath(modelInfo.name)%>Jacobian();
204206
205207 protected:
@@ -310,6 +312,7 @@ case SIMCODE(modelInfo=MODELINFO(__),simulationSettingsOpt = SOME(settings as SI
310312 {
311313 public:
312314 <%lastIdentOfPath(modelInfo.name)%>WriteOutput(IGlobalSettings* globalSettings, boost::shared_ptr<IAlgLoopSolverFactory> nonlinsolverfactory, boost::shared_ptr<ISimData> sim_data, boost::shared_ptr<ISimVars> sim_vars);
315+ <%lastIdentOfPath(modelInfo.name)%>WriteOutput(<%lastIdentOfPath(modelInfo.name)%>WriteOutput& instance);
313316 virtual ~<%lastIdentOfPath(modelInfo.name)%>WriteOutput();
314317
315318
@@ -413,8 +416,11 @@ case SIMCODE(modelInfo=MODELINFO(vars = vars as SIMVARS(__))) then
413416 {
414417 public:
415418 <%lastIdentOfPath(modelInfo.name)%>Extension(IGlobalSettings* globalSettings, boost::shared_ptr<IAlgLoopSolverFactory> nonlinsolverfactory, boost::shared_ptr<ISimData> sim_data, boost::shared_ptr<ISimVars> sim_vars);
419+ <%lastIdentOfPath(modelInfo.name)%>Extension(<%lastIdentOfPath(modelInfo.name)%>Extension &instance);
416420 virtual ~<%lastIdentOfPath(modelInfo.name)%>Extension();
417421
422+ virtual IMixedSystem* clone();
423+
418424 ///Intialization methods from ISystemInitialization
419425 virtual bool initial();
420426 virtual void setInitial(bool);
@@ -534,6 +540,11 @@ case SIMCODE(modelInfo = MODELINFO(__)) then
534540 {
535541 }
536542
543+ <%lastIdentOfPath(modelInfo.name)%>Initialize::<%lastIdentOfPath(modelInfo.name)%>Initialize(<%lastIdentOfPath(modelInfo.name)%>Initialize& instance)
544+ : <%lastIdentOfPath(modelInfo.name)%>(instance)
545+ {
546+ }
547+
537548 <%lastIdentOfPath(modelInfo.name)%>Initialize::~<%lastIdentOfPath(modelInfo.name)%>Initialize()
538549 {
539550 }
@@ -680,6 +691,14 @@ case SIMCODE(modelInfo = MODELINFO(__)) then
680691 {
681692 }
682693
694+ <%lastIdentOfPath(modelInfo.name)%>Jacobian::<%lastIdentOfPath(modelInfo.name)%>Jacobian(<%lastIdentOfPath(modelInfo.name)%>Jacobian& instance)
695+ : <%lastIdentOfPath(modelInfo.name)%>(instance)
696+ , _AColorOfColumn(NULL)
697+ <%initialjacMats%>
698+ <%jacobiansVariableInit(jacobianMatrixes,simCode , &extraFuncs , &extraFuncsDecl, extraFuncsNamespace)%>
699+ {
700+ }
701+
683702 <%lastIdentOfPath(modelInfo.name)%>Jacobian::~<%lastIdentOfPath(modelInfo.name)%>Jacobian()
684703 {
685704 if(_AColorOfColumn)
@@ -736,9 +755,17 @@ case SIMCODE(modelInfo = MODELINFO(__)) then
736755 _historyImpl = new HistoryImplType(*globalSettings);
737756 }
738757
758+ <%lastIdentOfPath(modelInfo.name)%>WriteOutput::<%lastIdentOfPath(modelInfo.name)%>WriteOutput(<%lastIdentOfPath(modelInfo.name)%>WriteOutput& instance)
759+ : <%lastIdentOfPath(modelInfo.name)%>(instance.getGlobalSettings(), instance.getAlgLoopSolverFactory(), instance.getSimData(), instance.getSimVars())
760+ {
761+ _historyImpl = new HistoryImplType(*instance.getGlobalSettings());
762+ }
763+
739764 <%lastIdentOfPath(modelInfo.name)%>WriteOutput::~<%lastIdentOfPath(modelInfo.name)%>WriteOutput()
740765 {
741- delete _historyImpl;
766+ if(_historyImpl)
767+ delete _historyImpl;
768+ _historyImpl = NULL;
742769 }
743770
744771 IHistory* <%lastIdentOfPath(modelInfo.name)%>WriteOutput::getHistory()
@@ -1035,10 +1062,25 @@ case SIMCODE(modelInfo = MODELINFO(__)) then
10351062 {
10361063 }
10371064
1065+ <%classname%>Extension::<%classname%>Extension(<%classname%>Extension& instance)
1066+ : <%classname%>(instance)
1067+ , <%classname%>WriteOutput(instance)
1068+ , <%classname%>Initialize(instance)
1069+ , <%classname%>Jacobian(instance)
1070+ , <%classname%>StateSelection(instance)
1071+
1072+ {
1073+ }
1074+
10381075 <%classname%>Extension::~<%classname%>Extension()
10391076 {
10401077 }
10411078
1079+ IMixedSystem* <%classname%>Extension::clone()
1080+ {
1081+ return new <%classname%>Extension(*this);
1082+ }
1083+
10421084 bool <%classname%>Extension::initial()
10431085 {
10441086 return <%classname%>Initialize::initial();
@@ -3070,7 +3112,7 @@ case "gcc" then
30703112 # Simulations use -O0 by default
30713113 SIM_OR_DYNLOAD_OPT_LEVEL=-O0
30723114 CC=<%CC%>
3073- CXX=<%CXX%>
3115+ CXX=<%CXX%> $(OPENMP_FLAGS)
30743116 RUNTIME_STATIC_LINKING=<%if(Flags.isSet(Flags.RUNTIME_STATIC_LINKING)) then 'ON' else 'OFF'%>
30753117 <%MPIEnvVars%>
30763118
@@ -3454,33 +3496,15 @@ case SIMCODE(modelInfo = MODELINFO(__)) then
34543496 <%additionalConstructorBodyStatements%>
34553497 }
34563498
3457- <%className%>::<%className%>(<%className%> &instance) : SystemDefaultImplementation(instance.getGlobalSettings(),instance._sim_data,instance._sim_vars )
3499+ <%className%>::<%className%>(<%className%> &instance) : SystemDefaultImplementation(instance)
34583500 , _algLoopSolverFactory(instance.getAlgLoopSolverFactory())
3501+ , _pointerToRealVars(instance.getSimVars()->getRealVarsVector())
3502+ , _pointerToIntVars(instance.getSimVars()->getIntVarsVector())
3503+ , _pointerToBoolVars(instance.getSimVars()->getBoolVarsVector())
34593504 <%additionalConstructorVarDefsBuffer%>
34603505 {
34613506 <%generateSimulationCppConstructorContent(simCode, context, extraFuncs, extraFuncsDecl, extraFuncsNamespace, stateDerVectorName, useFlatArrayNotation)%>
3462- <%match modelInfo
3463- case MODELINFO(vars=SIMVARS(__)) then
3464- <<
3465- double* realVars = new double[<%listLength(listAppend(vars.algVars, listAppend(vars.discreteAlgVars, listAppend(vars.aliasVars, vars.paramVars))))%> + _dimContinuousStates + _dimContinuousStates];
3466- int* integerVars = new int[<%listLength(listAppend(listAppend(vars.intAlgVars, vars.intParamVars), vars.intAliasVars))%>];
3467- bool* booleanVars = new bool[<%listLength(listAppend(listAppend(vars.boolAlgVars, vars.boolParamVars), vars.boolAliasVars))%>];
3468- string* stringVars = new string[<%listLength(listAppend(listAppend(vars.stringAlgVars, vars.stringParamVars), vars.stringAliasVars))%>];
3469- instance.getReal(realVars);
3470- instance.getInteger(integerVars);
3471- instance.getBoolean(booleanVars);
3472- instance.getString(stringVars);
3473- setReal(realVars);
3474- setInteger(integerVars);
3475- setBoolean(booleanVars);
3476- setString(stringVars);
3477- delete[] realVars;
3478- delete[] integerVars;
3479- delete[] booleanVars;
3480- delete[] stringVars;
3481- >>
3482- %>
3483- <%additionalConstructorBodyStatements%>
3507+ <%additionalConstructorBodyStatements%>
34843508 }
34853509
34863510 /* Destructor */
0 commit comments