Ejemplo n.º 1
0
                while True:
                    try:
                        i = regionNames.index("region0")
                        regionNames[i] = None
                    except ValueError:
                        break
            else:
                regionNames = [None]

            regions = None

            sol = SolutionDirectory(case)
            if not decomposeParWithRegion:
                if self.opts.regions or self.opts.region != None:
                    print_("Building Pseudocases")
                    regions = RegionCases(sol, clean=True, processorDirs=False)

            if self.opts.regions:
                regionNames = sol.getRegions(defaultRegion=True)

            for theRegion in regionNames:
                theCase = path.normpath(case)
                if theRegion != None and not decomposeParWithRegion:
                    theCase += "." + theRegion

                if oldApp():
                    argv = [self.opts.decomposer, ".", theCase]
                else:
                    argv = [self.opts.decomposer, "-case", theCase]
                    if foamVersion() >= (
                            2, 0) and not self.opts.doFunctionObjects:
Ejemplo n.º 2
0
    def run(self):
        if self.opts.keeppseudo and (not self.opts.regions
                                     and self.opts.region == None):
            warning(
                "Option --keep-pseudocases only makes sense for multi-region-cases"
            )

        if self.opts.region:
            regionNames = self.opts.region
        else:
            regionNames = [None]

        regions = None

        casePath = self.parser.casePath()
        self.checkCase(casePath)
        #        self.addLocalConfig(casePath)

        self.addToCaseLog(casePath, "Starting")
        self.prepareHooks()

        if self.opts.regions or self.opts.region != None:
            print_("Building Pseudocases")
            sol = SolutionDirectory(casePath, archive=None)
            regions = RegionCases(sol, clean=True)

            if self.opts.regions:
                regionNames = sol.getRegions()

        self.processPlotLineOptions(autoPath=casePath)

        lam = self.getParallel(SolutionDirectory(casePath, archive=None))

        self.clearCase(SolutionDirectory(casePath,
                                         archive=None,
                                         parallel=lam is not None),
                       runParallel=lam is not None)

        self.checkAndCommit(SolutionDirectory(casePath, archive=None))

        self.initBlink()

        for theRegion in regionNames:
            args = self.buildRegionArgv(casePath, theRegion)
            self.setLogname()
            run = AnalyzedRunner(BoundingLogAnalyzer(
                progress=self.opts.progress,
                doFiles=self.opts.writeFiles,
                singleFile=self.opts.singleDataFilesOnly,
                doTimelines=True),
                                 silent=self.opts.progress or self.opts.silent,
                                 splitThres=self.opts.splitDataPointsThreshold
                                 if self.opts.doSplitDataPoints else None,
                                 argv=self.replaceAutoInArgs(args),
                                 server=self.opts.server,
                                 lam=lam,
                                 restart=self.opts.restart,
                                 logname=self.opts.logname,
                                 compressLog=self.opts.compress,
                                 logTail=self.opts.logTail,
                                 noLog=self.opts.noLog,
                                 remark=self.opts.remark,
                                 parameters=self.getRunParameters(),
                                 echoCommandLine=self.opts.echoCommandPrefix,
                                 jobId=self.opts.jobId)

            run.createPlots(customRegexp=self.lines_,
                            splitThres=self.opts.splitDataPointsThreshold
                            if self.opts.doSplitDataPoints else None,
                            writeFiles=self.opts.writeFiles)

            if self.cursesWindow:
                self.cursesWindow.setAnalyzer(run.analyzer)
                self.cursesWindow.setRunner(run)
                run.analyzer.addTimeListener(self.cursesWindow)

            self.addWriteAllTrigger(run,
                                    SolutionDirectory(casePath, archive=None))
            self.addLibFunctionTrigger(
                run, SolutionDirectory(casePath, archive=None))
            self.runPreHooks()

            if self.blink1:
                run.addTicker(lambda: self.blink1.ticToc())

            run.start()

            if len(regionNames) > 1:
                self.setData({theRegion: run.data})
            else:
                self.setData(run.data)

            self.runPostHooks()

            self.reportUsage(run)
            self.reportRunnerData(run)

            if theRegion != None:
                print_("Syncing into master case")
                regions.resync(theRegion)

        self.stopBlink()

        if regions != None:
            if not self.opts.keeppseudo:
                print_("Removing pseudo-regions")
                regions.cleanAll()
            else:
                for r in sol.getRegions():
                    if r not in regionNames:
                        regions.clean(r)

        self.addToCaseLog(casePath, "Ended")