@@ -1960,21 +1960,20 @@ case SIMCODE(modelInfo = MODELINFO(__)) then
19601960 void <%lastIdentOfPath(modelInfo.name)%>::writeOutput(const OUTPUT command)
19611961 {
19621962
1963- //Write head line
1963+ //Write head line
19641964 if (command & HEAD_LINE)
19651965 {
1966- vector<string> head;
1967- head+= <%writeoutput1(modelInfo)%>
1968- _historyImpl->write(head);
1966+ vector<string> head;
1967+ head+= <%writeoutput1(modelInfo)%>
1968+ _historyImpl->write(head);
19691969 }
19701970 //Write the current values
19711971 else
19721972 {
1973-
1974- HistoryImplType::value_type_v v(<%numAlgvars(modelInfo)%>+<%numStatevars(modelInfo)%>);
1975- HistoryImplType::value_type_dv v2(<%numDerivativevars(modelInfo)%>);
1976- <%writeoutput2(modelInfo)%>
1977- <%if Flags.isSet(Flags.WRITE_TO_BUFFER) then
1973+ HistoryImplType::value_type_v v(<%numAlgvars(modelInfo)%>+<%numInOutvars(modelInfo)%>+<%numAliasvars(modelInfo)%>+<%numStatevars(modelInfo)%>);
1974+ HistoryImplType::value_type_dv v2(<%numDerivativevars(modelInfo)%>);
1975+ <%writeoutput2(modelInfo)%>
1976+ <%if Flags.isSet(Flags.WRITE_TO_BUFFER) then
19781977 <<
19791978 HistoryImplType::value_type_r v3(<%numResidues(allEquations)%>);
19801979 <%(allEquations |> eqs => (eqs |> eq => writeoutputAlgloopsolvers(eq,simCode));separator="\n ")%>
@@ -2071,13 +2070,13 @@ case SIMCODE(modelInfo=MODELINFO(__), extObjInfo=EXTOBJINFO(__)) then
20712070 <<
20722071 #include "ReduceDAE/Interfaces/IReduceDAE.h"
20732072 #include "DataExchange/Policies/BufferReaderWriter.h"
2074- typedef HistoryImpl<BufferReaderWriter,<%numAlgvars(modelInfo)%>+<%numStatevars(modelInfo)%>,<%numDerivativevars(modelInfo)%>,<%numResidues(allEquations)%>> HistoryImplType;
2073+ typedef HistoryImpl<BufferReaderWriter,<%numAlgvars(modelInfo)%>+<%numInOutvars(modelInfo)%>+<%numAliasvars(modelInfo)%>+<% numStatevars(modelInfo)%>,<%numDerivativevars(modelInfo)%>,<%numResidues(allEquations)%>> HistoryImplType;
20752074
20762075 >>
20772076 else
20782077 <<
20792078 #include "DataExchange/Policies/TextfileWriter.h"
2080- typedef HistoryImpl<TextFileWriter,<%numAlgvars(modelInfo)%>+<%numStatevars(modelInfo)%>,<%numDerivativevars(modelInfo)%>,0> HistoryImplType;
2079+ typedef HistoryImpl<TextFileWriter,<%numAlgvars(modelInfo)%>+<%numInOutvars(modelInfo)%>+<%numAliasvars(modelInfo)%>+<% numStatevars(modelInfo)%>,<%numDerivativevars(modelInfo)%>,0> HistoryImplType;
20812080
20822081 >>%>
20832082 /*****************************************************************************
@@ -3420,12 +3419,6 @@ case MODELINFO(vars=SIMVARS(__)) then
34203419 (vars.boolAlgVars |> SIMVAR(__) =>
34213420 ' " <%crefStr(name)%>" '
34223421 ;separator=","),
3423- (vars.stateVars |> SIMVAR(__) =>
3424- ' " <%crefStr(name)%>" '
3425- ;separator=","),
3426- (vars.derivativeVars |> SIMVAR(__) =>
3427- ' " <%crefStr(name)%>" '
3428- ;separator=","),
34293422 (vars.inputVars |> SIMVAR(__) =>
34303423 ' " <%crefStr(name)%>" '
34313424 ;separator=","),
@@ -3440,6 +3433,12 @@ case MODELINFO(vars=SIMVARS(__)) then
34403433 ;separator=","),
34413434 (vars.boolAliasVars |> SIMVAR(__) =>
34423435 ' " <%crefStr(name)%>" '
3436+ ;separator=","),
3437+ (vars.stateVars |> SIMVAR(__) =>
3438+ ' " <%crefStr(name)%>" '
3439+ ;separator=","),
3440+ (vars.derivativeVars |> SIMVAR(__) =>
3441+ ' " <%crefStr(name)%>" '
34433442 ;separator=",")
34443443 }
34453444 ;separator=","%>;
@@ -3502,6 +3501,24 @@ case MODELINFO(varInfo=VARINFO(__)) then
35023501>>
35033502end numAlgvars;
35043503
3504+ template numInOutvars(ModelInfo modelInfo)
3505+ ::=
3506+ match modelInfo
3507+ case MODELINFO(varInfo=VARINFO(__)) then
3508+ <<
3509+ <%varInfo.numInVars%>+<%varInfo.numOutVars%>
3510+ >>
3511+ end numInOutvars;
3512+
3513+ template numAliasvars(ModelInfo modelInfo)
3514+ ::=
3515+ match modelInfo
3516+ case MODELINFO(varInfo=VARINFO(__)) then
3517+ <<
3518+ <%varInfo.numAlgAliasVars%>+<%varInfo.numIntAliasVars%>+<%varInfo.numBoolAliasVars%>
3519+ >>
3520+ end numAliasvars;
3521+
35053522template numAlgvar(ModelInfo modelInfo)
35063523::=
35073524match modelInfo
@@ -3529,6 +3546,51 @@ case MODELINFO(varInfo=VARINFO(__)) then
35293546>>
35303547end numBoolAlgvar;
35313548
3549+ template numInputvar(ModelInfo modelInfo)
3550+ ::=
3551+ match modelInfo
3552+ case MODELINFO(varInfo=VARINFO(__)) then
3553+ <<
3554+ <%varInfo.numInVars%>
3555+ >>
3556+ end numInputvar;
3557+
3558+ template numOutputvar(ModelInfo modelInfo)
3559+ ::=
3560+ match modelInfo
3561+ case MODELINFO(varInfo=VARINFO(__)) then
3562+ <<
3563+ <%varInfo.numOutVars%>
3564+ >>
3565+ end numOutputvar;
3566+
3567+ template numAliasvar(ModelInfo modelInfo)
3568+ ::=
3569+ match modelInfo
3570+ case MODELINFO(varInfo=VARINFO(__)) then
3571+ <<
3572+ <%varInfo.numAlgAliasVars%>
3573+ >>
3574+ end numAliasvar;
3575+
3576+ template numIntAliasvar(ModelInfo modelInfo)
3577+ ::=
3578+ match modelInfo
3579+ case MODELINFO(varInfo=VARINFO(__)) then
3580+ <<
3581+ <%varInfo.numIntAliasVars%>
3582+ >>
3583+ end numIntAliasvar;
3584+
3585+ template numBoolAliasvar(ModelInfo modelInfo)
3586+ ::=
3587+ match modelInfo
3588+ case MODELINFO(varInfo=VARINFO(__)) then
3589+ <<
3590+ <%varInfo.numBoolAliasVars%>
3591+ >>
3592+ end numBoolAliasvar;
3593+
35323594template numDerivativevars(ModelInfo modelInfo)
35333595::=
35343596match modelInfo
@@ -3538,6 +3600,15 @@ case MODELINFO(varInfo=VARINFO(__)) then
35383600>>
35393601end numDerivativevars;
35403602
3603+ template getAliasVar(AliasVariable aliasvar)
3604+ "Returns the alias Attribute of ScalarVariable."
3605+ ::=
3606+ match aliasvar
3607+ case NOALIAS(__) then ' noAlias'
3608+ case ALIAS(__) then ' <% cref(varName)%> '
3609+ case NEGATEDALIAS(__) then ' -<% cref(varName)%> '
3610+ else ' noAlias'
3611+ end getAliasVar;
35413612
35423613template writeoutput2(ModelInfo modelInfo)
35433614
@@ -3547,13 +3618,29 @@ case MODELINFO(vars=SIMVARS(__)) then
35473618
35483619
35493620 <<
3621+ const int algVarsStart = 0;
3622+ const int intAlgVarsStart = algVarsStart + <%numAlgvar(modelInfo)%>;
3623+ const int boolAlgVarsStart = intAlgVarsStart + <%numIntAlgvar(modelInfo)%>;
3624+ const int inputVarsStart = boolAlgVarsStart + <%numBoolAlgvar(modelInfo)%>;
3625+ const int outputVarsStart = inputVarsStart + <%numInputvar(modelInfo)%>;
3626+ const int aliasVarsStart = outputVarsStart + <%numOutputvar(modelInfo)%>;
3627+ const int intAliasVarsStart = aliasVarsStart + <%numAliasvar(modelInfo)%>;
3628+ const int boolAliasVarsStart = intAliasVarsStart + <%numIntAliasvar(modelInfo)%>;
3629+ const int stateVarsStart = boolAliasVarsStart + <%numBoolAliasvar(modelInfo)%>;
3630+
3631+ <%vars.algVars |> SIMVAR(__) hasindex i0 =>' v(algVarsStart+<% i0%> )=<% cref(name)%> ;' %>
3632+ <%vars.intAlgVars |> SIMVAR(__) hasindex i1 =>' v(intAlgVarsStart+<% i1%> )=<% cref(name)%> ;' %>
3633+ <%vars.boolAlgVars |> SIMVAR(__) hasindex i2 =>' v(boolAlgVarsStart+<% i2%> )=<% cref(name)%> ;' %>
3634+
3635+ <%vars.inputVars |> SIMVAR(__) hasindex i3 =>' v(inputVarsStart+<% i3%> )=<% cref(name)%> ;' %>
3636+ <%vars.outputVars |> SIMVAR(__) hasindex i4 =>' v(outputVarsStart+<% i4%> )=<% cref(name)%> ;' %>
35503637
3551- <%vars.algVars |> SIMVAR(__) hasindex i0 =>' v(<% i0 %> )=<% cref(name )%> ;' %>
3552- <%vars.intAlgVars |> SIMVAR(__) hasindex i1 =>' v(<% i1 %> +<% numAlgvar(modelInfo) %> )=<% cref(name )%> ;' %>
3553- <%vars.boolAlgVars |> SIMVAR(__)hasindex i2 =>' v(<% i2 %> + <% numAlgvar(modelInfo) %> + <% numIntAlgvar(modelInfo) %> ) =<% cref(name )%> ;' %>
3554- <%(vars.stateVars |> SIMVAR(__) hasindex i3 => ' v( <% i3 %> + <% numAlgvar(modelInfo) %> + <% numIntAlgvar(modelInfo) %> + <% numBoolAlgvar(modelInfo) %> )=__z[ <% index %> ]; ' )%>
3555- <%(vars.derivativeVars |> SIMVAR(__) hasindex i4 =>' v2( <% i4 %> )=__zDot [<% index%> ]; ' )%>
3556-
3638+ <%vars.aliasVars |> SIMVAR(__) hasindex i5 =>' v(aliasVarsStart+ <% i5 %> )=<% getAliasVar(aliasvar )%> ;' %>
3639+ <%vars.intAliasVars |> SIMVAR(__) hasindex i6 =>' v(intAliasVarsStart +<% i6 %> )=<% getAliasVar(aliasvar )%> ;' %>
3640+ <%vars.boolAliasVars |> SIMVAR(__) hasindex i7 =>' v(boolAliasVarsStart+ <% i7 %> ) =<% getAliasVar(aliasvar )%> ;' %>
3641+
3642+ <%(vars.stateVars |> SIMVAR(__) hasindex i8 =>' v(stateVarsStart+ <% i8 %> )=__z [<% index%> ]; ' )%>
3643+ <%(vars.derivativeVars |> SIMVAR(__) hasindex i9 => ' v2( <% i9 %> )=__zDot[ <% index %> ]; ' )%>
35573644 >>
35583645end writeoutput2;
35593646
0 commit comments