diff --git a/OMPython/ModelicaSystem.py b/OMPython/ModelicaSystem.py index d0178cf24..951d1932d 100644 --- a/OMPython/ModelicaSystem.py +++ b/OMPython/ModelicaSystem.py @@ -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 diff --git a/examples/parameters_validation/main.py b/examples/parameters_validation/main.py new file mode 100644 index 000000000..50b7efada --- /dev/null +++ b/examples/parameters_validation/main.py @@ -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() diff --git a/examples/parameters_validation/model.mo b/examples/parameters_validation/model.mo new file mode 100644 index 000000000..69a402b7b --- /dev/null +++ b/examples/parameters_validation/model.mo @@ -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;