Changeset 1a3fa31f in OpenModelica


Ignore:
Timestamp:
2019-12-04T01:11:45+01:00 (4 years ago)
Author:
Adrian Pop <adrian.pop@…>
Parents:
e7ab1da5
git-author:
Adrian Pop <adrian.pop@…> (12/03/19 20:52:13)
git-committer:
Adrian Pop <adrian.pop@…> (12/04/19 01:11:45)
Message:

attempt to fix ticket:5621, use an equation section for reinit instead of an algorithm section

File:
1 edited

Legend:

Unmodified
Added
Removed
  • OMCompiler/Compiler/Template/CodegenFMU.tpl

    r48efb091 r1a3fa31f  
    16281628    Real triggerDSSEvent;
    16291629    Real nextEventTime;
     1630    <%if intGt(listLength(fmiInfo.fmiNumberOfContinuousStates), 0) then "Boolean doReinit(start = false, fixed = true);"%>
    16301631  initial equation
    16311632    flowStartTime = fmi1Functions.fmi1SetTime(fmi1me, time, 1);
     
    16831684      if newStatesAvailable then
    16841685        fmi_x_new := fmi1Functions.fmi1GetContinuousStates(fmi1me, numberOfContinuousStates, flowStatesInputs);
    1685         <%fmiInfo.fmiNumberOfContinuousStates |> continuousStates =>  "reinit(fmi_x["+continuousStates+"], fmi_x_new["+continuousStates+"]);" ;separator="\n"%>
     1686        doReinit := true;
     1687       else
     1688        doReinit := false;
    16861689      end if;
    16871690  >>
    16881691  %>
    16891692    end when;
     1693  <%if intGt(listLength(fmiInfo.fmiNumberOfContinuousStates), 0) then
     1694  <<
     1695  equation
     1696    when doReinit then
     1697      <%fmiInfo.fmiNumberOfContinuousStates |> continuousStates =>  "reinit(fmi_x["+continuousStates+"], fmi_x_new["+continuousStates+"]);" ;separator="\n"%>
     1698    end when;
     1699  >>
     1700  %>
    16901701    annotation(experiment(StartTime=<%fmiExperimentAnnotation.fmiExperimentStartTime%>, StopTime=<%fmiExperimentAnnotation.fmiExperimentStopTime%>, Tolerance=<%fmiExperimentAnnotation.fmiExperimentTolerance%>));
    16911702    annotation (Icon(graphics={
     
    19902001    Real triggerDSSEvent;
    19912002    Real nextEventTime(fixed = true);
     2003    <%if intGt(listLength(fmiInfo.fmiNumberOfContinuousStates), 0) then "Boolean doReinit(start = false, fixed = true);"%>
    19922004  initial equation
    19932005    flowStartTime = fmi2Functions.fmi2SetTime(fmi2me, time, 1);
     
    20542066      if newStatesAvailable then
    20552067        fmi_x_new := fmi2Functions.fmi2GetContinuousStates(fmi2me, numberOfContinuousStates, flowStatesInputs);
    2056         <%fmiInfo.fmiNumberOfContinuousStates |> continuousStates =>  "reinit(fmi_x["+continuousStates+"], fmi_x_new["+continuousStates+"]);" ;separator="\n"%>
     2068        doReinit := true;
     2069      else
     2070        doReinit := false;
    20572071      end if;
    20582072  >>
    20592073  %>
    20602074    end when;
     2075  <%if intGt(listLength(fmiInfo.fmiNumberOfContinuousStates), 0) then
     2076  <<
     2077  equation
     2078    when doReinit then
     2079      <%fmiInfo.fmiNumberOfContinuousStates |> continuousStates =>  "reinit(fmi_x["+continuousStates+"], fmi_x_new["+continuousStates+"]);" ;separator="\n"%>
     2080    end when;
     2081  >>
     2082  %>
    20612083    annotation(experiment(StartTime=<%fmiExperimentAnnotation.fmiExperimentStartTime%>, StopTime=<%fmiExperimentAnnotation.fmiExperimentStopTime%>, Tolerance=<%fmiExperimentAnnotation.fmiExperimentTolerance%>));
    20622084    annotation (Icon(graphics={
Note: See TracChangeset for help on using the changeset viewer.