try: return omc.sendExpression(cmd) except: loadLibraryInNewOM() return omc_new.sendExpression(cmd) annotationSimFlags="" (startTime,stopTime,tolerance,numberOfIntervals,stepSize)=sendExpressionOldOrNew('getSimulationOptions(%s,defaultTolerance=%s,defaultNumberOfIntervals=2500)' % (conf["modelName"],conf["default_tolerance"])) if conf["simCodeTarget"]=="C" and sendExpressionOldOrNew('classAnnotationExists(%s, __OpenModelica_simulationFlags)' % conf["modelName"]): for flag in sendExpressionOldOrNew('getAnnotationNamedModifiers(%s,"__OpenModelica_simulationFlags")' % conf["modelName"]): if flag=="The searched annotation name not found": # Old, stupid API continue val=sendExpressionOldOrNew('getAnnotationModifierValue(%s,"__OpenModelica_simulationFlags","%s")' % (conf["modelName"],flag)) flagVal=" -noemit -%s=%s" % (flag,val) if shared.simulationAcceptsFlag(flagVal, checkOutput=False, cwd=".."): annotationSimFlags+=" -%s=%s" % (flag,val) else: with open(errFile, 'a+') as fp: fp.write("Ignoring simflag %s since it seems broken on HelloWorld\n" % flagVal) # TODO: Detect and handle the case where RT_CLOCK is not available in OMC total_before = omc.sendExpression("OpenModelica.Scripting.Internal.Time.timerTock(OpenModelica.Scripting.Internal.Time.RT_CLOCK_SIMULATE_TOTAL)") start=monotonic() if conf.get("fmi"): cmd='"" <> buildModelFMU(%s,fileNamePrefix="%s",fmuType="%s",version="%s",platforms={"static"})' % (conf["modelName"],conf["fileName"].replace(".","_"),conf["fmuType"],conf["fmi"]) else: cmd='translateModel(%s,tolerance=%g,outputFormat="%s",numberOfIntervals=%d,variableFilter="%s",fileNamePrefix="%s")' % (conf["modelName"],tolerance,outputFormat,2*numberOfIntervals,variableFilter,conf["fileName"]) with open(errFile, 'a+') as fp: fp.write("Running command: %s\n"%(cmd)) try:
print(fmisimulatorversion) else: if allTestsFmi: raise Exception("No OMSimulator; trying to simulate using FMI") print("No OMSimulator") sys.stdout.flush() try: os.unlink("HelloWorld") except OSError: pass subprocess.check_output(["%s/bin/omc" % omhome, "%ssimCodeTarget=Cpp" % ("+" if rmlStyle else "--"), "HelloWorld.mos"], stderr=subprocess.STDOUT) if os.path.exists("HelloWorld"): print("Have C++ HelloWorld simulation executable") haveCppRuntime=simulationAcceptsFlag("") if haveCppRuntime: print("Have C++ runtime") else: print("C++ HelloWorld simulation executable failed to run") else: haveCppRuntime=False print("No C++ runtime") sys.stdout.flush() try: subprocess.check_output(["%s/bin/omc" % omhome, "Architecture.mos"], stderr=subprocess.STDOUT) except subprocess.CalledProcessError: print("Patching ModelicaServices for Architecture bug...") for f in glob.glob(omhome + "/lib/omlibrary/ModelicaServices*/package.mo") + glob.glob(omhome + "/lib/omlibrary/Modelica */Constants.mo"):