Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion OMPython/ModelicaSystem.py
Original file line number Diff line number Diff line change
Expand Up @@ -250,7 +250,7 @@ def run(self) -> int:
except subprocess.TimeoutExpired as ex:
raise ModelicaSystemError(f"Timeout running command {repr(cmdl)}") from ex
except subprocess.CalledProcessError as ex:
raise ModelicaSystemError(f"Error running command {repr(cmdl)}") from ex
raise ModelicaSystemError(f"Error running command {repr(cmdl)}\n{ex.stdout}") from ex

return returncode

Expand Down
42 changes: 42 additions & 0 deletions examples/parameters_validation/main.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
from OMPython import ModelicaSystem
from pathlib import Path

def main(file=None):
"""Run a simple parameters validation model."""
model = ModelicaSystem(
str(Path(__file__).parent/'model.mo'), # Path to file where modelica code is.
'ParametersValidation', # Name of model from that file.
)
# Run the model with different parameters values and print the results:
for positive_number in [-1,1,.1]:
for negative_number in [-1,1,-.1]:
model.setParameters(
[
f'positive_number={positive_number}',
f'negative_number={negative_number}',
],
)
print('--------------------------------------', file=file)
print(f'model parameters: {model.getParameters()}', file=file)
try:
model.simulate() # Parameters values are validated here.
print('No errors')
continue
except Exception as e:
print(e, file=file)

def test_passing()->bool:
"""Function to use for automatic testing. If returns `True` it means this example is working."""
class PrintSilencer:
def write(self, s:str):
pass
test_passing = False
try:
main(file=PrintSilencer())
test_passing = True
except Exception as e:
test_passing = False
return test_passing

if __name__ == '__main__':
main()
10 changes: 10 additions & 0 deletions examples/parameters_validation/model.mo
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
model ParametersValidation "A dummy model to show how to validate parameters"
parameter Real positive_number = 1;
parameter Real negative_number = -1;

initial algorithm
assert(positive_number>0, "`positive_number` must be > 0");
assert(negative_number<0, "`negative_number` must be < 0");
assert(positive_number-negative_number > 1, "`positive_number - negative_number` must be > 1");

end ParametersValidation;