Пример #1
0
def main(argv, pkg):
    """
    Main function.
    """

    try:
        from code_saturne.cs_exec_environment import set_modules, source_rcfile
    except Exception:
        from cs_exec_environment import set_modules, source_rcfile

    test_mode, force_link, keep_going, src_dir, dest_dir, \
        version, cflags, cxxflags, fcflags, libs = process_cmd_line(argv, pkg)

    if (version):
        pkg = pkg.get_alternate_version(version)

    set_modules(pkg)  # Set environment modules if present
    source_rcfile(pkg)  # Source rcfile if defined

    if test_mode == True:
        dest_dir = None

    retcode = compile_and_link(pkg,
                               src_dir,
                               destdir=dest_dir,
                               opt_cflags=cflags,
                               opt_cxxflags=cxxflags,
                               opt_fcflags=fcflags,
                               opt_libs=libs,
                               force_link=force_link,
                               keep_going=keep_going)

    sys.exit(retcode)
Пример #2
0
def main(argv, pkg):
    """
    Main function.
    """

    options, args = process_cmd_line(argv, pkg)

    if not args:
        return 1

    cmd = [pkg.get_io_dump()]
    cmd += argv

    # Set environment modules if present

    cs_exec_environment.set_modules(pkg)
    cs_exec_environment.source_rcfile(pkg)

    # Run executable

    return cs_exec_environment.run_command(cmd)
Пример #3
0
def main(argv, pkg):
    """
    Start Qt and a session of the application.
    """

    from code_saturne.cs_exec_environment import set_modules, source_rcfile
    set_modules(pkg)
    source_rcfile(pkg)

    # Test the package name to know which modules have to be imported
    images_path = os.path.join(pkg.get_dir('pkgdatadir'), 'images')

    case = process_cmd_line(argv)

    app = QApplication(sys.argv)
    # Defines the name of subdirectory under .config
    app.setOrganizationName(pkg.code_name)
    app.setOrganizationDomain(pkg.url)
    # Defines the name of the configuration file
    app.setApplicationName("studymanagergui")
    app.lastWindowClosed.connect(app.quit)

    # Locale detection
    locale = QLocale.system().name()
    translator = QTranslator(app)
    if translator.load("qt_" + locale,
                       QLibraryInfo.location(QLibraryInfo.TranslationsPath)):
        app.installTranslator(translator)

    from code_saturne.studymanager_gui.MainView import MainView
    mv = MainView(cmd_package=pkg, cmd_case=case)

    try:
        mv.show()
    except:
        print("\n  Unable to display a Qt window.")
        print("  Please check your display environment.\n")
        sys.exit(0)

    sys.exit(app.exec_())
Пример #4
0
def run_studymanager(pkg, options):
    """
    Main function
      1. parse the command line,
      2. read the file of parameters
      3. create all studies,
      4. compile sources
      5. run all cases
      6. compare results
      7. plot result
      8. reporting by mail
    """

    # Source environment if required before importing studymanager modules, as
    # it pulls Python packages such as matplotlib which may not be in
    # the standard path.
    from code_saturne.cs_exec_environment import set_modules, source_rcfile, enquote_arg
    set_modules(pkg)
    source_rcfile(pkg)

    from code_saturne.studymanager.cs_studymanager_study import Studies

    # Scripts

    exe = os.path.join(pkg.get_dir('bindir'), pkg.name)
    if sys.platform.startswith('win'):
        exe = exe + ".com"
    exe = enquote_arg(exe)

    dif = pkg.get_io_dump()

    for p in exe, dif:
        if not os.path.isfile(p):
            print("Error: executable %s not found." % p)
            if not sys.platform.startswith('win'):
                return 1

    dif += " -d"

    # Read the file of parameters

    studies = Studies(pkg, options, exe, dif)
    if options.debug:
        print(" run_studymanager() >> Studies are initialized")
    if options.update_xml == False:
        os.chdir(studies.getDestination())
    else:
        os.chdir(studies.getRepository())

    # Print header

    studies.reporting(" -------------")
    studies.reporting(" Study Manager")
    studies.reporting(" -------------\n")
    studies.reporting(" Code name:         " + pkg.name)
    studies.reporting(" Kernel version:    " + pkg.version)
    studies.reporting(" Install directory: " + pkg.get_dir('exec_prefix'))
    studies.reporting(" File dump:         " + dif)

    studies.reporting("\n Informations:")
    studies.reporting(" -------------\n")
    studies.reporting(" Date:                   " +
                      datetime.now().strftime("%A %B %d %H:%M:%S %Y"))
    studies.reporting(" Platform:               " + platform.platform())
    studies.reporting(" Computer:               " + platform.uname()[1] +
                      "  " + release())
    studies.reporting(" Process Id:             " + str(os.getpid()))
    studies.reporting(" User name:              " + getpass.getuser())
    studies.reporting(" Repository:             " + studies.getRepository())
    dest = studies.getDestination()
    studies.reporting(" Destination:            " + dest)
    doc = os.path.join(dest, options.log_file)
    studies.reporting(" Ext. subprocesses logs: " + doc)
    studies.reporting("\n")

    # Update repository if needed

    if options.update:
        studies.updateRepository()

    # Update only xml data if needed

    if options.update_xml:
        studies.updateRepository(True)

    # Test sources compilation for all cases

    if options.test_compilation:
        studies.test_compilation()

    # Check if xml for result directories in the repository are OK

    if options.compare:
        studies.check_compare(destination=False)

    if options.post:
        studies.check_script(destination=False)
        studies.check_plots_and_input(destination=False)

    # Create all studies and all cases

    if options.compare or options.post or options.runcase:
        studies.create_studies()

    # Create dependency graph based on studies and all cases

    if options.create_graph:
        studies.create_graph()

    # Preprocessing and run all cases
    if options.debug:
        print(" run_studymanager() >> Starts running...")

    if options.runcase:
        studies.run()

    if options.debug:
        print(" run_studymanager() >> Exits runs")

    # Compare checkpoint files

    if options.compare:
        studies.check_compare()
        studies.compare()

    # Postprocess results and probes

    if options.post:
        checked_scripts = studies.check_script()
        if checked_scripts:
            studies.scripts()
        studies.check_plots_and_input()
        studies.postpro()
        studies.plot()

    studies.reporting("\n --------------------")
    studies.reporting(" End of Study Manager")
    studies.reporting(" --------------------")

    # Reporting - attached files are either pdf or
    # raw tex files if pdflatex is disabled
    attached_file = studies.build_reports("report_global", "report_detailed")

    if len(options.addresses.split()) > 0:
        send_report(pkg.code_name, studies.logs(), studies.getlabel(),
                    options.addresses.split(), attached_file)

    return 0