Add an OpenMC model container to BEAVRS.

This commit is contained in:
nuclearkevin 2024-12-31 13:17:58 -06:00
parent 70a8e1aff0
commit 76d535306d
2 changed files with 33 additions and 10 deletions

View file

@ -106,6 +106,9 @@ class BEAVRS(object):
nuclides.append(openmc.Nuclide(nuc)) nuclides.append(openmc.Nuclide(nuc))
self.depletion_nuclides = nuclides self.depletion_nuclides = nuclides
# The OpenMC model container to be populated.
self.model = openmc.Model()
def set_boron_ppm(self, ppm): def set_boron_ppm(self, ppm):
self.mats = openmc_materials(ppm=ppm) self.mats = openmc_materials(ppm=ppm)
@ -116,12 +119,15 @@ class BEAVRS(object):
materials_file = openmc.Materials(self.mats.values()) materials_file = openmc.Materials(self.mats.values())
materials_file.export_to_xml() materials_file.export_to_xml()
def get_openmc_plots(self):
self.plots = Plots(self.mats)
return openmc.Plots(self.plots.plots)
def write_openmc_plots(self): def write_openmc_plots(self):
self.plots = Plots(self.mats) self.plots = Plots(self.mats)
plot_file = openmc.Plots(self.plots.plots) self.get_openmc_plots().export_to_xml()
plot_file.export_to_xml()
def write_openmc_settings(self): def get_openmc_settings_file(self):
settings_file = openmc.Settings() settings_file = openmc.Settings()
settings_file.batches = self.settings_batches settings_file.batches = self.settings_batches
settings_file.inactive = self.settings_inactive settings_file.inactive = self.settings_inactive
@ -139,16 +145,36 @@ class BEAVRS(object):
output = {'tallies': self.settings_output_tallies, output = {'tallies': self.settings_output_tallies,
'summary': self.settings_summary} 'summary': self.settings_summary}
settings_file.output = output settings_file.output = output
settings_file.export_to_xml() return settings_file
def write_openmc_tallies(self): def write_openmc_settings(self):
self.get_openmc_settings_file().export_to_xml()
def get_openmc_tallies_file(self):
if len(self.tallies) == 0: return if len(self.tallies) == 0: return
tallies_file = openmc.Tallies() tallies_file = openmc.Tallies()
for mesh in self.tally_meshes: for mesh in self.tally_meshes:
tallies_file.add_mesh(mesh) tallies_file.add_mesh(mesh)
for tally in self.tallies: for tally in self.tallies:
tallies_file.append(tally) tallies_file.append(tally)
tallies_file.export_to_xml() return tallies_file
def write_openmc_tallies(self):
if len(self.tallies) == 0: return
self.get_openmc_tallies_file().export_to_xml()
def build_openmc_model(self):
self.model = openmc.Model()
self.model.geometry = self.openmc_geometry
self.model.materials = openmc.Materials(self.mats.values())
self.model.settings = self.get_openmc_settings_file()
if len(self.tallies) != 0:
self.model.tallies = self.get_openmc_tallies_file()
self.model.plots = self.get_openmc_plots()
return self.model
def write_openmc_model(self):
self.build_openmc_model().export_to_model_xml()
def set_params(self, particles=None, batches=None, inactive=None): def set_params(self, particles=None, batches=None, inactive=None):
if particles: self.settings_particles = particles if particles: self.settings_particles = particles

View file

@ -23,8 +23,5 @@ if not len(args) == 0:
p.print_help() p.print_help()
b = BEAVRS(is_symmetric=options.is_symmetric, is_2d=options.is_2d) b = BEAVRS(is_symmetric=options.is_symmetric, is_2d=options.is_2d)
b.write_openmc_geometry() b.write_openmc_model()
b.write_openmc_materials()
b.write_openmc_plots()
b.write_openmc_settings()