def BinCode(): b = "" c = "" mess = "" # default package is code_saturne (for convert...) from cs_package import package pkg = package() if CFD_Code() == CFD_Saturne: bindir = pkg.get_dir('bindir') b = os.path.join(bindir, "code_saturne") elif CFD_Code() == CFD_Neptune: from nc_package import package pkg = package() bindir = pkg.get_dir('bindir') b = os.path.join(bindir, "neptune_cfd") c = pkg.get_preprocessor() log.debug("BinCode -> \n %s\n %s" % (b, c)) return b, c, mess
def __get_exe(self, old_pkg): """ Return the name of the exe of the case, in order to mix Code_Saturne and NEPTUNE_CFD test cases in the same study. """ run_ref = os.path.join(self.__repo, self.label, "SCRIPTS", "runcase") # Read the runcase script from the Repository runcase = cs_runcase.runcase(run_ref) if runcase.cmd_name == "code_saturne": from Base.XMLinitialize import XMLinit from cs_package import package pkg = package(old_pkg.scriptdir) elif runcase.cmd_name == "neptune_cfd": from core.XMLinitialize import XMLinit from nc_package import package pkg = package(old_pkg.scriptdir) return runcase.cmd_name, pkg
def onSaturneHelpRefcard(self): from cs_package import package argv_info = ['--guide', 'refcard'] cs_info.main(argv_info, package())
def CheckCFD_CodeEnv(code): """ This method try to found the config file of the CFD I{code}. @param code: name of the searching code (CFD_Saturne or CFD_Neptune). @type theType: C{String} @rtype: C{True} or C{False} @return: C{True} if the searching code is found. """ mess = "" prefix = "" bindir = "" if code not in [CFD_Saturne, CFD_Neptune]: mess = cfdstudyMess.trMessage( ObjectTR.tr("CFDSTUDY_INVALID_SOLVER_NAME"), [code, CFD_Saturne, CFD_Neptune]) iok = False return iok, mess if code == CFD_Saturne: try: from cs_package import package iok = True except ImportError as e: mess = cfdstudyMess.trMessage(ObjectTR.tr("INFO_DLG_INVALID_ENV"), [code]) + e.__str__() if "cs_package" in e.__str__(): mess = mess + cfdstudyMess.trMessage( ObjectTR.tr("CHECK_CODE_PACKAGE"), ["cs_package", code]) elif "code_saturne" in e.__str__(): mess = mess + cfdstudyMess.trMessage( ObjectTR.tr("CHECK_PYTHON_PATH"), []) iok = False elif code == CFD_Neptune: try: from nc_package import package iok = True except ImportError as e: mess = cfdstudyMess.trMessage(ObjectTR.tr("INFO_DLG_INVALID_ENV"), [code]) + e.__str__() if "nc_package" in e.__str__(): mess = mess + cfdstudyMess.trMessage( ObjectTR.tr("CHECK_CODE_PACKAGE"), ["nc_package", code]) elif "neptune_cfd" in e.__str__(): mess = mess + cfdstudyMess.trMessage( ObjectTR.tr("CHECK_PYTHON_PATH"), []) iok = False else: raise ValueError("Invalid name of solver!") if iok: pkg = package() prefix = pkg.get_dir('prefix') log.debug("CheckCFD_CodeEnv -> prefix = %s" % (prefix)) bindir = pkg.get_dir('bindir') log.debug("CheckCFD_CodeEnv -> prefix = %s" % (bindir)) if not os.path.exists(prefix): mess = cfdstudyMess.trMessage( ObjectTR.tr("ENV_DLG_INVALID_DIRECTORY"), [prefix]) iok = False else: if not os.path.exists(bindir): mess = cfdstudyMess.trMessage( ObjectTR.tr("ENV_DLG_INVALID_DIRECTORY"), [bindir]) iok = False log.debug("CheckCFD_CodeEnv -> %s = %s" % (code, iok)) log.debug("CheckCFD_CodeEnv -> %s: %s" % (code, mess)) return iok, mess
def launchGUI(self, WorkSpace, aCase, sobjXML, Args): """ mw.dockWidgetBrowser is the Browser of the CFD MainView """ log.debug("launchGUI") from cs_gui import process_cmd_line if CFD_Code() == CFD_Saturne: from cs_package import package from code_saturne.Base.MainView import MainView elif CFD_Code() == CFD_Neptune: from nc_package import package from neptune_cfd.core.MainView import MainView if sobjXML == None: Title = "unnamed" else: Title = sobjXML.GetName() self.Workspace = WorkSpace pkg = package() case, splash = process_cmd_line(Args) try: mw = MainView(pkg, case, aCase) except: mess = "Error in Opening CFD GUI" QMessageBox.warning(None, "Warning", mess, QMessageBox.Ok, QMessageBox.NoButton) return None # Put the standard panel of the MainView inside a QDockWidget # in the SALOME Desktop aTitle = self.setWindowTitle_CFD(mw, aCase, Title) dsk = sgPyQt.getDesktop() dock = QDockWidget(aTitle) dock.setWidget(mw.frame) dock.setMinimumWidth(520) dsk.addDockWidget(Qt.RightDockWidgetArea, dock) dock.setVisible(True) dock.show() # Put the QTreeView of the MainView which is already inside a QDockWidget # in the SALOME Desktop BrowserTitle = aTitle + " Browser" mw.dockWidgetBrowser.setWindowTitle(BrowserTitle) dsk.addDockWidget(Qt.LeftDockWidgetArea, mw.dockWidgetBrowser) mw.dockWidgetBrowser.setVisible(True) mw.dockWidgetBrowser.show() mw.dockWidgetBrowser.raise_() dock.raise_() #Add Dock windows are managed by CFDGUI_Management class studyId = sgPyQt.getStudyId() aStudyCFD = aCase.GetFather() aCaseCFD = aCase xmlFileName = str(Title) _c_CFDGUI.set_d_CfdCases(studyId, dock, mw.dockWidgetBrowser, mw, aStudyCFD, aCaseCFD, xmlFileName, sobjXML) dock.visibilityChanged["bool"].connect( self.setdockWindowBrowserActivated) mw.dockWidgetBrowser.visibilityChanged["bool"].connect( self.setdockWindowActivated) dock.toggleViewAction().toggled["bool"].connect(self.setdockWB) mw.dockWidgetBrowser.toggleViewAction().toggled["bool"].connect( self.setdock) _c_CFDGUI.tabifyDockWindows(dsk, studyId) self.showDockWindows(studyId, xmlFileName, aCaseCFD.GetName(), aStudyCFD.GetName()) updateObjectBrowser() return mw
def onNeptuneHelpTutorial(self): from nc_package import package argv_info = ['--guide', 'tutorial'] cs_info.main(argv_info, package())
def onNeptuneHelpDoxygen(self): from nc_package import package argv_info = ['--guide', 'Doxygen'] cs_info.main(argv_info, package())
save_wd = os.getcwd() os.chdir(result_path) for a in argv: if os.path.isfile(a) and runcase_path: submit_cmd += ' ' + enquote_arg(runcase_path) runcase_path = None else: submit_cmd += ' ' + enquote_arg(a) return subprocess.call(submit_cmd, shell=True) os.chdir(save_wd) #------------------------------------------------------------------------------- if __name__ == '__main__': # Run package from cs_package import package pkg = package() retval = main(sys.argv[1:], pkg) sys.exit(retval) #------------------------------------------------------------------------------- # End #-------------------------------------------------------------------------------
def onSaturneHelpDoxygen(self): from cs_package import package argv_info = ['--guide', 'Doxygen'] cs_info.main(argv_info, package())
def build_template(self, package=None, study_name=None, case_name=None): """ Build batch file template """ import os, stat from cs_exec_environment import append_shell_shebang, \ append_script_comment, prepend_path_command if not package: import cs_package package = cs_package.package() self.lines = [] append_shell_shebang(self.lines) # Add batch system info if necessary batch_template = None config = configparser.ConfigParser() config.read(package.get_configfiles()) if config.has_option('install', 'batch'): batch_template = config.get('install', 'batch') if not os.path.isabs(batch_template): batch_template = os.path.join(package.get_batchdir(), 'batch.' + batch_template) fdt = open(batch_template, 'r') import re, string kwd1 = re.compile('nameandcase') # Determine or build default names if required if not case_name or not study_name: topdir, scriptdir = os.path.split(os.path.split(self.path)[0]) if scriptdir == 'SCRIPTS': studydir, casedir = os.path.split(topdir) studydir = os.path.split(studydir)[1] else: casedir = '' studydir = scriptdir if not case_name: if casedir: case_name = casedir else: case_name = '' if not study_name: study_name = studydir studycasename = study_name.lower() + case_name.lower() # For some systems, names are limited to 15 caracters studycasename = studycasename[:15] for line in fdt: line = line.rstrip() line = re.sub(kwd1, studycasename, line) self.lines.append(line) fdt.close() # Add command to execute. append_script_comment(self.lines, 'Ensure the correct command is found:') self.lines.append( prepend_path_command('PATH', package.get_dir("bindir"))) self.lines.append('') append_script_comment(self.lines, 'Run command:\n') # On Linux systems, add a backslash to prevent aliases if sys.platform.startswith('win'): run_cmd = '' else: run_cmd = '\\' run_cmd += package.name + ' run' self.run_cmd_line_id = len(self.lines) self.lines.append(run_cmd) self.save() st = os.stat(self.path) mode = st[stat.ST_MODE] os.chmod(self.path, mode | stat.S_IEXEC)
elif code == CFD_Neptune: try: from nc_package import package iok = True except ImportError,e: mess = ObjectTR.tr("INFO_DLG_INVALID_ENV").arg(code) + e.__str__() if "nc_package" in e.__str__(): mess = mess + " ; Check for nc_package file in NEPTUNE_CFD python package" elif "neptune_cfd" in e.__str__(): mess = mess + " ; Check PYTHONPATH then your installation " iok = False else: raise ApplicationError, "Invalid name of solver!" if iok: pkg = package() prefix = pkg.get_dir('prefix') log.debug("CheckCFD_CodeEnv -> prefix = %s" % (prefix)) bindir = pkg.get_dir('bindir') log.debug("CheckCFD_CodeEnv -> prefix = %s" % (bindir)) if not os.path.exists(prefix): mess1 = ObjectTR.tr("ENV_DLG_INVALID_DIRECTORY") mess = mess + mess1.arg(prefix) iok = False else: if not os.path.exists(bindir): mess2 = ObjectTR.tr("ENV_DLG_INVALID_DIRECTORY") mess = mess + mess2.arg(bindir) iok = False
if test_mode == True: dest_dir = None retcode = compile_and_link(pkg, src_dir, dest_dir, cflags, cxxflags, fcflags, libs, force_link, keep_going) sys.exit(retcode) #------------------------------------------------------------------------------- if __name__ == '__main__': # Retrieve package information (name, version, installation dirs, ...) from cs_package import package pkg = package(scriptdir=os.path.realpath(__file__)) # Check if we are in a build directory l = os.listdir(os.getcwd()) if "Makefile" in l and "libsaturne.la" in l and ".libs" in l: from cs_exec_environment import set_modules, source_rcfile mode, destdir = process_cmd_line_build(sys.argv[1:], pkg) install = False if mode == 'install': install = True retcode = link_build(pkg, mode, destdir) sys.exit(retcode)
config_file = os.path.join(top_builddir, config_file_base) else: top_builddir = os.path.abspath(os.getcwd()) t = os.path.split(top_builddir) while (t[1]): config_file = os.path.join(top_builddir, config_file_base) if os.path.isfile(config_file): break t = os.path.split(top_builddir) top_builddir = os.path.abspath(t[0]) # Retrieve package information (name, version, installation dirs, ...) from cs_package import package pkg = package(config_file=config_file, install_mode=True) src_dir = None if src_files: src_dir = os.path.dirname(os.path.dirname(sys.argv[0])) # Determine executable name exec_name = options.out_file if not exec_name: exec_name = 'cs_solver' if os.path.basename(sys.argv[0]) == 'neptune_cfd': exec_name = 'nc_solver' if options.mode == 'install': c = compile_install(pkg, src_dir, destdir=options.dest_dir)
return exec_name #------------------------------------------------------------------------------- if __name__ == '__main__': # Retrieve package information (name, version, installation dirs, ...) from cs_package import package # Note: some subtle Python issue requires reloading the package here # (incomplete config loaded otherwise on 2021 Debian sid with PETSc) pkg = package(reload_config=True) # Check mode and options options, src_files = process_cmd_line(sys.argv[1:], pkg) src_dir = None if src_files: src_dir = os.path.dirname(os.path.dirname(sys.argv[0])) # Determine executable name exec_name = options.out_file if not exec_name: exec_name = 'cs_solver' if os.path.basename(sys.argv[0]) == 'neptune_cfd': exec_name = 'nc_solver'
def launchGUI(self, WorkSpace, aCase, sobjXML, Args): """ mw.dockWidgetBrowser is the Browser of the CFD MainView """ log.debug("launchGUI") from cs_gui import process_cmd_line from code_saturne.Base.MainView import MainView if CFD_Code() == CFD_Saturne: from cs_package import package elif CFD_Code() == CFD_Neptune: from nc_package import package if sobjXML == None: Title = "unnamed" else: Title = sobjXML.GetName() self.Workspace = WorkSpace pkg = package() case, splash = process_cmd_line(Args) try: mw = MainView(pkg, case, aCase) except: mess = "Error in Opening CFD GUI" QMessageBox.warning(None, "Warning", mess, QMessageBox.Ok, QMessageBox.NoButton) return None # Put the standard panel of the MainView inside a QDockWidget # in the SALOME Desktop aTitle = self.setWindowTitle_CFD(mw, aCase, Title) dsk = sgPyQt.getDesktop() ##### objectBrowserDockWindow = findObjectBrowserDockWindow() self.mainWin = QMainWindow() self.mainWin.setWindowTitle(aTitle) self.mainWin.setCentralWidget(mw.centralwidget) self.mainWin.addDockWidget(Qt.LeftDockWidgetArea, mw.dockWidgetBrowser) ##### self.dockMainWin = QDockWidget(aTitle) self.dockMainWin.setWidget(self.mainWin) ## dsk.addDockWidget(Qt.LeftDockWidgetArea, self.dockMainWin) self.dockMainWin.setVisible(True) self.dockMainWin.show() self.dockMainWin.raise_() objectBrowserDockWindow.visibilityChanged["bool"].connect( self.resizeObjectBrowserDock) #Add Dock windows are managed by CFDGUI_Management class aStudyCFD = aCase.GetFather() aCaseCFD = aCase xmlFileName = str(Title) _c_CFDGUI.set_d_CfdCases(self.dockMainWin, mw, aStudyCFD, aCaseCFD, xmlFileName, sobjXML) dockMain = _c_CFDGUI.getDockWithCFDNames(aStudyCFD.GetName(), aCaseCFD.GetName(), xmlFileName) if dockMain != None: dockMain.visibilityChanged["bool"].connect( self.resizeMainWindowDock) updateObjectBrowser() return mw
def build_template(self, package=None, study_name=None, case_name=None): """ Build batch file template """ import os, stat from cs_exec_environment import append_shell_shebang, \ append_script_comment, prepend_path_command if not package: import cs_package package = cs_package.package() self.lines = [] append_shell_shebang(self.lines) # Add batch system info if necessary batch_template = None config = configparser.ConfigParser() config.read(package.get_configfiles()) if config.has_option('install', 'batch'): batch_template = config.get('install', 'batch') if not os.path.isabs(batch_template): batch_template = os.path.join(package.get_batchdir(), 'batch.' + batch_template) fdt = open(batch_template, 'r') import re, string kwd1 = re.compile('nameandcase') # Determine or build default names if required if not case_name or not study_name: topdir, scriptdir = os.path.split(os.path.split(self.path)[0]) if scriptdir == 'SCRIPTS': studydir, casedir = os.path.split(topdir) studydir = os.path.split(studydir)[1] else: casedir = '' studydir = scriptdir if not case_name: if casedir: case_name = casedir else: case_name = '' if not study_name: study_name = studydir studycasename = study_name.lower() + case_name.lower() # For some systems, names are limited to 15 caracters studycasename = studycasename[:15] for line in fdt: line = line.rstrip() line = re.sub(kwd1, studycasename, line) self.lines.append(line) fdt.close() # Add command to execute. append_script_comment(self.lines, 'Ensure the correct command is found:') self.lines.append(prepend_path_command('PATH', package.get_dir("bindir"))) self.lines.append('') append_script_comment(self.lines, 'Run command:\n') # On Linux systems, add a backslash to prevent aliases if sys.platform.startswith('win'): run_cmd = '' else: run_cmd = '\\' run_cmd += package.name + ' run' self.run_cmd_line_id = len(self.lines) self.lines.append(run_cmd) self.save() st = os.stat(self.path) mode = st[stat.ST_MODE] os.chmod(self.path, mode | stat.S_IEXEC)
def onNeptuneHelpManual(self): from nc_package import package argv_info = ['--guide', 'user'] cs_info.main(argv_info, package())
def onNeptuneHelpKernel(self): from nc_package import package argv_info = ['--guide', 'theory'] cs_info.main(argv_info, package())
def lauchGUI(self, WorkSpace, aCase, sobjXML, Args): """ mw.dockWidgetBrowser is the Browser of the CFD MainView """ log.debug("lauchGUI") from cs_gui import process_cmd_line if CFD_Code() == CFD_Saturne: from cs_package import package from code_saturne.Base.MainView import MainView elif CFD_Code() == CFD_Neptune: from nc_package import package from neptune_cfd.core.MainView import MainView if sobjXML == None: Title = "unnamed" else: Title = sobjXML.GetName() self.Workspace = WorkSpace pkg = package() case, splash = process_cmd_line(Args) mw = MainView(pkg, case, aCase) # Put the standard panel of the MainView inside a QDockWidget # in the SALOME Desktop aTitle = self.setWindowTitle_CFD(mw, aCase, Title) dsk = sgPyQt.getDesktop() dock = QDockWidget(aTitle) dock.setWidget(mw.frame) dock.setMinimumWidth(520) dsk.addDockWidget(Qt.RightDockWidgetArea, dock) dock.setVisible(True) dock.show() # Put the QTreeView of the MainView which is already inside a QDockWidget # in the SALOME Desktop BrowserTitle = aTitle + " Browser" mw.dockWidgetBrowser.setWindowTitle(BrowserTitle) dsk.addDockWidget(Qt.LeftDockWidgetArea, mw.dockWidgetBrowser) mw.dockWidgetBrowser.setVisible(True) mw.dockWidgetBrowser.show() mw.dockWidgetBrowser.raise_() dock.raise_() #Add Dock windows are managed by CFDGUI_Management class studyId = sgPyQt.getStudyId() aStudyCFD = aCase.GetFather() aCaseCFD = aCase xmlFileName = str(Title) _c_CFDGUI.set_d_CfdCases(studyId, dock, mw.dockWidgetBrowser, mw, aStudyCFD, aCaseCFD, xmlFileName, sobjXML) self.connect(dock, SIGNAL("visibilityChanged(bool)"), self.setdockWindowBrowserActivated) self.connect(mw.dockWidgetBrowser, SIGNAL("visibilityChanged(bool)"),self.setdockWindowActivated) self.connect(dock.toggleViewAction(), SIGNAL("toggled(bool)"), self.setdockWB) self.connect(mw.dockWidgetBrowser.toggleViewAction(), SIGNAL("toggled(bool)"), self.setdock) _c_CFDGUI.tabifyDockWindows(dsk, studyId) self.showDockWindows(studyId, xmlFileName, aCaseCFD.GetName(), aStudyCFD.GetName()) updateObjectBrowser() return mw
dest_dir = None retcode = compile_and_link(pkg, src_dir, dest_dir, cflags, cxxflags, fcflags, libs, force_link, keep_going) sys.exit(retcode) #------------------------------------------------------------------------------- if __name__ == '__main__': # Retrieve package information (name, version, installation dirs, ...) from cs_package import package pkg = package(scriptdir=os.path.realpath(__file__)) # Check if we are in a build directory l = os.listdir(os.getcwd()) if "Makefile" in l and "libsaturne.la" in l and ".libs" in l: from cs_exec_environment import set_modules, source_rcfile mode, destdir = process_cmd_line_build(sys.argv[1:], pkg) install = False if mode == 'install': install = True retcode = link_build(pkg, mode, destdir) sys.exit(retcode)