Esempio n. 1
0
def createReportFromSettings(cs):
    """
    Create BEGINNING reports, given a settings file.

    This will construct a reactor from the given settings and create BOL reports for
    that reactor/settings.
    """
    # not sure if this is necessary, but need to investigate more to understand possible
    # side-effects before removing. Probably better to get rid of all uses of
    # getMasterCs(), then we can remove all setMasterCs() calls without worrying.
    settings.setMasterCs(cs)

    blueprint = blueprints.loadFromCs(cs)
    r = reactors.factory(cs, blueprint)
    report = reports.ReportContent("Overview")
    pm = getPluginManagerOrFail()
    report.title = r.name

    with directoryChangers.ForcedCreationDirectoryChanger("{}-reports".format(
            cs.caseTitle)):
        _ = pm.hook.getReportContents(
            r=r,
            cs=cs,
            report=report,
            stage=reports.ReportStage.Begin,
            blueprint=blueprint,
        )
        site = report.writeReports()

    return site
Esempio n. 2
0
        def setUp(self):
            self.cs = settings.Settings(fName=ARMI_RUN_PATH)
            bp = blueprints.loadFromCs(self.cs)

            settings.setMasterCs(self.cs)
            self.o = OperatorMPI(self.cs)
            self.o.r = reactors.factory(self.cs, bp)
            self.action = DistributeStateAction()
            self.action.o = self.o
            self.action.r = self.o.r
Esempio n. 3
0
File: case.py Progetto: bakta5/armi
 def initializeOperator(self):
     """Creates and returns an Operator."""
     with DirectoryChanger(self.cs.inputDirectory):
         self._initBurnChain()
         o = operators.factory(self.cs)
         r = reactors.factory(self.cs, self.bp)
         o.initializeInterfaces(r)
         # Set this here to make sure the full duration of initialization is properly captured.
         # Cannot be done in reactors since the above self.bp call implicitly initializes blueprints.
         r.core.timeOfStart = self._startTime
         return o
Esempio n. 4
0
    def load(self, cycle, node, cs=None, bp=None, geom=None):
        cs = cs or self.loadCS()
        settings.setMasterCs(cs)
        bp = bp or self.loadBlueprints()
        geom = geom or self.loadGeometry()

        if self._reactor is None:
            self._reactor = reactors.factory(cs, bp, geom)

        dbTimeStep = utils.getTimeStepNum(cycle, node, cs)

        self.updateFromDB(self._reactor, dbTimeStep)

        return self._reactor
Esempio n. 5
0
    def test_plotCartesianBlock(self):
        from armi import settings
        from armi.reactor import blueprints, reactors

        with TemporaryDirectoryChanger():
            cs = settings.Settings(
                os.path.join(TEST_ROOT, "tutorials", "c5g7-settings.yaml"))

            blueprint = blueprints.loadFromCs(cs)
            r = reactors.factory(cs, blueprint)
            for name, bDesign in blueprint.blockDesigns.items():
                b = bDesign.construct(cs, blueprint, 0, 1, 1, "AA", {})
                plotting.plotBlockDiagram(b, "{}.svg".format(name), True)
            self.assertTrue(os.path.exists("uo2.svg"))
            self.assertTrue(os.path.exists("mox.svg"))
Esempio n. 6
0
    def invoke(self):

        nodes = self.args.nodes

        if self.args.h5db is None:
            # Just do begining stuff, no database is given...
            if self.cs is not None:
                site = createReportFromSettings(cs)
                if self.args.view:
                    webbrowser.open(site)
            else:
                raise RuntimeError(
                    "No Settings with Blueprint or Database, cannot gerenate a report"
                )

        else:
            report = reports.ReportContent("Overview")
            pm = getPluginManagerOrFail()
            db = databaseFactory(self.args.h5db, "r")
            if self.args.bp is not None:
                blueprint = self.args.bp

            with db:
                with directoryChangers.ForcedCreationDirectoryChanger(
                        "reportsOutputFiles"):

                    dbNodes = list(db.genTimeSteps())
                    cs = db.loadCS()
                    if self.args.bp is None:
                        blueprint = db.loadBlueprints()
                    r = reactors.factory(cs, blueprint)
                    report.title = r.name
                    pluginContent = getPluginManagerOrFail(
                    ).hook.getReportContents(
                        r=r,
                        cs=cs,
                        report=report,
                        stage=reports.ReportStage.Begin,
                        blueprint=blueprint,
                    )
                    stage = reports.ReportStage.Standard
                    for cycle, node in dbNodes:
                        if nodes is not None and (cycle, node) not in nodes:
                            continue

                        if (self.args.min_node is not None
                                and (cycle, node) < self.args.min_node):
                            continue

                        if (self.args.max_node is not None
                                and (cycle, node) > self.args.max_node):
                            continue

                        r = db.load(cycle, node)
                        cs = db.loadCS()

                        pluginContent = pm.hook.getReportContents(
                            r=r,
                            cs=cs,
                            report=report,
                            stage=stage,
                            blueprint=blueprint)
                    stage = reports.ReportStage.End
                    pluginContent = pm.hook.getReportContents(
                        r=r,
                        cs=cs,
                        report=report,
                        stage=stage,
                        blueprint=blueprint)
                    site = report.writeReports()
                    if self.args.view:
                        webbrowser.open(site)