Changeset 4625825 in OpenModelica
- Timestamp:
- 2021-04-07T15:45:39+02:00 (3 years ago)
- Children:
- 1d843055
- Parents:
- 175becc
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
OMCompiler/Compiler/SimCode/SimCodeUtil.mo
r175becc r4625825 867 867 (_, _, equations, _, ouniqueEqIndex, clockedVars, oeqSccMapping, oeqBackendSimCodeMapping, oBackendMapping) := 868 868 createEquationsForSystem(stateeqnsmark, zceqnsmarks, syst, inShared, comps, ouniqueEqIndex, {}, 869 sccOffset, oeqSccMapping, oeqBackendSimCodeMapping, oBackendMapping, true , true);869 sccOffset, oeqSccMapping, oeqBackendSimCodeMapping, oBackendMapping, true); 870 870 sccOffset := listLength(comps) + sccOffset; 871 871 //otempvars := listAppend(clockedVars, otempvars); … … 1450 1450 SimCode.BackendMapping /*backendSimCodeMapping*/, 1451 1451 Integer /*sccOffset*/>; 1452 protected type CreateEquationsForSystemsArg = tuple<BackendDAE.Shared, list<BackendDAE.ZeroCrossing>, Boolean , Boolean>;1452 protected type CreateEquationsForSystemsArg = tuple<BackendDAE.Shared, list<BackendDAE.ZeroCrossing>, Boolean>; 1453 1453 1454 1454 protected function createEquationsForSystems "Some kind of comments would be very helpful!" … … 1477 1477 algorithm 1478 1478 try 1479 arg := (shared, inAllZeroCrossings, true, false);1479 arg := (shared, inAllZeroCrossings, createAlgebraicEquations); 1480 1480 foldArg := (iuniqueEqIndex, {}, {}, {}, {}, itempvars, {}, {}, iBackendMapping, iSccOffset); 1481 1481 foldArg := List.fold1(inSysts, createEquationsForSystems1, arg, foldArg); 1482 if createAlgebraicEquations then1483 arg := (shared, inAllZeroCrossings, false, true);1484 foldArg := List.fold1(inSysts, createEquationsForSystems1, arg, foldArg);1485 end if;1486 1482 (ouniqueEqIndex, oodeEquations, oalgebraicEquations, oallEquations, oequationsForZeroCrossings, otempvars, 1487 1483 oeqSccMapping, oeqBackendSimCodeMapping, obackendMapping, oSccOffset) := foldArg; … … 1517 1513 list<BackendDAE.ZeroCrossing> zeroCrossings; 1518 1514 BackendDAE.Shared shared; 1519 Boolean createAlgebraicEquations , createDynamicEquations;1515 Boolean createAlgebraicEquations; 1520 1516 case BackendDAE.MATCHING(ass1=ass1, comps=comps) 1521 1517 equation … … 1524 1520 end if; 1525 1521 1526 (shared, zeroCrossings, create DynamicEquations, createAlgebraicEquations) = inArg;1522 (shared, zeroCrossings, createAlgebraicEquations) = inArg; 1527 1523 (uniqueEqIndex, odeEquations, algebraicEquations, allEquations, equationsForZeroCrossings, tempvars, 1528 1524 eqSccMapping, eqBackendSimCodeMapping, backendMapping, sccOffset) = inFold; … … 1540 1536 createEquationsForSystem( 1541 1537 stateeqnsmark, zceqnsmarks, syst, shared, comps, uniqueEqIndex, tempvars, 1542 sccOffset, eqSccMapping, eqBackendSimCodeMapping, backendMapping, create DynamicEquations, createAlgebraicEquations);1538 sccOffset, eqSccMapping, eqBackendSimCodeMapping, backendMapping, createAlgebraicEquations); 1543 1539 GC.free(stateeqnsmark); 1544 1540 GC.free(zceqnsmarks); … … 1569 1565 protected type CreateEquationsForSystemArg = 1570 1566 tuple<array<Integer> /*stateeqnsmark*/, array<Integer> /*zceqnsmark*/, 1571 BackendDAE.EqSystem /*syst*/, BackendDAE.Shared /*shared*/, Boolean , Boolean>;1567 BackendDAE.EqSystem /*syst*/, BackendDAE.Shared /*shared*/, Boolean>; 1572 1568 1573 1569 protected function createEquationsForSystem … … 1583 1579 input list<tuple<Integer,Integer>> ieqBackendSimCodeMapping; 1584 1580 input SimCode.BackendMapping iBackendMapping; 1585 input Boolean createDynamicEquations;1586 1581 input Boolean createAlgebraicEquations; 1587 1582 output list<SimCode.SimEqSystem> outOdeEquations; … … 1599 1594 list<list<SimCode.SimEqSystem>> odeEquations, algebraicEquations, allEquations, equationsforZeroCrossings; 1600 1595 algorithm 1601 arg := (stateeqnsmark, zceqnsmark, syst, shared, create DynamicEquations, createAlgebraicEquations);1596 arg := (stateeqnsmark, zceqnsmark, syst, shared, createAlgebraicEquations); 1602 1597 foldArg := (iuniqueEqIndex, {}, {}, {}, {}, itempvars, ieqSccMapping, ieqBackendSimCodeMapping, iBackendMapping, iSccIndex); 1603 1598 foldArg := List.fold2(comps, createEquationsForSystem1, arg, partitionKindToClockIndex(syst.partitionKind), foldArg); … … 1619 1614 input list<list<SimCode.SimEqSystem>> inAllEquations; 1620 1615 input list<list<SimCode.SimEqSystem>> inEquationsforZeroCrossings; 1621 input Boolean createDynamicEquations;1622 1616 output list<list<SimCode.SimEqSystem>> outOdeEquations; 1623 1617 output list<list<SimCode.SimEqSystem>> outAlgebraicEquations; … … 1630 1624 bdynamic := BackendDAEUtil.blockIsDynamic(eqsIdx, stateeqnsmark); 1631 1625 bzceqns := BackendDAEUtil.blockIsDynamic(eqsIdx, zceqnsmark); 1632 if createDynamicEquations then 1633 outOdeEquations := if bdynamic then inEq::inOdeEquations else inOdeEquations; 1634 outAllEquations := inEq::inAllEquations; 1635 outEquationsforZeroCrossings := if bzceqns then inEq::inEquationsforZeroCrossings else inEquationsforZeroCrossings; 1636 else 1637 outOdeEquations := inOdeEquations; 1638 outAllEquations := if not bdynamic then inEq::inAllEquations else inAllEquations; 1639 outEquationsforZeroCrossings := inEquationsforZeroCrossings; 1640 end if; 1626 outOdeEquations := if bdynamic then inEq::inOdeEquations else inOdeEquations; 1641 1627 outAlgebraicEquations := if not bdynamic then inEq::inAlgebraicEquations else inAlgebraicEquations; 1628 outAllEquations := inEq::inAllEquations; 1629 outEquationsforZeroCrossings := if bzceqns then inEq::inEquationsforZeroCrossings else inEquationsforZeroCrossings; 1642 1630 end addEquationsToLists; 1643 1631 … … 1661 1649 list<BackendDAE.Var> varlst; 1662 1650 list<BackendDAE.Equation> eqnlst; 1663 Boolean create DynamicEquations, createAlgebraicEquations, bdynamic, skip;1651 Boolean createAlgebraicEquations, bdynamic, skip; 1664 1652 Boolean debug = false; 1665 1653 algorithm 1666 (stateeqnsmark, zceqnsmark, syst, shared, create DynamicEquations, createAlgebraicEquations) := inArg;1654 (stateeqnsmark, zceqnsmark, syst, shared, createAlgebraicEquations) := inArg; 1667 1655 (uniqueEqIndex, odeEquations, algebraicEquations, allEquations, equationsforZeroCrossings, 1668 1656 tempvars, eqSccMapping, eqBackendSimCodeMapping, backendMapping, sccIndex) := inFold; … … 1712 1700 (odeEquations, algebraicEquations, allEquations, equationsforZeroCrossings) = 1713 1701 addEquationsToLists(equations1, stateeqnsmark, zceqnsmark, {index}, odeEquations, 1714 algebraicEquations, allEquations, equationsforZeroCrossings , createDynamicEquations);1702 algebraicEquations, allEquations, equationsforZeroCrossings); 1715 1703 end if; 1716 1704 then (uniqueEqIndex1, odeEquations, algebraicEquations, allEquations, equationsforZeroCrossings, … … 1730 1718 (odeEquations, algebraicEquations, allEquations, equationsforZeroCrossings) = 1731 1719 addEquationsToLists(equations1, stateeqnsmark, zceqnsmark, {e}, odeEquations, 1732 algebraicEquations, allEquations, equationsforZeroCrossings , createDynamicEquations);1720 algebraicEquations, allEquations, equationsforZeroCrossings); 1733 1721 then 1734 1722 (uniqueEqIndex1, odeEquations, algebraicEquations, allEquations, equationsforZeroCrossings, … … 1747 1735 (odeEquations, algebraicEquations, allEquations, equationsforZeroCrossings) = 1748 1736 addEquationsToLists(equations1, stateeqnsmark, zceqnsmark, {e}, odeEquations, 1749 algebraicEquations, allEquations, equationsforZeroCrossings , createDynamicEquations);1737 algebraicEquations, allEquations, equationsforZeroCrossings); 1750 1738 then 1751 1739 (uniqueEqIndex1, odeEquations, algebraicEquations, allEquations, equationsforZeroCrossings, … … 1765 1753 (odeEquations, algebraicEquations, allEquations, equationsforZeroCrossings) = 1766 1754 addEquationsToLists(equations1, stateeqnsmark, zceqnsmark, {e}, odeEquations, 1767 algebraicEquations, allEquations, equationsforZeroCrossings , createDynamicEquations);1755 algebraicEquations, allEquations, equationsforZeroCrossings); 1768 1756 then 1769 1757 (uniqueEqIndex1, odeEquations, algebraicEquations, allEquations, equationsforZeroCrossings, … … 1800 1788 (odeEquations, algebraicEquations, allEquations, equationsforZeroCrossings) = 1801 1789 addEquationsToLists(equations1, stateeqnsmark, zceqnsmark, {e}, odeEquations, 1802 algebraicEquations, allEquations, equationsforZeroCrossings , createDynamicEquations);1790 algebraicEquations, allEquations, equationsforZeroCrossings); 1803 1791 then 1804 1792 (uniqueEqIndex1, odeEquations, algebraicEquations, allEquations, equationsforZeroCrossings, … … 1821 1809 (odeEquations, algebraicEquations, allEquations, equationsforZeroCrossings) = 1822 1810 addEquationsToLists(equations1, stateeqnsmark, zceqnsmark, {index}, odeEquations, 1823 algebraicEquations, allEquations, equationsforZeroCrossings , createDynamicEquations);1811 algebraicEquations, allEquations, equationsforZeroCrossings); 1824 1812 end if; 1825 1813 then … … 1839 1827 (odeEquations, algebraicEquations, allEquations, equationsforZeroCrossings) = 1840 1828 addEquationsToLists(noDiscEquations1, stateeqnsmark, zceqnsmark, eqnslst, odeEquations, 1841 algebraicEquations, allEquations, equationsforZeroCrossings , createDynamicEquations);1829 algebraicEquations, allEquations, equationsforZeroCrossings); 1842 1830 then 1843 1831 (uniqueEqIndex1, odeEquations, algebraicEquations, allEquations, equationsforZeroCrossings, tempvars,
Note: See TracChangeset
for help on using the changeset viewer.