From bda4828c204826d4a5522099f0fa17b647f979ea Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Wed, 11 May 2022 13:42:51 -0700 Subject: [PATCH] Add support for OPTIMICA r28242, update to MSL 4, remove JModelica support (#480) * Changed API for OPTIMICA to the one of version oct-r28242 For #28242 * Changed API for OPTIMICA to the one of version oct-r28242 For #28242 * Updated OCT version to 2022-05-09-master-4b0cd2bf71 * Logged translation output to file This avoids time out due to the OutputGrabber * Reverted script to master so that MSL is exported This is needed for JModelica, but not OPTIMICA * Removed non-used files This removes buildingspy/development/jmodelica_run.template buildingspy/development/jmodelica_run_all.template * Updated API to new version of OPTIMICA The use of inspection allows backward compatibility with older versions of OPTIMICA and with JModelica * Corrected syntax * Updated to MSL 4 * Updated html image * Remved JModelica support * Updated change log --- .travis.yml | 3 +- Makefile | 3 - README.rst | 4 +- buildingspy/CHANGES.txt | 3 + buildingspy/README.rst | 4 +- .../development/error_dictionary_jmodelica.py | 20 --- .../development/jmodelica_run.template | 161 ------------------ .../development/jmodelica_run_all.template | 11 -- buildingspy/development/merger.py | 2 - buildingspy/development/optimica_run.template | 62 +++++-- buildingspy/development/regressiontest.py | 51 +++--- buildingspy/development/validator.py | 14 +- buildingspy/io/outputfile.py | 4 +- buildingspy/simulate/Optimica.py | 6 +- buildingspy/simulate/__init__.py | 4 - buildingspy/simulate/base_simulator.py | 2 +- .../Examples/FMUs/IntegratorGain.mo | 2 +- .../Examples/FMUs/Integrator_Underscore.mo | 2 +- .../Examples/ParameterEvaluation.mo | 4 +- .../Scripts/travis/bin/jm_ipython.sh | 4 +- .../tests/MyModelicaLibrary/package.mo | 2 +- .../tests/MyModelicaLibrary/package.order | 2 +- .../tests/test_development_Validator.py | 6 +- ...st_development_regressiontest_jmodelica.py | 149 ---------------- doc/Makefile | 2 + doc/source/_static/lbl-logo.png | Bin 11587 -> 126811 bytes doc/source/_static/sphinxdoc.css | 5 + doc/source/index.rst | 3 +- 28 files changed, 108 insertions(+), 427 deletions(-) delete mode 100644 buildingspy/development/error_dictionary_jmodelica.py delete mode 100644 buildingspy/development/jmodelica_run.template delete mode 100644 buildingspy/development/jmodelica_run_all.template delete mode 100644 buildingspy/tests/test_development_regressiontest_jmodelica.py diff --git a/.travis.yml b/.travis.yml index 32075f2c..9c6419eb 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,7 +11,7 @@ cache: pip env: global: - OMC_VERSION=ubuntu-2004-omc:1.19.0_dev-539-gb76366f-1 - - OPTIMICA_VERSION=travis-ubuntu-1804-optimica:r26446 + - OPTIMICA_VERSION=travis-ubuntu-1804-optimica:2022-05-09-master-4b0cd2bf71 - DYMOLA_VERSION=travis_ubuntu-2004_dymola:2022x-x86_64 - MPLBACKEND=agg @@ -73,7 +73,6 @@ script: - make unittest_development_error_dictionary - make unittest_development_merger - make unittest_development_refactor - - make unittest_development_regressiontest_jmodelica - make unittest_development_regressiontest_openmodelica - make unittest_development_regressiontest_optimica - make unittest_development_regressiontest diff --git a/Makefile b/Makefile index febea549..a7de321c 100644 --- a/Makefile +++ b/Makefile @@ -41,9 +41,6 @@ unittest_development_merger: unittest_development_refactor: python3 buildingspy/tests/test_development_refactor.py -unittest_development_regressiontest_jmodelica: - python3 buildingspy/tests/test_development_regressiontest_jmodelica.py - unittest_development_regressiontest_openmodelica: python3 buildingspy/tests/test_development_regressiontest_openmodelica.py diff --git a/README.rst b/README.rst index cc8f70dd..4dc789b2 100644 --- a/README.rst +++ b/README.rst @@ -6,8 +6,8 @@ BuildingsPy BuildingsPy is a Python package that can be used to -* run Modelica simulation using Dymola or JModelica -* process ``*.mat`` output files that were generated by Dymola, JModelica or OpenModelica. +* run Modelica simulation using Dymola or OPTIMICA +* process ``*.mat`` output files that were generated by Dymola, OPTIMICA or OpenModelica. * run unit tests as part of the library development. The package provides functions to extract data series from diff --git a/buildingspy/CHANGES.txt b/buildingspy/CHANGES.txt index 67434837..68ebb278 100644 --- a/buildingspy/CHANGES.txt +++ b/buildingspy/CHANGES.txt @@ -1,5 +1,8 @@ BuildingsPy Changelog --------------------- +- Removed JModelica support, and added support for new OPTIMICA compile_fmu API. +- For simulation and unit tests, updated the API for OPTIMICA to the one used in oct-2022-05-09-master-4b0cd2bf71 + (https://github.com/lbl-srg/BuildingsPy/issues/479) - For simulation, corrected a bug that led to an error message when a model from the Modelica Standard Library is simulated (https://github.com/lbl-srg/BuildingsPy/issues/472) - For unit tests, enabled option to run tests with OpenModelica. diff --git a/buildingspy/README.rst b/buildingspy/README.rst index cc8f70dd..4dc789b2 100644 --- a/buildingspy/README.rst +++ b/buildingspy/README.rst @@ -6,8 +6,8 @@ BuildingsPy BuildingsPy is a Python package that can be used to -* run Modelica simulation using Dymola or JModelica -* process ``*.mat`` output files that were generated by Dymola, JModelica or OpenModelica. +* run Modelica simulation using Dymola or OPTIMICA +* process ``*.mat`` output files that were generated by Dymola, OPTIMICA or OpenModelica. * run unit tests as part of the library development. The package provides functions to extract data series from diff --git a/buildingspy/development/error_dictionary_jmodelica.py b/buildingspy/development/error_dictionary_jmodelica.py deleted file mode 100644 index 760ce657..00000000 --- a/buildingspy/development/error_dictionary_jmodelica.py +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -####################################################### -# Class that contains data fields needed for the -# error checking of the regression tests for JModelica -# -# -# MWetter@lbl.gov 2019-01-04 -####################################################### -# -import buildingspy.development.error_dictionary_optimica as ed - - -class ErrorDictionary(ed.ErrorDictionary): - """ Class that contains data fields needed for the - error checking of the regression tests. - - If additional error messages need to be checked, - then they should be added to the constructor of this class. - """ diff --git a/buildingspy/development/jmodelica_run.template b/buildingspy/development/jmodelica_run.template deleted file mode 100644 index 35c6be47..00000000 --- a/buildingspy/development/jmodelica_run.template +++ /dev/null @@ -1,161 +0,0 @@ -############################################################### -# Script to test the model {{ model }} -# with JModelica. -# This script will create a json file that contains translation -# and simulation information. -############################################################### - -# Import the class that grabs stdout -import OutputGrabber as og - -def process_with_timeout(target, timeout): - import multiprocessing - import time - import copy - - manager = multiprocessing.Manager() - return_dict = manager.dict() - p = multiprocessing.Process(target=target, args=(0, return_dict)) - p.daemon = True - start = time.time() - p.start() - if timeout > 0: - p.join(timeout) - else: - p.join() - - cpu_time = time.time() - start - - error_msg = None - if p.is_alive(): - error_msg = "Process timeout" - p.terminate() - elif p.exitcode != 0: - error_msg = "Process terminated by signal {}".format(-p.exitcode) - if error_msg is not None: - raise RuntimeError(error_msg) - - ret = copy.copy(return_dict[0]) - ret.update({'cpu_time': cpu_time}) - return ret - -def _translate(proc_num, return_dict): - from pymodelica import compile_fmu - - try: - # Grab the stdoutput - out = og.OutputGrabber() - out.start() - fmu_name = compile_fmu("{{ model }}", - version="2.0", - compiler_log_level='warning', - compiler_options = {"generate_html_diagnostics" : False, - "nle_solver_tol_factor": 1e-2}) - out.stop() - # The standard output is returned as a list, with each line being an element - return_dict[proc_num] = {'success': True, 'fmu_name': str(fmu_name), 'stdout': out.capturedtext.split('\n')} - - except Exception as e: - return_dict[proc_num] = {'success': False, - 'exception': '{}: {}'.format(type(e).__name__, e)} - return - -def _simulate(proc_num, return_dict): - from pyfmi import load_fmu - - if not {{ simulate }}: - return_dict[proc_num] = {'success': False, - 'message': 'No simulation requested.'} - return return_dict - - # Simulate the model -# - - try: - fmu_name = "{{ model }}".replace(".", "_") + ".fmu" - mod = load_fmu(fmu_name) - x_nominal = mod.nominal_continuous_states - - opts = mod.simulate_options() #Retrieve the default options - opts['logging'] = False - opts['solver'] = '{{ solver }}' - opts['ncp'] = {{ ncp }} - - rtol = {{ rtol }} - - if len(x_nominal) > 0: - atol = rtol*x_nominal - else: - atol = rtol - - if opts['solver'].lower() == 'cvode': - # Set user-specified tolerance if it is smaller than the tolerance in the .mo file - opts['CVode_options']['external_event_detection'] = False - opts['CVode_options']['maxh'] = (mod.get_default_experiment_stop_time()-mod.get_default_experiment_start_time())/float(opts['ncp']) - opts['CVode_options']['iter'] = 'Newton' - opts['CVode_options']['discr'] = 'BDF' - opts['CVode_options']['rtol'] = rtol - opts['CVode_options']['atol'] = atol - opts['CVode_options']['store_event_points'] = True # True is default, set to false if many events - - opts['filter'] = {{ filter }} - # Grab the stdoutput - out = og.OutputGrabber() - out.start() - res = mod.simulate(options=opts) - out.stop() - start_time = res['time'][0] - final_time = res['time'][-1] - return_dict[proc_num] = {'success': True, 'start_time': start_time, 'final_time': final_time, 'stdout': out.capturedtext.split('\n')} - - except Exception as e: - return_dict[proc_num] = {'success': False, - 'exception': '{}: {}'.format(type(e).__name__, e)} - return return_dict - -def run(): - import os - import json - import traceback - import sys - - import pymodelica - # Increase memory - pymodelica.environ['JVM_ARGS'] = '-Xmx4096m' - - time_out = {{ time_out }} - model = "{{ model }}" - result = {"model": model, - "translation": {"success": False}, - "simulation": {"success": False}} - - # Compile model - log_file = "{}_buildingspy.json".format(model.replace(".", "_")) - try: - os.remove(log_file) - except OSError: - pass - - try: - ret_dic = process_with_timeout(target=_translate, timeout=time_out) - result["translation"] = ret_dic - - except Exception as e: - result["translation"]["exception"] = "{}: {}".format(type(e).__name__, e) - result["translation"]["traceback"] = traceback.format_exc() - - # Load model if translation was successful - if result["translation"]["success"]: - try: - ret_dic = process_with_timeout(target=_simulate, timeout=time_out) - result["simulation"] = ret_dic - - except Exception as e: - result["simulation"]["exception"] = "{}: {}".format(type(e).__name__, e) - result["simulation"]["traceback"] = traceback.format_exc() - - with open(log_file, "w") as log: - log.write("{}\n".format(json.dumps(result, indent=4, sort_keys=False)) ) - -if __name__=="__main__": - run() diff --git a/buildingspy/development/jmodelica_run_all.template b/buildingspy/development/jmodelica_run_all.template deleted file mode 100644 index 78503680..00000000 --- a/buildingspy/development/jmodelica_run_all.template +++ /dev/null @@ -1,11 +0,0 @@ -{% for model in models_underscore %} -def run_{{ model }}(): - import {{ model }} as m - m.run() -{% endfor %} - - -if __name__=="__main__": - {% for model in models_underscore %} - run_{{ model }}() - {% endfor %} diff --git a/buildingspy/development/merger.py b/buildingspy/development/merger.py index 414568ac..2024597e 100755 --- a/buildingspy/development/merger.py +++ b/buildingspy/development/merger.py @@ -82,8 +82,6 @@ def isValidLibrary(lib_home): "Scripts", "Conversion", "ConvertIBPSA_from_*.mos"), os.path.join(ibpsa_dir, "Resources", "Scripts", "travis", "Makefile"), - os.path.join(ibpsa_dir, "Resources", - "Scripts", "github-actions", "jmodelica", "jm_ipython.sh"), os.path.join(ibpsa_dir, "Resources", "Scripts", "BuildingsPy", "conf.json"), os.path.join(ibpsa_dir, "Resources", diff --git a/buildingspy/development/optimica_run.template b/buildingspy/development/optimica_run.template index 9c39007c..fd67c224 100644 --- a/buildingspy/development/optimica_run.template +++ b/buildingspy/development/optimica_run.template @@ -1,6 +1,3 @@ -# Import the class that grabs stdout -import OutputGrabber as og - def process_with_timeout(target, timeout): import multiprocessing import time @@ -35,31 +32,65 @@ def process_with_timeout(target, timeout): def _translate(proc_num, return_dict): import os from pymodelica import compile_fmu + from inspect import signature generate_html_diagnostics={{ generate_html_diagnostics }} try: - # Grab the stdoutput - out = og.OutputGrabber() - out.start() - fmu_name = compile_fmu("{{ model }}{{ model_modifier }}", - version="2.0", - compiler_log_level='warning', - compiler_options = {"generate_html_diagnostics" : generate_html_diagnostics, - "nle_solver_tol_factor": 1e-2}) - out.stop() + # OCT r28242 ignores MODELICAPATH and instead needs to have it set through a function argument. + compilation_log = "{{ model }}".replace('.', '_') + "_compile.log" + version="2.0" + compiler_log_level=f"warning:{compilation_log}" + compiler_options = {"generate_html_diagnostics" : generate_html_diagnostics, + "nle_solver_tol_factor": 1e-2} # 1e-2 is the default + + sig = signature(compile_fmu) + if "modelicapath" in str(sig): + # This is the new API that uses modelicapath as a function argument. + + removed_modelica_path = False + if 'MODELICAPATH' in os.environ: + modelicapath=os.environ['MODELICAPATH'] + del os.environ['MODELICAPATH'] + removed_modelica_path = True + else: + modelicapath=os.path.abspath('.') + + fmu_name = compile_fmu("{{ model }}{{ model_modifier }}", + modelicapath=modelicapath, + version=version, + compiler_log_level=compiler_log_level, + compiler_options=compiler_options) + else: + fmu_name = compile_fmu("{{ model }}{{ model_modifier }}", + version=version, + compiler_log_level=compiler_log_level, + compiler_options=compiler_options) + + if removed_modelica_path: + os.environ['MODELICAPATH'] = modelicapath # Copy style sheets. # This is a hack to get the css and js files to render the html diagnostics. htm_dir = os.path.splitext(os.path.basename(fmu_name))[0] + "_html_diagnostics" if generate_html_diagnostics and os.path.exists(htm_dir): - for fil in ["scripts.js", "style.css", "zepto.min.js"]: + for fil in ["scripts.js", "style.css", "html-diagnostics.css", "zepto.min.js"]: src = os.path.join(".jmodelica_html", fil) if os.path.exists(src): des = os.path.join(htm_dir, fil) shutil.copyfile(src, des) + + # Read log file + out = None + if os.path.isfile(compilation_log): + with open(compilation_log, 'r') as f: + out = f.readlines() + else: + out = f"Error: Log file {compilation_log} does not exist." + + # The standard output is returned as a list, with each line being an element - return_dict[proc_num] = {'success': True, 'fmu_name': str(fmu_name), 'stdout': out.capturedtext.split('\n')} + return_dict[proc_num] = {'success': True, 'fmu_name': str(fmu_name), 'stdout': out} except Exception as e: return_dict[proc_num] = {'success': False, @@ -69,6 +100,9 @@ def _translate(proc_num, return_dict): def _simulate(proc_num, return_dict): from pyfmi import load_fmu + # Import the class that grabs stdout + import OutputGrabber as og + if not {{ simulate }}: return_dict[proc_num] = {'success': False, 'message': 'No simulation requested.'} diff --git a/buildingspy/development/regressiontest.py b/buildingspy/development/regressiontest.py index 315a0698..5c711c55 100644 --- a/buildingspy/development/regressiontest.py +++ b/buildingspy/development/regressiontest.py @@ -31,7 +31,6 @@ # Code repository sub-package imports. import pyfunnel from buildingspy.development import error_dictionary_openmodelica -from buildingspy.development import error_dictionary_jmodelica from buildingspy.development import error_dictionary_optimica from buildingspy.development import error_dictionary_dymola from buildingspy.io.outputfile import Reader @@ -50,7 +49,7 @@ def runSimulation(worDir, cmd): .. note:: This method is outside the class definition to allow parallel computing. """ - # JModelica requires the working directory to be part of MODELICAPATH + # OPTIMICA requires the working directory to be part of MODELICAPATH env = os.environ.copy() # will be passed to the subprocess.Popen call if 'MODELICAPATH' in os.environ: env['MODELICAPATH'] = "{}:{}".format(worDir, os.environ['MODELICAPATH']) @@ -125,7 +124,7 @@ class Tester(object): :param check_html: Boolean (default ``True``). Specify whether to load tidylib and perform validation of html documentation. - :param tool: string {``'dymola'``, ``'openmodelica'``, ``'optimica'``, ``'jmodelica'``}. + :param tool: string {``'dymola'``, ``'openmodelica'``, ``'optimica'``}. Default is ``'dymola'``, specifies the tool to use for running the regression test with :func:`~buildingspy.development.Tester.run`. :param cleanup: Boolean (default ``True``). Specify whether to delete temporary directories. @@ -202,17 +201,17 @@ class Tester(object): To run regression tests only for a single package, call :func:`setSinglePackage` prior to :func:`run`. - *Regression testing using OpenModelica, OPTIMICA or JModelica* + *Regression testing using OpenModelica or OPTIMICA* - For OpenModelica, OPTIMICA and JModelica, the selection of test cases is done the same + For OpenModelica and OPTIMICA, the selection of test cases is done the same way as for Dymola. However, the solver tolerance is obtained from the `.mo` file by reading the annotation `Tolerance="value"`. - For OpenModelica, OPTIMICA and JModelica, a JSON file stored as + For OpenModelica and OPTIMICA, a JSON file stored as ``Resources/Scripts/BuildingsPy/conf.yml`` (or for backward compatibility, in `conf.json`) can be used to further configure tests. The file has the syntax below, - where ``openmodelica``, ``optimica`` or ``jmodelica`` specifies the tool. + where ``openmodelica`` or ``optimica`` specifies the tool. .. code-block:: javascript @@ -253,8 +252,6 @@ def __init__( """ Constructor.""" if tool == 'optimica': e = error_dictionary_optimica - elif tool == 'jmodelica': - e = error_dictionary_jmodelica elif tool == 'openmodelica': e = error_dictionary_openmodelica else: @@ -273,11 +270,11 @@ def __init__( self._rootPackage = os.path.join(self._libHome, 'Resources', 'Scripts', 'Dymola') # Set the tool - if tool in ['dymola', 'openmodelica', 'optimica', 'jmodelica']: + if tool in ['dymola', 'openmodelica', 'optimica']: self._modelica_tool = tool else: raise ValueError( - "Value of 'tool' of constructor 'Tester' must be 'dymola', 'openmodelica', 'optimica' or 'jmodelica'. Received '{}'.".format(tool)) + "Value of 'tool' of constructor 'Tester' must be 'dymola', 'openmodelica' or 'optimica'. Received '{}'.".format(tool)) # File to which the console output of the simulator is written self._simulator_log_file = "simulator-{}.log".format(tool) # File to which the console output of the simulator of failed simulations is written @@ -415,7 +412,7 @@ def report(self, timeout=600, browser=None, autoraise=True, comp_file=None): def get_unit_test_log_file(self): """ Return the name of the log file of the unit tests, - such as ``unitTests-openmodelica.log``, ``unitTests-optimica.log``, ``unitTests-jmodelica.log`` or ``unitTests-dymola.log``. + such as ``unitTests-openmodelica.log``, ``unitTests-optimica.log`` or ``unitTests-dymola.log``. """ return "unitTests-{}.log".format(self._modelica_tool) @@ -427,8 +424,6 @@ def _initialize_error_dict(self): import buildingspy.development.error_dictionary_openmodelica as e elif self._modelica_tool == 'optimica': import buildingspy.development.error_dictionary_optimica as e - elif self._modelica_tool == 'jmodelica': - import buildingspy.development.error_dictionary_jmodelica as e else: import buildingspy.development.error_dictionary_dymola as e @@ -1030,7 +1025,7 @@ def _set_attribute_value(line, keyword, dat): # raise ValueError(msg) dat['dymola']['TranslationLogFile'] = dat['model_name'] + ".translation.log" # Get tolerance from mo file. This is used to set the tolerance - # for OpenModelica, OPTIMICA and JModelica. + # for OpenModelica and OPTIMICA. # Only get the tolerance for the models that need to be simulated, # because those that are only exported as FMU don't need this setting. if not dat['dymola']['exportFMU']: @@ -1059,8 +1054,6 @@ def _set_attribute_value(line, keyword, dat): "_", "_0").replace(".", "_") dat['dymola']['FMUName'] = dat['dymola']['FMUName'] + ".fmu" # Plot variables are only used for those models that need to be simulated. - # For JModelica, if dat['jmodelica']['simulate'] == False: - # dat['ResultVariables'] is reset to [] in _add_experiment_specifications if not dat['dymola']['exportFMU']: plotVars = [] iLin = 0 @@ -1383,7 +1376,7 @@ def _getSimulationResults(self, data, warnings, errors): val = [] try: var_mat = var - # Matrix variables in OpenModelica, OPTIMICA and JModelica are stored in mat file with + # Matrix variables in OpenModelica and OPTIMICA are stored in mat file with # no space e.g. [1,1]. if self._modelica_tool != 'dymola': var_mat = re.sub(' ', '', var_mat) @@ -2449,8 +2442,8 @@ def _check_fmu_statistics(self, ans): self._reporter.writeError(em) return retVal - def _get_jmodelica_warnings(self, error_text, model): - """ Return a list with all JModelica warnings + def _get_optimica_warnings(self, error_text, model): + """ Return a list with all OPTIMICA warnings """ import re @@ -2514,7 +2507,7 @@ def _get_openmodelica_simulation_record(self, simulation_text): def _get_optimica_simulation_record(self, simulation_text): """ Return total number of Jacobian evaluations, state events, and elapsed cpu time - when unit tests are run with OPTIMICA or JModelica + when unit tests are run with OPTIMICA. """ jacobianNumber = 0 stateEvents = 0 @@ -2536,7 +2529,7 @@ def _get_optimica_simulation_record(self, simulation_text): return res def _verify_non_dymola_runs(self): - """ Check the results of the OPTIMICA and JModelica tests. + """ Check the results of the OPTIMICA tests. This function returns 0 if no errors occurred, or a positive non-zero number otherwise. @@ -2567,7 +2560,7 @@ def _verify_non_dymola_runs(self): res = json.load(json_file) # Get warnings from stdout that was captured from the compilation if 'stdout' in res['translation']: - warnings = self._get_jmodelica_warnings( + warnings = self._get_optimica_warnings( error_text=res['translation']['stdout'], model=res['model']) res['translation']['warnings'] = warnings @@ -2904,7 +2897,7 @@ def _checkSimulationError(self, errorFile): logFil = ele[key]["translationLog"] ele[key] = self._performTranslationErrorChecks(logFil, ele[key]) for k, v in list(self._error_dict.get_dictionary().items()): - # For OPTIMICA and JModelica, we neither have simulate nor FMUExport + # For OPTIMICA, we neither have simulate nor FMUExport if ele[key][k] > 0: self._reporter.writeWarning(v["model_message"].format(ele[key]["command"])) self._error_dict.increment_counter(k) @@ -3405,7 +3398,7 @@ def _print_end_of_json(isLastItem, fileHandle, logFileName): def _write_runscripts(self): """Create the runAll.mos scripts, one per processor (self._nPro). - The commands in the script depend on the tool: 'openmodelica', 'dymola', 'optimica', or 'jmodelica' + The commands in the script depend on the tool: 'openmodelica', 'dymola' or 'optimica' """ nUniTes = 0 @@ -3480,7 +3473,7 @@ def _get_set_of_result_variables(list_of_result_variables): return s def _write_runscript_non_dymola(self, iPro, tra_data_pro): - """ Write the OpenModelica, OPTIMICA or JModelica runfile for all experiments in tra_data_pro. + """ Write the OpenModelica or OPTIMICA runfile for all experiments in tra_data_pro. :param iPro: The number of the processor. :param tra_data_pro: A list with the data for the experiments that require translation, for this processor only. @@ -3523,7 +3516,7 @@ def _write_runscript_non_dymola(self, iPro, tra_data_pro): dat[self._modelica_tool]['rtol'] = 1E-6 # Note that if dat[self._modelica_tool]['simulate'] == false, then only the FMU export is tested, but no # simulation should be done. - # filter argument must respect glob syntax ([ is escaped with []]) + JModelica mat file + # filter argument must respect glob syntax ([ is escaped with []]) + OPTIMICA mat file # stores matrix variables with no space e.g. [1,1]. if self._modelica_tool == 'openmodelica': filter = '(' + '|'.join([re.sub(r'\[|\]', @@ -3562,7 +3555,7 @@ def _write_runscript_non_dymola(self, iPro, tra_data_pro): fil.write(txt) # Copy python file that grabs the console output - if self._modelica_tool == 'optimica' or self._modelica_tool == 'jmodelica': + if self._modelica_tool == 'optimica': shutil.copyfile( os.path.join( os.path.dirname(__file__), @@ -3849,7 +3842,7 @@ def run(self): retVal = temp if not self._skip_verification: - # For OpenModelica, OPTIMICA and JModelica: store available translation and simulation info + # For OpenModelica and OPTIMICA: store available translation and simulation info # into self._comp_info used for reporting. with open(self._simulator_log_file, 'r') as f: self._comp_info = simplejson.loads(f.read()) diff --git a/buildingspy/development/validator.py b/buildingspy/development/validator.py index dda87a5d..e7f7eafa 100644 --- a/buildingspy/development/validator.py +++ b/buildingspy/development/validator.py @@ -206,7 +206,7 @@ def _check_experiment(self, name, val, value, model_path, mos_file): ".\n" + self._capitalize_first(name) + " contains invalid expressions such as x * y. Only literal expressions are allowed " + - "by OPTIMICA, JModelica and OpenModelica unit tests.\n") + "by OPTIMICA and OpenModelica unit tests.\n") raise ValueError(s) delta = abs(eval(val) - eval(value)) @@ -338,7 +338,7 @@ def _separate_mos_files(self, mos_files): if (found_sim and not found_tol): s = ( "Found mos file={!s} without tolerance defined.\n" + - "A minimum tolerance of 1e-6 is required for OPTIMICA and JModelica.\n").format(itr) + "A minimum tolerance of 1e-6 is required for OPTIMICA.\n").format(itr) raise ValueError(s) return n_tols, mos_non_fmus, mos_fmus @@ -371,13 +371,13 @@ def _wrong_parameter(self, mos_file, name, value): if value is None: s = ( "Found mos file={!s} without tolerance specified.\n" + - "A minimum tolerance of 1e-6 is required for OPTIMICA and JModelica for unit tests.\n").format(mos_file) + "A minimum tolerance of 1e-6 is required for OPTIMICA for unit tests.\n").format(mos_file) raise ValueError(s) else: if(float(value) > 1e-6): s = ("Found mos file={!s} with tolerance={!s}.\n" "The tolerance found is bigger than 1e-6, the maximum required by " - "OPTIMICA and JModelica for unit tests.\n").format(mos_file, value) + "OPTIMICA for unit tests.\n").format(mos_file, value) raise ValueError(s) if (name + "=" == "stopTime="): @@ -411,7 +411,7 @@ def _getValue(self, name, line, fil_nam): if name == "StartTime": # If it is smaller than -2147483648 and bigger than 2147483647, which are # the minimum and maximum 32 bit integers. These are used in - # the CI testing of JModelica. Exceeding them will cause an integer overflow + # the CI testing of OPTIMICA. Exceeding them will cause an integer overflow if isinstance(ev, int): if ev < -2147483648: err = ( @@ -422,7 +422,7 @@ def _getValue(self, name, line, fil_nam): if name == "StopTime": # If it is smaller than -2147483648 and bigger than 2147483647, which are # the minimum and maximum 32 bit integers. These are used in - # the CI testing of JModelica. Exceeding them will cause an integer overflow + # the CI testing of OPTIMICA. Exceeding them will cause an integer overflow if isinstance(ev, int): if ev > 2147483647: err = ( @@ -444,7 +444,7 @@ def _wrong_literal(self, mos_file, name): s = ( "Found mos file={!s} with invalid expression={!s}.\n" + - "This is not allowed for cross validation with OPTIMICA and JModelica.\n").format( + "This is not allowed for cross validation with OPTIMICA.\n").format( mos_file, name + '=' + diff --git a/buildingspy/io/outputfile.py b/buildingspy/io/outputfile.py index f87a5c07..ab638100 100644 --- a/buildingspy/io/outputfile.py +++ b/buildingspy/io/outputfile.py @@ -168,9 +168,9 @@ class Reader(object): def __init__(self, fileName, simulator): import os - if simulator not in ['openmodelica', 'dymola', 'optimica', 'jmodelica']: + if simulator not in ['openmodelica', 'dymola', 'optimica']: raise ValueError( - 'Argument "simulator" needs to be set to "openmodelica", "dymola", "optimica" or "jmodelica".') + 'Argument "simulator" needs to be set to "openmodelica", "dymola" or "optimica".') if not os.path.isfile(fileName): raise FileNotFoundError(f"File {os.path.abspath(fileName)} does not exist.") diff --git a/buildingspy/simulate/Optimica.py b/buildingspy/simulate/Optimica.py index b4ce44e2..be8d5150 100644 --- a/buildingspy/simulate/Optimica.py +++ b/buildingspy/simulate/Optimica.py @@ -4,10 +4,6 @@ Class that translates and simulates a Modelica model with OPTIMICA. - Note that because OPTIMICA and JModelica have a similar API, and because - they are invoked by the same script, this class - should also work with JModelica. - For a similar class that uses Dymola, see :func:`buildingspy.simulate.Dymola`. """ @@ -205,7 +201,7 @@ def _translate_and_simulate(self, simulate): template = env.get_template("optimica_run.template") - # Note that filter argument must respect glob syntax ([ is escaped with []]) + JModelica mat file + # Note that filter argument must respect glob syntax ([ is escaped with []]) + OPTIMICA mat file # stores matrix variables with no space e.g. [1,1]. txt = template.render( model=self.modelName, diff --git a/buildingspy/simulate/__init__.py b/buildingspy/simulate/__init__.py index d7d1c223..84980821 100644 --- a/buildingspy/simulate/__init__.py +++ b/buildingspy/simulate/__init__.py @@ -13,8 +13,4 @@ class may have methods that are only applicable for :func:`buildingspy.simulate.Optimica.Simulator.generateHtmlDiagnostics` is only available for Optimica. -Note that :mod:`buildingspy.simulate.Optimica` -should also work with JModelica.org, -but the latter is not officially supported. - """ diff --git a/buildingspy/simulate/base_simulator.py b/buildingspy/simulate/base_simulator.py index 15d8be0b..b6869572 100644 --- a/buildingspy/simulate/base_simulator.py +++ b/buildingspy/simulate/base_simulator.py @@ -407,7 +407,7 @@ def _runSimulation(self, cmd, timeout, directory, env=None): if timeout_exceeded: # For Dymola only: manage process termination. - # (For Optimica and JModelica this is managed at the lower level + # (For Optimica this is managed at the lower level # in `*_run.template`.) if self._MODELICA_EXE == 'dymola': # On unixlike systems, give the process a chance to close gracefully diff --git a/buildingspy/tests/MyModelicaLibrary/Examples/FMUs/IntegratorGain.mo b/buildingspy/tests/MyModelicaLibrary/Examples/FMUs/IntegratorGain.mo index 22205e20..86dc1edf 100644 --- a/buildingspy/tests/MyModelicaLibrary/Examples/FMUs/IntegratorGain.mo +++ b/buildingspy/tests/MyModelicaLibrary/Examples/FMUs/IntegratorGain.mo @@ -1,6 +1,6 @@ within MyModelicaLibrary.Examples.FMUs; block IntegratorGain "Block to demonstrate the FMU export" - extends Modelica.Blocks.Interfaces.BlockIcon; + extends Modelica.Blocks.Icons.Block; parameter Real k = -1 "Gain"; diff --git a/buildingspy/tests/MyModelicaLibrary/Examples/FMUs/Integrator_Underscore.mo b/buildingspy/tests/MyModelicaLibrary/Examples/FMUs/Integrator_Underscore.mo index 6ce1be11..ab0057cb 100644 --- a/buildingspy/tests/MyModelicaLibrary/Examples/FMUs/Integrator_Underscore.mo +++ b/buildingspy/tests/MyModelicaLibrary/Examples/FMUs/Integrator_Underscore.mo @@ -1,6 +1,6 @@ within MyModelicaLibrary.Examples.FMUs; block Integrator_Underscore "Block to demonstrate the FMU export" - extends Modelica.Blocks.Interfaces.BlockIcon; + extends Modelica.Blocks.Icons.Block; parameter Real k = -1 "Gain"; diff --git a/buildingspy/tests/MyModelicaLibrary/Examples/ParameterEvaluation.mo b/buildingspy/tests/MyModelicaLibrary/Examples/ParameterEvaluation.mo index 88db97b1..19e81e87 100644 --- a/buildingspy/tests/MyModelicaLibrary/Examples/ParameterEvaluation.mo +++ b/buildingspy/tests/MyModelicaLibrary/Examples/ParameterEvaluation.mo @@ -5,7 +5,8 @@ model ParameterEvaluation parameter Integer n = integer(1/x) "Dimension"; Real T[n] "Vector"; equation - der(T) = ones(n) + der(T) = ones(n); + annotation (Documentation(info="

This model is used in the Python regression tests to ensure that BuildingsPy @@ -13,5 +14,4 @@ throws an exception if it attempts to change a structural parameter after the compilation.

")); - end ParameterEvaluation; diff --git a/buildingspy/tests/MyModelicaLibrary/Resources/Scripts/travis/bin/jm_ipython.sh b/buildingspy/tests/MyModelicaLibrary/Resources/Scripts/travis/bin/jm_ipython.sh index b334f036..a289f416 100755 --- a/buildingspy/tests/MyModelicaLibrary/Resources/Scripts/travis/bin/jm_ipython.sh +++ b/buildingspy/tests/MyModelicaLibrary/Resources/Scripts/travis/bin/jm_ipython.sh @@ -57,7 +57,7 @@ if [ -z ${MODELICAPATH+x} ]; then else # Add the current directory to the front of the Modelica path. # This will export the directory to the docker, and also set - # it in the MODELICAPATH so that JModelica finds it. + # it in the MODELICAPATH so that OPTIMICA finds it. MODELICAPATH=`pwd`:${MODELICAPATH} fi @@ -107,7 +107,7 @@ DOCKER_FLAGS="\ ${NAME}" docker run ${DOCKER_FLAGS} /bin/bash -c \ - "export MODELICAPATH=${DOCKER_MODELICAPATH}:/opt/oct/ThirdParty/MSL/MSL323:/opt/oct/ThirdParty/MSL/MSL400:/opt/oct/ThirdParty/MSL && \ + "export MODELICAPATH=${DOCKER_MODELICAPATH} && \ export PYTHONPATH=${DOCKER_PYTHONPATH} && \ export IPYTHONDIR=/mnt/shared && alias ipython=ipython3 && \ diff --git a/buildingspy/tests/MyModelicaLibrary/package.mo b/buildingspy/tests/MyModelicaLibrary/package.mo index ab6e059f..fb8fb4d6 100644 --- a/buildingspy/tests/MyModelicaLibrary/package.mo +++ b/buildingspy/tests/MyModelicaLibrary/package.mo @@ -18,5 +18,5 @@ See buildingspy/tests/Test_development_refactor_Annex60.

")); - annotation (uses(Modelica(version="3.2.3"))); + annotation (uses(Modelica(version="4.0.0"))); end MyModelicaLibrary; diff --git a/buildingspy/tests/MyModelicaLibrary/package.order b/buildingspy/tests/MyModelicaLibrary/package.order index 602ef997..f3ebf8d9 100644 --- a/buildingspy/tests/MyModelicaLibrary/package.order +++ b/buildingspy/tests/MyModelicaLibrary/package.order @@ -1,8 +1,8 @@ MyModel MyModelTimeOut MyStep -Reset one two +Reset Examples Obsolete diff --git a/buildingspy/tests/test_development_Validator.py b/buildingspy/tests/test_development_Validator.py index 49ac5dbb..363444b7 100644 --- a/buildingspy/tests/test_development_Validator.py +++ b/buildingspy/tests/test_development_Validator.py @@ -97,12 +97,12 @@ def test_validateExperimentSetup(self): ########################################### # Checking missing tolerance in mos file self.run_case(val, myMoLib, "Test2", "experiment(Tolerance=1e-6, StopTime=1.0),", - "", "A minimum tolerance of 1e-6 is required for OPTIMICA and JModelica.") + "", "A minimum tolerance of 1e-6 is required for OPTIMICA.") ########################################### # Checking missing tolerance in mo file self.run_case(val, myMoLib, "Test3", "experiment(StopTime=1.0),", "stopTime=1.0,", - "A minimum tolerance of 1e-6 is required for OPTIMICA and JModelica.") + "A minimum tolerance of 1e-6 is required for OPTIMICA.") ########################################### # Checking tolerances mismatch @@ -168,7 +168,7 @@ def test_validateExperimentSetup(self): ########################################### # Checking wrong data type that can cause an overflow - # In JModelica's CI testing, the maximum integer is 2147483647 + # In OPTIMICA's CI testing, the maximum integer is 2147483647 self.run_case( val, myMoLib, diff --git a/buildingspy/tests/test_development_regressiontest_jmodelica.py b/buildingspy/tests/test_development_regressiontest_jmodelica.py deleted file mode 100644 index 013182d9..00000000 --- a/buildingspy/tests/test_development_regressiontest_jmodelica.py +++ /dev/null @@ -1,149 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -# -import unittest -import os - -# To run this test, navigate to the BuildingsPy folder, then type -# python buildingspy/tests/test_development_regressiontest.py - - -class Test_regressiontest_jmodelica_Tester(unittest.TestCase): - """ - This class contains the unit tests for - :mod:`buildingspy.regressiontest.Tester` for jmodelica. - """ - - def test_unit_test_log_file(self): - import buildingspy.development.regressiontest as r - rt = r.Tester(check_html=False, tool="jmodelica") - self.assertEqual('unitTests-jmodelica.log', rt.get_unit_test_log_file()) - - @staticmethod - def _write_test(content): - """ Write a unit test for a model with the content `content` - in a temporary directory and return the name of this directory. - """ - import os - import tempfile - - dir_name = os.path.join(tempfile.mkdtemp(prefix='tmp-BuildingsPy-unittests-'), "TestLib") - script_dir = os.path.join(dir_name, "Resources", "Scripts", "Dymola") - mo_name = "Test" - mo_content = """within TestLib; - model Test - {} - annotation (experiment(Tolerance=1e-6, StopTime=3600)); - end Test; - """.format(content) - - # Create directory for mos scripts - os.makedirs(script_dir) - # Write mos file - with open(os.path.join(script_dir, mo_name + ".mos"), mode="w", encoding="utf-8") as fil: - con = """ -simulateModel("TestLib.{}", tolerance=1e-6, stopTime=1.0, method="CVode", resultFile="test");""".format(mo_name) - con = con + """ -createPlot(id=1, y={"Test.x"}); -""" - fil.write(con) - # Write mo file - with open(os.path.join(dir_name, mo_name + ".mo"), mode="w", encoding="utf-8") as fil: - fil.write(mo_content) - # Write top-level package - with open(os.path.join(dir_name, 'package.mo'), mode="w", encoding="utf-8") as fil: - mo = """ - within; - package TestLib - end TestLib; -""" - fil.write(mo) - # Write top-level package.order - with open(os.path.join(dir_name, 'package.order'), mode="w", encoding="utf-8") as fil: - mo = """TestLib""" - fil.write(mo) - return dir_name - - def test_regressiontest_diagnostics(self): - """ Test that warnings and errors reported by JModelica are reported. - """ - import shutil - import buildingspy.development.regressiontest as r - - tests = [ - {'ret_val': 0, - 'mo_content': """parameter Real x = 0;""", - 'description': "Correct model."}, - {'ret_val': 2, - 'mo_content': """parameter Real[2] x(unit="m") = {0, 0};""", - 'description': "Missing each on variable."}, - {'ret_val': 2, - 'mo_content': """parameter Real x(each unit="m") = 0;""", - 'description': "Wrong each on scalar."}, - {'ret_val': 2, - 'mo_content': """Modelica.Blocks.Sources.Constant b(each k=0) ;""", - 'description': "Wrong each on scalar component."}, - {'ret_val': 2, - 'mo_content': """Modelica.Blocks.Sources.Constant b[2](k=0) ;""", - 'description': "Missing each on array of components."}, - {'ret_val': 0, - 'mo_content': """ - Real x; - equation - Modelica.Math.exp(x)=1;""", - 'description': "Missing start value, which should be ignored."}, - {'ret_val': 0, - 'mo_content': """ - Real x(start=0); - equation - der(x)^3 = 0;""", - 'description': "Missing start value for der(x), which should be ignored."}, - {'ret_val': 2, - 'mo_content': """parameter Real[2] x(unit="m") = {0, 0}; - parameter Real y(each unit="m") = 0;""", - 'description': "Two errors."}, - {'ret_val': 1, - 'mo_content': """x; """, - 'description': "Syntax error that should cause a failure in translation."}, - {'ret_val': 1, - 'mo_content': """Real x(start=0); - equation - Modelica.Math.exp(x)=-1;""", - 'description': "Model that has no solution."} - ] - # Run all test cases - for test in tests: - des = test['description'] - print("*** Running test for '{}'".format(des)) - mo_content = test['mo_content'] - dir_name = self._write_test(mo_content) - rt = r.Tester(skip_verification=True, check_html=False, tool="jmodelica") - rt.setLibraryRoot(dir_name) - ret_val = rt.run() - # Check return value to see if test suceeded - self.assertEqual( - test['ret_val'], - ret_val, - "Test for '{}' failed, return value {}".format( - des, - ret_val)) # Delete temporary files - # Get parent dir of dir_name, because dir_name contains the Modelica library name - par = os.path.split(dir_name)[0] - os.remove(rt.get_unit_test_log_file()) - shutil.rmtree(par) - - def test_regressiontest(self): - import buildingspy.development.regressiontest as r - rt = r.Tester(skip_verification=True, check_html=False, tool="jmodelica") - myMoLib = os.path.join("buildingspy", "tests", "MyModelicaLibrary") - rt.deleteTemporaryDirectories(True) - rt.setLibraryRoot(myMoLib) - ret_val = rt.run() - # Check return value to see if test suceeded - self.assertEqual(0, ret_val, "Test failed with return value {}".format(ret_val)) - # Delete temporary files - os.remove(rt.get_unit_test_log_file()) - - -if __name__ == '__main__': - unittest.main() diff --git a/doc/Makefile b/doc/Makefile index 9cedbd6c..e1133c04 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -34,6 +34,8 @@ clean: html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html + @echo "Deleting stray html pull down menu" + sed -e 's|
  • buildingspy
  • ||g' -i $(BUILDDIR)/html/index.html @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." diff --git a/doc/source/_static/lbl-logo.png b/doc/source/_static/lbl-logo.png index 6ad8a608061f085f74438c26ee4e9f44bdc08873..16fae5f7481b4646be5ab60ac3faff7fbad6cccb 100644 GIT binary patch literal 126811 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

    M0=JKPY)rU@kxJ5Ig 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

    jb&L4?3cenah{c;@sjYjs(1*)=Izi3OctZm5__p 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 UCb3=@4)!A@AunG1PS5xM0X_!Svj6}9 literal 11587 zcmZ{KWmFtpuB{L(obLg7Pg(D-heyHkjL&#Q(>V3UVPfi{e9^3Xa_Mav^C(#2i zv1sDJc~+n=N}+r_i)1nKl6}MN0nj*-o3P{<;L#p)xPB1m493&L&*hKc6I7Kw2pZ%t z$MgYfaO*X=MS(^gL>>p)q{P}sfr?cE4Kb+qM$&jbP^w+g<3%ds)0(Mpu2iNIpso>Ot4**Pyw0^Y!c7` z?QkHsXpLBOAp=lAs>r7?5IHwANR;&bI1ITAOb*L*=Vpn%LuivE6sT)7aXeXinjO0- z@h_qK#o6XI#deQPwTL0!M+`HhUCNB)bgK7~`!F&Ss2~vG{Z#i0w_xl(cy|kIwr_KK z)t~obeP&N7KykkD()JS?7K9-;dAh8>w>J;tFbMU>wbQyp8?>wjve>xSWnV$c(L(;~ zb^pVY`$>p2D_3ENkAxT*1?7a=D7T$u=ZC;6`!?LO7ZV5t9d^v9`fj%uAxIFaWX-vHyCYDa%kpmvQ0e)5wep?t4tnd)xdqWDI z2u!2sMal_8ywqq|N<&GGUjYT=2NBqcl>I|a1<)lTR&lzLR2Pg+*k7V_gdSp7hRE3> zpCa2NSQ7$k6k%qeU4@#9$p|9{a-64JIM8(ilJcyl2V;tR*aXGK zN@&Pvh!#^HQ`KR$AgUt;hp_h0QpOj{*HL?6-S>GI@l?lZd@ZMeP>@n&QR~sZd#@ia z`QhF0uU$E03hG!kDHJJd$rVY)0_6gMX$;E@8JeS5+u`+H#F~I|^5nS2SoB!=UysAR zyN%d9{Sn(TNO>QW3KFoseKr-`gZ-V&CX$*{syJSfHH%mp!IP~eWt-!sz^oiz@}9#r zje0yCS9G+1F@NrFnx(nrtp)ReOAFFkFsXR*-{fiQe+UQr2fI&7IiK)D>sWX%LF@) zL%kcQ-aPxVl<{qXVghZ#n-PXlkgXv>Q0#}lm6%vz@EW?aU`hCZ#9FP0An*fAfcKVB=_Ewdg!9U~v79mAh|xiP$B{xz0~-O<%28 zvYlNUH4(}-Jpxof^pz@pdOZ7u|%6jB|7=4bp>)i6Z zz&)3PGl1%b+JkBjBn+&Dv4$aoO@;l9@EI-&t`(jcRRBi>6$wp~%qiZ!3-5yH-k5#W z{8QQ#&In>Ajuz1a%NUIe={#n1*d*cxhM#@mz0AQ_17gIcgiS;fnI%Cg-n}pOM|!qW zrbER#Wfw=6+fVc5yPA*Y?a}8kB|n>aSF9SG+|0|ZY?N$_kJFn1no64jJ;LwA&y%rS z-hV(k`M%q?*vJ2U#~FIxCXGE~H%%qU#kg{BHLn>Dd@wPZ<<6)1Su@s$J2V9=xkhj= zm|R4G8DD;{$WE5z{Y6N6sJwVbUR0i9bz{>vzF*)>wZt3lHC|uQ2a7QIudV~^Nb*Vy zo^b@fnyD^j)x_r4%O{r{ml(e!WF%zdE1_8?)iErvG}1N7n=vrNqwRWvZAXaW!$)p+ zsqURGS8!}XWv24$lqwb8;mR-4EmQHCIO zj>M9L;ZeKFE3IZ@9K%Et)l;kFIc+t6db~vaa)bo50)Za{6;V*Pgb^%j@47 zM^26;j|z_L%5OD0tG=~c3D5lvJ434=I*-~T(zpG#?vm?ebsarkH$E~B^V#t8iS}4S z`N~BuXa0>>roZl}+H*x&W5*KB@_gr-yZ7b0U=keO_0xpowt5B+b?bI<-)p;RNYGjg zp%GC_C)jVTNy1&eKP$%jw>QF#`00_Ai@nWiRcB`nlC2VF6saVS!(MuT{c`$AntQ#2 z7X7;(;k|C!jY1#q9fg0n6TPdw;~S~|jn{}rlAa9HJe{uPjQO@X{JHI?|9<9YlIW30 zbTq#DowDv2yAFPiQP0ZBq~kxo-wlf2DKaU_%9Io2pG{r$yp?%MwboVCZ8sO4%o4#Nz74wrHYElBqJk2BW%AgnTX#iswsLu zIpU}G>Urc`w!iVb{U|-D@w9k`a{ptpv(mHV(&@CUq>5*dYLKjL!ju2J@Tp>A#rL%7 zv}I$koh+5^N$5r4a_Yf&u;{P+t-!v|%MRa1p^pN>&_U1sM$iops~orw|B44w4cRR`FOq$#nO@7JnVw zSh}K-JdImNhb<`Oz=TD=`$!&yjiV@x2`lcSBG&&xw;f!Jh>VO#ci|C$EnF(#!Y}k; z_AizQQb}y=@$<{#xMQPxvd%9mxQ^3>BfVkB_{7-w7{naRyODaWECaUcvhE@$C*Csq zfTICw%hh5mD&U3{#`yLQswF~@LfldLJ>)O^*Kdx9LF5U<*uEc_5GA!SV1?;YMVP=Y z-Hs+qZ(p!b-~nS`g+p|J0|qRn)7uG#*bv% z?GfCVUqVto>$6*m`HKVv7jObLLek#}_M0>$CX78WAZMUs`tE`_kohI<6V0l{pk+V{q6qHmpcBxjec zh5Vhb_vkxxOU%u@ykW=$e!kNfBNe33x#F>e-js%FbEK= zNT1Euy$s_h){JUVR4v9+O++^RhQn=_K0a{Hey)K|+Uxa?+nEH<0_@e9?ImvGscLrI$5BT9W?E;>!o_2pU(bzvX_6X$w_Swea;UbL~+>X9~%G zQZ+Sg)|>-y(%t^}?6|!n71TXuu#ISD5B731nkpS1^D{<8^A?nK`DuT_DDoEbB6hTV z93ihq%h43K?%>L#sHHY*L59X-lZBVwC(kpwkCy7lr{NFxie*~jS{&t~*%P)+oyOLU zJspnwdWDnv(WbqeH7fNQYRl25f@WQJ?qA#2>M z<=5T&BI^~ipS}g?NKzl4>LBQ9_G_}siC0GYh!owztM2B~S>6R)?)4VOS8ID$s9@&T zs2DIK1FqREGmT*HwraX&;|VipB(Wp332lSTb>4_(GKHDy4G}Oe+Gg4S*Uv_6ABRfY zEE?`vnW=qejOCO)Vl}*jxjLDCC*E9W2`q(Avk8u}8Po35?*huvjSGS*$Jc*c851X3 z98p#{ql(otRR1L&7r~1k&QWL9#*Z>JI_dhzy<<6R3HkoqQfhC_g@ZekPnxx%a12}+ z_!vSnEsdC)r!jeSt5XG}RFAjh(yB|>w}v$}$O{Q;t;$5(%rrH|8x%#Cw3AupeZjXi zu9F*X@!o#bnNeAkjiGPZD?q7^El4RMD)mjabql3fE^6dyf3N7@JjAW&a!@YYbh@q? zc;N597Z(Sk^5@4Z*{#ozComi_KaRvvcy=--00BWihnxxOm&l(F=hE{6m}m;m)-KSV zoR6_d?Cix%Qoz{mM~s+Pt&K1z>0AbDuP^l2=ub1|lg>9i)Qua7%*v4nEe$(@C`ry= z_(i||U+4*d$*0Tudi_9n{&ccbQw(+vp_Uj1zj{+seZvXB^CfiuRgCWUrB=q^yhM(} zOOCQeNJDm&W<6!+MB2A(CR^WMa`lm>C2A!Z>W1jq5x*5r2tgdBy1MjI|2=jnsuqvQ z@s(ZKW5100hJQOa7+UjbOAOxA5Ni@mP*Cvc>i(`;^nnG4F_4SRT*&>Y9623J!15de ztM>?g5!ZmJJ{6GB5wR$GKPU9>ue2Xx{1+hYq?@OctBnKaCa;e^NfRMk=qzrMWFXQ* zM?9F**7UIY(wWOjUi|f2Ql17Y`b3I1Okmng&Ypi3ZtdRr;v#a155$Xr_nze=T}xNu z-oE*5(j=+l&?cVqPKj62=2T<@IJ6KjA^9oxY?XS!cvmk3gayI@Zr_T~E+09b=7V-m= zJ77B3gre~JD5P{5pWl_{bn;#iSrqV9ET*TF=`^jgr!N>9kNLuHjfchkkozM!FhDq@ zttmchtA+V_ZcOGQ{+o#|>=sLYy0eFCk|!K$`K*rD^dNffcjbrTwlG ze@DI|Utn^u1aaPKe*H1#q#fCICw7gUF;7D!8sMk8B=JrgH_v*@o#oFS=Ep3Dv&AC7 zVpcC1EIkOOw7a0CyPddy?{vHV#<%n;kVmhc^EL4TC=4~=TmG?oOU5bIqRgI$`+HU^ z19^Ct&L4z{Bg(%;2%X(L#a&q9caw%j z1s+nt^5@J*Q|ZgeYUSe6k(Srz{@3zXgHm;6t$HAh5u3fO)GCHDxCWivM+ZPYPbX|I zwFX~UtM_%nL7Po23J@7j@EJ!OOGf zHeNgK+-_k|9l@1Pv=QHSH^k?vXXni%kW&Z)9pfFntRFu7zALX;zw^m`e!X6KF?w$3 z1TA{gg?VTD;0XOk(n40*H)Kc#GaI>T$W9mCBX-QU*TQUdTH(ol`j7c#WO$`g(eCgK zJX>sdr`#XXJ)Tb~SC`-WHV&Sh@^OtZjero0<-D;?-M8{%yx;jtd*ElcaZDfRjHNo0 z?m$+T`|zrw8pyJxC5WXbTHGQHd~dtq{{Mc@CT!*8$41 z(qgr9B=SCf#tGGaOkVC>A|$jagI$hbSB2?ID9+n>%J)wB9yI&pyIb(AGT)jrXmiJ9 zQ=&YFW%+tVgWDk?A>lmx{5w{K+LO*Po>ELa6v=3Y|0NASidxF;wk3A&Y6xc!hCm}` zv*KO6k`ty=GNxzb0@cOpMb?5Gfbc=&*xzF%b`2A3vB3p8Axm^m&8geEeeBeXF`kpX zbwYOYfqZWCZ=v3;?s0OAi@zxkus)z#i4A5LzHX%uXO2?#hycvwU3P@&M()lh-P>?= z5%16JKm4OJx2u8&oiHz0l%^~H-2QbepBg;2Cmt=ykM+7o_D1hFh!XgEbv{Gd8x{&5 z4-{vZLAjb!g`X>?P7ofP;gaMf|6N!jH%MX<_1iR=Db!Vo8gI#Z1qbEg96#Uc4&zoV z_pN3xI8yWXmfe{%X$^;OJoRlz$a~=UhfC;fimiUB+7D^vyQx{&;yPZGHc5YBI_l$R zz3n`@I~<&|OWwlaWRv)h)&GP-=!?x9pMVl4syEhnxO$u z0W4-{+w&Xd{}0E<_@4&g$?U7n+W&I>|1|~|>2OOJU*FK?f9n+fpA}4}+(oJhyZ;C( zaQF|I|NH!pcp(N!Ko=lJa&2h(8E=h5>4ob*4wCk0-%_!&OC!twXPVBcMkVo+>NQVW z>2lMrEDAW<|G-&Ce%`)z`d~`R#LP4QhB z@z}0#WqK^j8|RhaEf(@b1J)6t+{ePQFG$BQ2(zl^+oABmcfg{f;-cl!YB!IE(}6b% z9PctOovV@lb^^vR&W$}3jubkh=*5n2t_wd6Yr%Bf8t5U503AZdK&{}!-%EYO1;Dsj z!6^dt6-3r@Z}$^B=6zh)4g=ReA;UByHfFVoq!6MyRQoWmgqrshcy?@Az*J*Y%laXl zRVia@fniD<3knrU2}HX^d~jn6ugnNC!nGYH@1a+bH0=7=+5!(1M<8YxPX6K)Y<#nR z89+>p+O_5Pii#qlp1Bi+kDF1kQb%d`^eSKr7F|k}Bnjd5rAaL(x;)s6EL<#9A*VxAJo}5B zF3{uc_m7rLop1d}#2<{91tKJ11PAxffjjrM#yigRsDwHO&kKi6IWeeLgr`jhJDZL$ zXBubgO{7hx9ApgC41^odXn<$w+^?-IEx}F0O~)KK4EPLaHK>oCL!t>xYPtc-LLbQq zBH;amFHyL&V>ZBZt9eFj>hq!1M1Nszy|(Ec;1{8u@a{gg5(DlR{EKM;J3HO~8G8sc z0rd*94qPgobDBc9&V-x^$pKDvgr}HnnBBd<#S3Fs5nhq2dxMDaBzF2T{?Hs!VDp^pMg;dyd~+O1||NSWbZeD zfNUHSD09-R>NCcZV>hM>n6x{eyAE`Wz7f*yOjJAUeKlj!k^;^)+S#+#Ggq3T-jP631;A8zdQd+ z(tX```8Ru@N;5OX7l^Q2W-P(0S6Xg+>tal;O5)v*@5fOB1GJZn<;zMYeqW7iLv>hF zk6_j=J%SOSUZ=!YC2^i-P*QSI#(Y)F_Q-m#x4N)41$yi20~9@n22r|J>>%;lft(NK z2}W$UiWNz(y5R_G9-C;oI>bn@hySv}1Bbo1uU?5-zcY#XpQ$eJ!ZFj+T>1i;T8pvV zyV386y;J7)OX4fEK1ev)*KLzD=LcX&y&~y%n2#DL3C7){39s$GqUxV5RoA#dWzx$5 z%oRKj-b~=WkU`j%AL9Jwsx(k`@kb{z6QJy&=lFb1j~)k=y*8jubM6yO1eLu&f=iv&EJaEOcSwwWbzMzI ze|o-$tRVqRkm|+WJ- znel*r(b8ZEnbL9q+6Ev$m6}&8R#!UU7|dh}H`+;%FKHfow_e{x4zDV`zJ4KZHGG1Y z>ag=iG{rr1RYeZ#OgX$rbD{6I3G8nC^&V?>bz=aH0^wX9BM!#l&<|#@589{t?$mV~ zIedKD%a;tZ&VCaJtWA{>Jt~|X?R`$Ba9`9lw=Qcc3@UE$=~{$`-r=65u1p(2)4ih4 zL00ecCi>VEFaH--dIZc)(%YDoE0r>8HL@jMwxOu{;%tgBVtsxPKFbULhzq`?$;yk* z>nP2mMXgiV1uE*yB;YdT8n!lKz7k9?r=4N zHPB-6WPy5hI&MAe%;!;1JN?3&M#caw|EPeG{*MZ#$O@ixcBZr#lbI;%RkT&%P9kE<(?9xjo|tWWWm_sDP*eLOpWMj0oX1tJv} zsKTu0JN7=mCfZNz5jHo^XFh2($7Q+KI}zr3Q}Td0=7R?h06=Nn%@;rxDqUx(ZJ$B- zhaTqe%&o^|?6)6!Fcs(9g*az5%-KFRvmdqLipVa;nwqUzk;DK`G3@8CzQdjUJ7ugn z3PXa3r+MZtxVdJjH2rSfjeB9VT2xVJfDkhNAtxTdTPN;DWDVffn7r}o*HYsqmRFGhx4JNd?-W005^vvWkSSzL zXXAbK@qOJ*SZDJ+Q~oCS4(5S}j|u_5XVTe)lIc%ua_coN&@{;$3^{y7pZ)q9XbP$y zyW*_f-ihbBm^96}LWsMbo}TEG>7kX|)9S30@B%g(v@?4W7)gd3Px)fD|mn1QYVCf{CqGQqeo$Vpr`?i|H%QxwQ(`AL=2*oJZNAn<8WE^H?h9@Cv; ziol(;_JF3@&0>A~dJ3#Knmc|;fYcFvlKUwwf72HLE46y9?Z`N~yS&UhXm={CLDHtF zf)`(b3r~!3#c4$lLXNEK3DgVp3&4t0(ABcG$C%+M>=UFt%B<>%Z@B+lJwNZT^3Pc{ z=cSBEqh^i>ce#6!l5*&<4JuRKV_o!<$+_^zNq*Y`iXzXrdZU$2IEpqd&&Hg)!10H2 zWB7Ce_Qm^dQg?wsO~Fbxo`oZbwQaLu1)&(wr(E-${%y;ZPTQ(@-19s=-|{^*^w{t| z9%QXPpFMP}C}*!UySSjeyn6}8^Yoo1_x96!wF#8hGLv+`0GthJyO5q9$On{bym#)}rnt9ZmRA zX%oTJej?$0Q(;1kL`}2@KN}EaSzWXi(GH=3I~VMNYuJ`w+2_mz@A6!Z`i=V~K|WJ* zK7p+#BqaMKquvxx&F8qwe65bN`tjDvWXS+KwKgz9(#FNL=4R539g5t1NwvnfuxqK3 zg2@;^)CRzM*|_5}{sItKxm~t@`bM_^VW@7lvD%c9A_FL0``N~o!RV@UUoUV*61GFP z(6K#_G;7RIR&KtoB*(XN?IUb6KbVcqwQ6%xaBw36D)Ruz@}=p{M7tc7t3+jiInWHr z0jmB-%e3o4&0sB3{&!|m#*YuQn)O<8z&O-RWznY9j1lCO;Ss!(KD^A0wvNIxD}iZ^ z5VOLlVG0epG~@Zngik-CgAd@a&qdn(Rmx0J(q4b;YM^sd@-KW3X$RT>=(Hi#zpzBGKDKdj< zvMJ{ybP!U`>Oc17uX*ECU%ad)hI+3ZA0#Q#t@M5_lX!#irZT!~N)lo=Fw7<0Gpy=m z82Z@wjQ=2ew5CoRg~@fXZenuOmdN^REFm9o5wj8}k5cT(|97XY4W1Us4UglB6zdA00rhGYu*_C)(xoHm?DYxJ2=)b{F@2ioqMGjF0+<3h-`s-Cw__;o#m;MMsa>+HT0bEs+i zE+Gd$!;KdivH1fY*;6SKpIhk-FP&r4sn<%&w+%A>Q2K$c$%sv2`w*kyH%Jk8?wK9k zd^CSb+cyrM4=f1xwY{c_EhTl5US49}PB$oW}~gYQmDC;af8n+DrXkzhdB77tm+ zs)Ns%fhB%v%Gl`NC#bx$EhhnV0O7IW8KyXY41?wROd4CqF2X)g!o@cq~Uvp&TBNEPr}l_g;viHdTYV(8In(2l_mqnc&*-?C;80 z-5yGg^?%w%WTGxosQe|ucOe@{3M9((X)T38qKihQKq&r58( z(+~tURPdKN5$q?mjyYEgES(Q#ni;!=1KVDo^5qJzfJ||Fo*NQIG-KPc`I?fgSm((4*k=9JycMJ&?@J z3#)ex(>3O-mWorx*#9Qwn$93=s7RXrk!4L4gw=E4Uc=a@c7SO7xP-@w2N*o-vWkRm zu){sFJ&!G(OYLvPMUv1bwarEm8!Ldghh|J7!y8TUaLWO@P?&d zR{JbT>S6G`J|4@dxZ|q{`$BLm8Bk|+lEcBHb?fDRvVa6G5}Y;%q~qIe(WGL0Cf_g& z%u|U*L)|E?x4lDh(fK`WQu#V+*9`jgRg?Pzu(9aVBINxl(&*MWQ?Yi^Tu6ZLz$oi4 z?)V<8R>UC^9K1TP(xj7ZmzVNobwl0{nd%|^}&jx;*pT^Z*CSLQnC;80D zRk{~32{*pm+m*^P;pUvU^gJSOggW6zqK?}W_>+UZ_gvd2s-3Yj-me!kR53MZ`K7D5 zHZ3)=zk0?zlejADb(5iROy?hK*1wdQRY5Cc;lRKf&vTnBZ+qO=tTIj7=jUfngJTtu zprEFdt@9cI5D41!?OlL`%AF^_m%Ne0~f zKv!BT5Ht>P&4P2wPrbxD*oryS-jNgbrjYRDkVx$efP1j-Sa)VrpK|M2sS?ZpH?Mez z)@w1*(Kz$+SG8YZnq#F^^>RJfkF-pjly{vJU{t8cPU*Exk=Q;^idHSy|DDg|g+Sbf zF~k!DrjPR)x4u1mPM%6~hlpus>#fRqkmcHTO{>{6CtttY_|%@cgsd?k?)F-&CS7C1 zrtOe5-Fmne0N*KcWrXuBEaE}xBcjN#Fl#E_;e4nKXNj7$#K%-D^%(!{V~0kWdabsa z*rCU_w*?|^VP4=k_6J-oqOFRih*9$Y5~CmxGHKHPR@**oLaWrftZi@Cdy_hIJ>J8i zE(kU|h6H)qp@;{cle`CVw^c`c1W+uu!n%;JfOO*c7>V_nuoG^-*)gEmbLm?Czb(H0 z^h679q*+mC7lzP=ejCDNrVup_=Lbrl?@8FEcSHp*Yg5*y#wR28Ey+5FWW0&5-xiDY zB8A@M*>4T8Mc-Hvd8UEgd5mv4vCOeX7%l~jfE=2@0^M{29Vy%-*M!0~Dd_`M$xMX_ f+!Xoc6}{rLL1f_0KMQz21tcXdCsrw95cGclK~(#! diff --git a/doc/source/_static/sphinxdoc.css b/doc/source/_static/sphinxdoc.css index 78cae1a7..262ec988 100644 --- a/doc/source/_static/sphinxdoc.css +++ b/doc/source/_static/sphinxdoc.css @@ -75,6 +75,11 @@ div.headerStyle{ box-shadow: 2px -2px 10px 0px rgba(0,0,0,0.4); } +div.headerStyle img{ + left: 10px; + height: 80px; +} + div.document { background-color: white; text-align: left; diff --git a/doc/source/index.rst b/doc/source/index.rst index 34c2c456..c2c1e58b 100644 --- a/doc/source/index.rst +++ b/doc/source/index.rst @@ -13,9 +13,8 @@ package that can be used to: `OPTIMICA `_ or `Dymola `_. - JModelica.org should also work as it has a similar API than OPTIMICA. - Process ``*.mat`` output files that were generated by - OPTIMICA, JModelica.org, Dymola or + OPTIMICA, Dymola or `OpenModelica `_. - Run unit tests as part of the library development. - Refactor Modelica libraries.