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
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
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
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
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"))
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)