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" />
--
--
--