diff --git a/src/OMSimulatorLib/Flags.cpp b/src/OMSimulatorLib/Flags.cpp index e089ffc07..b33c08210 100644 --- a/src/OMSimulatorLib/Flags.cpp +++ b/src/OMSimulatorLib/Flags.cpp @@ -59,7 +59,7 @@ oms::Flags::FlagValues::FlagValues() : dumpAlgLoops(false), emitEvents(true), ignoreInitialUnknowns(false), - initialStepSize(1e-6), + initialStepSize(1e-3), inputExtrapolation(false), intervals(100), masterAlgorithm(oms_solver_wc_ma), diff --git a/src/OMSimulatorLib/OMSimulator.cpp b/src/OMSimulatorLib/OMSimulator.cpp index 9a4509541..dbb53415a 100644 --- a/src/OMSimulatorLib/OMSimulator.cpp +++ b/src/OMSimulatorLib/OMSimulator.cpp @@ -1224,14 +1224,23 @@ oms_status_enu_t SimulateSingleFMU(const filesystem::path& path) status = oms_setTolerance(modelName.c_str(), defaultExperiment.tolerance, defaultExperiment.tolerance); if(oms_status_ok != status) return logError("oms_setTolerance failed"); - // set the initial, minimum and maximum stepSize - double initialStepSize = oms::Flags::InitialStepSize().value; - double minimumStepSize = oms::Flags::MinimumStepSize().value; - + double refStepSize; + // priority order commandLine > defaultExperiment > default if (oms::Flags::MaximumStepSize().given) - status = oms_setVariableStepSize(modelName.c_str(), initialStepSize, minimumStepSize, oms::Flags::MaximumStepSize().value); + refStepSize = oms::Flags::MaximumStepSize().value; + else if (defaultExperiment.stepSize > 0.0) + refStepSize = defaultExperiment.stepSize; else - status = oms_setVariableStepSize(modelName.c_str(), initialStepSize, minimumStepSize, defaultExperiment.stepSize); + refStepSize = 1e-3; // default value of maximum step size + + /* + *scale the initial, minimum stepSize with reference step size, if maximumStepSize is smaller than default value of maximum step size (1e-3) or if user has provided maximum step size via command line argument, then initial and minimum step size will also be scaled down accordingly. + *This is to avoid the case where initial or minimum step size is larger than maximum step size which can lead to simulation failure. + */ + double initialStepSize = oms::Flags::InitialStepSize().value * refStepSize; + double minimumStepSize = oms::Flags::MinimumStepSize().value * refStepSize; + + status = oms_setVariableStepSize(modelName.c_str(), initialStepSize, minimumStepSize, refStepSize); if(oms_status_ok != status) return logError("oms_setVariableStepSize failed"); if (oms::Flags::Intervals().given) diff --git a/testsuite/api/addExternalResources1.lua b/testsuite/api/addExternalResources1.lua index 78bd5c05e..98dbf6704 100644 --- a/testsuite/api/addExternalResources1.lua +++ b/testsuite/api/addExternalResources1.lua @@ -145,7 +145,7 @@ print(src) -- relativeTolerance="0.0001" -- minimumStepSize="1e-12" -- maximumStepSize="0.001" --- initialStepSize="1e-06" /> +-- initialStepSize="1e-03" /> -- -- -- @@ -383,7 +383,7 @@ print(src) -- relativeTolerance="0.0001" -- minimumStepSize="1e-12" -- maximumStepSize="0.001" --- initialStepSize="1e-06" /> +-- initialStepSize="1e-03" /> -- -- -- diff --git a/testsuite/api/addExternalResources3.py b/testsuite/api/addExternalResources3.py index 159a3fb29..878683ff8 100644 --- a/testsuite/api/addExternalResources3.py +++ b/testsuite/api/addExternalResources3.py @@ -149,7 +149,7 @@ ## relativeTolerance="0.0001" ## minimumStepSize="1e-12" ## maximumStepSize="0.001" -## initialStepSize="1e-06" /> +## initialStepSize="1e-03" /> ## ## ## @@ -387,7 +387,7 @@ ## relativeTolerance="0.0001" ## minimumStepSize="1e-12" ## maximumStepSize="0.001" -## initialStepSize="1e-06" /> +## initialStepSize="1e-03" /> ## ## ## diff --git a/testsuite/api/buses.lua b/testsuite/api/buses.lua index 169023092..003f020d4 100644 --- a/testsuite/api/buses.lua +++ b/testsuite/api/buses.lua @@ -130,7 +130,7 @@ printStatus(status, 0) -- -- -- --- +-- -- -- -- @@ -161,7 +161,7 @@ printStatus(status, 0) -- -- -- --- +-- -- -- -- @@ -214,7 +214,7 @@ printStatus(status, 0) -- -- -- --- +-- -- -- -- @@ -244,7 +244,7 @@ printStatus(status, 0) -- -- -- --- +-- -- -- -- diff --git a/testsuite/api/buses.py b/testsuite/api/buses.py index cd90838ac..8c06610fa 100644 --- a/testsuite/api/buses.py +++ b/testsuite/api/buses.py @@ -130,7 +130,7 @@ def printStatus(status, expected): ## ## ## -## +## ## ## ## @@ -161,7 +161,7 @@ def printStatus(status, expected): ## ## ## -## +## ## ## ## @@ -214,7 +214,7 @@ def printStatus(status, expected): ## ## ## -## +## ## ## ## @@ -244,7 +244,7 @@ def printStatus(status, expected): ## ## ## -## +## ## ## ## diff --git a/testsuite/api/connections.lua b/testsuite/api/connections.lua index 2deee4815..487a101d0 100644 --- a/testsuite/api/connections.lua +++ b/testsuite/api/connections.lua @@ -111,7 +111,7 @@ printStatus(status, 0) -- -- -- --- +-- -- -- -- @@ -133,7 +133,7 @@ printStatus(status, 0) -- -- -- --- +-- -- -- -- @@ -174,7 +174,7 @@ printStatus(status, 0) -- -- -- --- +-- -- -- -- @@ -196,7 +196,7 @@ printStatus(status, 0) -- -- -- --- +-- -- -- -- diff --git a/testsuite/api/connections.py b/testsuite/api/connections.py index 6fe97669c..c7ba47f15 100644 --- a/testsuite/api/connections.py +++ b/testsuite/api/connections.py @@ -112,7 +112,7 @@ def printStatus(status, expected): ## ## ## -## +## ## ## ## @@ -134,7 +134,7 @@ def printStatus(status, expected): ## ## ## -## +## ## ## ## @@ -175,7 +175,7 @@ def printStatus(status, expected): ## ## ## -## +## ## ## ## @@ -197,7 +197,7 @@ def printStatus(status, expected): ## ## ## -## +## ## ## ## diff --git a/testsuite/api/deleteReferencesInSSD1.lua b/testsuite/api/deleteReferencesInSSD1.lua index 6ee84210f..83dcc7c15 100644 --- a/testsuite/api/deleteReferencesInSSD1.lua +++ b/testsuite/api/deleteReferencesInSSD1.lua @@ -131,7 +131,7 @@ oms_delete("deleteResources") -- relativeTolerance="0.0001" -- minimumStepSize="1e-12" -- maximumStepSize="0.001" --- initialStepSize="1e-06" /> +-- initialStepSize="1e-03" /> -- -- -- @@ -361,7 +361,7 @@ oms_delete("deleteResources") -- relativeTolerance="0.0001" -- minimumStepSize="1e-12" -- maximumStepSize="0.001" --- initialStepSize="1e-06" /> +-- initialStepSize="1e-03" /> -- -- -- diff --git a/testsuite/api/deleteResourcesInSSP1.lua b/testsuite/api/deleteResourcesInSSP1.lua index 7e56cb056..df14d409f 100644 --- a/testsuite/api/deleteResourcesInSSP1.lua +++ b/testsuite/api/deleteResourcesInSSP1.lua @@ -128,7 +128,7 @@ oms_delete("deleteResources") -- relativeTolerance="0.0001" -- minimumStepSize="1e-12" -- maximumStepSize="0.001" --- initialStepSize="1e-06" /> +-- initialStepSize="1e-03" /> -- -- -- @@ -358,7 +358,7 @@ oms_delete("deleteResources") -- relativeTolerance="0.0001" -- minimumStepSize="1e-12" -- maximumStepSize="0.001" --- initialStepSize="1e-06" /> +-- initialStepSize="1e-03" /> -- -- -- diff --git a/testsuite/api/test01.lua b/testsuite/api/test01.lua index 06d6a0950..8ceceee1f 100644 --- a/testsuite/api/test01.lua +++ b/testsuite/api/test01.lua @@ -95,7 +95,7 @@ printStatus(status, 3) -- -- -- --- +-- -- -- -- @@ -131,7 +131,7 @@ printStatus(status, 3) -- -- -- --- +-- -- -- -- @@ -155,7 +155,7 @@ printStatus(status, 3) -- -- -- --- +-- -- -- -- diff --git a/testsuite/api/test01.py b/testsuite/api/test01.py index f871d891e..954cf90c6 100644 --- a/testsuite/api/test01.py +++ b/testsuite/api/test01.py @@ -95,7 +95,7 @@ def printStatus(status, expected): ## ## ## -## +## ## ## ## @@ -131,7 +131,7 @@ def printStatus(status, expected): ## ## ## -## +## ## ## ## @@ -155,7 +155,7 @@ def printStatus(status, expected): ## ## ## -## +## ## ## ## diff --git a/testsuite/api/test_omsExport.lua b/testsuite/api/test_omsExport.lua index a1480eb42..5223cc6fd 100644 --- a/testsuite/api/test_omsExport.lua +++ b/testsuite/api/test_omsExport.lua @@ -70,7 +70,7 @@ printStatus(status, 0) -- -- -- --- +-- -- -- -- @@ -97,7 +97,7 @@ printStatus(status, 0) -- -- -- --- +-- -- -- -- diff --git a/testsuite/api/test_omsExport.py b/testsuite/api/test_omsExport.py index f1d2b9467..7baf533a8 100644 --- a/testsuite/api/test_omsExport.py +++ b/testsuite/api/test_omsExport.py @@ -71,7 +71,7 @@ def printStatus(status, expected): ## ## ## -## +## ## ## ## @@ -98,7 +98,7 @@ def printStatus(status, expected): ## ## ## -## +## ## ## ## diff --git a/testsuite/simulation/deleteConnector.lua b/testsuite/simulation/deleteConnector.lua index 9cdc69c53..263118def 100644 --- a/testsuite/simulation/deleteConnector.lua +++ b/testsuite/simulation/deleteConnector.lua @@ -97,7 +97,7 @@ print(src) -- -- -- --- +-- -- -- -- @@ -146,7 +146,7 @@ print(src) -- -- -- --- +-- -- -- -- @@ -213,7 +213,7 @@ print(src) -- -- -- --- +-- -- -- -- @@ -246,7 +246,7 @@ print(src) -- -- -- --- +-- -- -- -- diff --git a/testsuite/simulation/deleteConnector1.lua b/testsuite/simulation/deleteConnector1.lua index 3f6880d29..959eb1c4d 100644 --- a/testsuite/simulation/deleteConnector1.lua +++ b/testsuite/simulation/deleteConnector1.lua @@ -125,7 +125,7 @@ oms_delete("deleteConnector") -- relativeTolerance="0.0001" -- minimumStepSize="1e-12" -- maximumStepSize="0.001" --- initialStepSize="1e-06" /> +-- initialStepSize="1e-03" /> -- -- -- @@ -187,7 +187,7 @@ oms_delete("deleteConnector") -- relativeTolerance="0.0001" -- minimumStepSize="1e-12" -- maximumStepSize="0.001" --- initialStepSize="1e-06" /> +-- initialStepSize="1e-03" /> -- -- -- diff --git a/testsuite/simulation/deleteReferencesAndStartValues.lua b/testsuite/simulation/deleteReferencesAndStartValues.lua index 3eeeb3576..b0c212f96 100644 --- a/testsuite/simulation/deleteReferencesAndStartValues.lua +++ b/testsuite/simulation/deleteReferencesAndStartValues.lua @@ -159,7 +159,7 @@ oms_delete("deleteResources") -- relativeTolerance="0.0001" -- minimumStepSize="1e-12" -- maximumStepSize="0.001" --- initialStepSize="1e-06" /> +-- initialStepSize="1e-03" /> -- -- -- diff --git a/testsuite/simulation/deleteStartValues.lua b/testsuite/simulation/deleteStartValues.lua index 085873800..4af6d46a8 100644 --- a/testsuite/simulation/deleteStartValues.lua +++ b/testsuite/simulation/deleteStartValues.lua @@ -112,7 +112,7 @@ print(src) -- -- -- --- +-- -- -- -- @@ -164,7 +164,7 @@ print(src) -- -- -- --- +-- -- -- -- @@ -222,7 +222,7 @@ print(src) -- -- -- --- +-- -- -- -- @@ -258,7 +258,7 @@ print(src) -- -- -- --- +-- -- -- -- diff --git a/testsuite/simulation/deleteStartValuesInSSV.lua b/testsuite/simulation/deleteStartValuesInSSV.lua index 886795ea5..1125b9f52 100644 --- a/testsuite/simulation/deleteStartValuesInSSV.lua +++ b/testsuite/simulation/deleteStartValuesInSSV.lua @@ -104,7 +104,7 @@ oms_delete("deleteStartValuesInSSV") -- -- -- --- +-- -- -- -- diff --git a/testsuite/simulation/deleteStartValuesInSSV1.lua b/testsuite/simulation/deleteStartValuesInSSV1.lua index 82fb5dad7..aeecded0f 100644 --- a/testsuite/simulation/deleteStartValuesInSSV1.lua +++ b/testsuite/simulation/deleteStartValuesInSSV1.lua @@ -154,7 +154,7 @@ oms_delete("deleteStartValuesInSSV") -- relativeTolerance="0.0001" -- minimumStepSize="1e-12" -- maximumStepSize="0.001" --- initialStepSize="1e-06" /> +-- initialStepSize="1e-03" /> -- -- -- diff --git a/testsuite/simulation/deleteStartValuesInSSV2.lua b/testsuite/simulation/deleteStartValuesInSSV2.lua index 2ecda466e..cacecb9b4 100644 --- a/testsuite/simulation/deleteStartValuesInSSV2.lua +++ b/testsuite/simulation/deleteStartValuesInSSV2.lua @@ -132,7 +132,7 @@ oms_delete("deleteStartValuesInSSV") -- relativeTolerance="0.0001" -- minimumStepSize="1e-12" -- maximumStepSize="0.001" --- initialStepSize="1e-06" /> +-- initialStepSize="1e-03" /> -- -- -- diff --git a/testsuite/simulation/import_export_parameters4.lua b/testsuite/simulation/import_export_parameters4.lua index 518dd6bb7..c15930b40 100644 --- a/testsuite/simulation/import_export_parameters4.lua +++ b/testsuite/simulation/import_export_parameters4.lua @@ -213,7 +213,7 @@ oms_delete("import_export_parameters") -- relativeTolerance="0.0001" -- minimumStepSize="1e-12" -- maximumStepSize="0.001" --- initialStepSize="1e-06" /> +-- initialStepSize="1e-03" /> -- -- -- diff --git a/testsuite/simulation/import_export_parameters_inline.lua b/testsuite/simulation/import_export_parameters_inline.lua index 0eec97fa1..3c43d04c4 100644 --- a/testsuite/simulation/import_export_parameters_inline.lua +++ b/testsuite/simulation/import_export_parameters_inline.lua @@ -180,7 +180,7 @@ oms_delete("import_export_parameters") -- -- -- --- +-- -- -- -- diff --git a/testsuite/simulation/import_export_parameters_to_ssv.lua b/testsuite/simulation/import_export_parameters_to_ssv.lua index bcccba487..2142a9799 100644 --- a/testsuite/simulation/import_export_parameters_to_ssv.lua +++ b/testsuite/simulation/import_export_parameters_to_ssv.lua @@ -154,7 +154,7 @@ oms_delete("import_export_parameters") -- -- -- --- +-- -- -- -- diff --git a/testsuite/simulation/import_export_signalFilter.lua b/testsuite/simulation/import_export_signalFilter.lua index edf7fbdad..86d48d734 100644 --- a/testsuite/simulation/import_export_signalFilter.lua +++ b/testsuite/simulation/import_export_signalFilter.lua @@ -122,7 +122,7 @@ oms_delete("model") -- relativeTolerance="0.0001" -- minimumStepSize="1e-12" -- maximumStepSize="0.001" --- initialStepSize="1e-06" /> +-- initialStepSize="1e-03" /> -- -- -- @@ -153,7 +153,7 @@ oms_delete("model") -- relativeTolerance="0.0001" -- minimumStepSize="1e-12" -- maximumStepSize="0.001" --- initialStepSize="1e-06" /> +-- initialStepSize="1e-03" /> -- -- -- diff --git a/testsuite/simulation/referenceResources1.lua b/testsuite/simulation/referenceResources1.lua index 6bcbb37b7..af8e601d2 100644 --- a/testsuite/simulation/referenceResources1.lua +++ b/testsuite/simulation/referenceResources1.lua @@ -179,7 +179,7 @@ oms_delete("referenceResources1") -- relativeTolerance="0.0001" -- minimumStepSize="1e-12" -- maximumStepSize="0.001" --- initialStepSize="1e-06" /> +-- initialStepSize="1e-03" /> -- -- -- diff --git a/testsuite/simulation/rename.lua b/testsuite/simulation/rename.lua index a153e954a..98afb03e4 100644 --- a/testsuite/simulation/rename.lua +++ b/testsuite/simulation/rename.lua @@ -114,7 +114,7 @@ print("info: model.root_1.add_1.u2 : " .. oms_getReal("model.root -- -- -- --- +-- -- -- -- @@ -232,7 +232,7 @@ print("info: model.root_1.add_1.u2 : " .. oms_getReal("model.root -- -- -- --- +-- -- -- -- diff --git a/testsuite/simulation/renameModel.lua b/testsuite/simulation/renameModel.lua index 85027e63a..257c00002 100644 --- a/testsuite/simulation/renameModel.lua +++ b/testsuite/simulation/renameModel.lua @@ -77,7 +77,7 @@ print(src) -- relativeTolerance="0.0001" -- minimumStepSize="1e-12" -- maximumStepSize="0.001" --- initialStepSize="1e-06" /> +-- initialStepSize="1e-03" /> -- -- -- diff --git a/testsuite/simulation/renameSnapshot.lua b/testsuite/simulation/renameSnapshot.lua index 6397b19af..4dc9c5559 100644 --- a/testsuite/simulation/renameSnapshot.lua +++ b/testsuite/simulation/renameSnapshot.lua @@ -106,7 +106,7 @@ print(snapshot) -- relativeTolerance="0.0001" -- minimumStepSize="1e-12" -- maximumStepSize="0.001" --- initialStepSize="1e-06" /> +-- initialStepSize="1e-03" /> -- -- -- @@ -304,7 +304,7 @@ print(snapshot) -- relativeTolerance="0.0001" -- minimumStepSize="1e-12" -- maximumStepSize="0.001" --- initialStepSize="1e-06" /> +-- initialStepSize="1e-03" /> -- -- -- @@ -502,7 +502,7 @@ print(snapshot) -- relativeTolerance="0.0001" -- minimumStepSize="1e-12" -- maximumStepSize="0.001" --- initialStepSize="1e-06" /> +-- initialStepSize="1e-03" /> -- -- -- @@ -700,7 +700,7 @@ print(snapshot) -- relativeTolerance="0.0001" -- minimumStepSize="1e-12" -- maximumStepSize="0.001" --- initialStepSize="1e-06" /> +-- initialStepSize="1e-03" /> -- -- -- diff --git a/testsuite/simulation/renameValues1.lua b/testsuite/simulation/renameValues1.lua index 40bccbfc1..13a6747a2 100644 --- a/testsuite/simulation/renameValues1.lua +++ b/testsuite/simulation/renameValues1.lua @@ -106,7 +106,7 @@ print("info: renameValues1.root.add_3.u1 : " .. oms_getReal("renameVa -- relativeTolerance="0.0001" -- minimumStepSize="1e-12" -- maximumStepSize="0.001" --- initialStepSize="1e-06" /> +-- initialStepSize="1e-03" /> -- -- -- diff --git a/testsuite/simulation/renameValues2.lua b/testsuite/simulation/renameValues2.lua index d82e75b42..8b8adbcef 100644 --- a/testsuite/simulation/renameValues2.lua +++ b/testsuite/simulation/renameValues2.lua @@ -117,7 +117,7 @@ print("info: renameValues2.root.add_3.u1 : " .. oms_getReal("renameVa -- relativeTolerance="0.0001" -- minimumStepSize="1e-12" -- maximumStepSize="0.001" --- initialStepSize="1e-06" /> +-- initialStepSize="1e-03" /> -- -- --