Skip to content
This repository has been archived by the owner on Aug 15, 2023. It is now read-only.

Commit

Permalink
Merge pull request #80 from fusion-energy/develop
Browse files Browse the repository at this point in the history
removing print statements
  • Loading branch information
shimwell authored Oct 13, 2021
2 parents f0908be + 92f40c6 commit 904c8a2
Show file tree
Hide file tree
Showing 4 changed files with 120 additions and 25 deletions.
29 changes: 24 additions & 5 deletions openmc_dagmc_wrapper/Tally.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from openmc.data import REACTION_MT, REACTION_NAME

from openmc_dagmc_wrapper import Materials
from .utils import create_material, silently_remove_file, find_bounding_box
from .utils import find_bounding_box


class Tally(openmc.Tally):
Expand All @@ -33,8 +33,12 @@ def tally_type(self, value):
output_options = (
[
"TBR",
"heating",
"flux",
"heating",
"photon_heating",
"neutron_heating",
"neutron_flux",
"photon_flux",
"absorption",
"neutron_effective_dose",
"photon_effective_dose",
Expand All @@ -57,6 +61,9 @@ def tally_type(self, value):

def set_score(self):
flux_scores = [
"flux",
"neutron_flux",
"photon_flux",
"neutron_fast_flux",
"photon_fast_flux",
"neutron_spectra",
Expand Down Expand Up @@ -141,11 +148,11 @@ class CellTallies:
Usage:
my_mats = odw.Materials(....)
my_tallies = odw.CellTallies(
tally_types=['TBR', "flux"],
tally_types=['TBR', "neutron_flux"],
target=["Be", 2],
materials=my_mats
)
my_tallies = odw.CellTallies(tally_types=['TBR', "flux"], target=[2])
my_tallies = odw.CellTallies(tally_types=['TBR', "neutron_flux"], target=[2])
Args:
tally_types ([type]): [description]
Expand Down Expand Up @@ -451,14 +458,25 @@ def compute_filters(tally_type):
neutron_particle_filter = openmc.ParticleFilter(["neutron"])

additional_filters = []
if tally_type == "neutron_fast_flux":
if tally_type == "neutron_flux":
additional_filters = [neutron_particle_filter]
elif tally_type == "photon_flux":
additional_filters = [photon_particle_filter]

elif tally_type == "neutron_heating":
additional_filters = [neutron_particle_filter]
elif tally_type == "photon_heating":
additional_filters = [photon_particle_filter]

elif tally_type == "neutron_fast_flux":
energy_bins = [1e6, 1000e6]
energy_filter = openmc.EnergyFilter(energy_bins)
additional_filters = [neutron_particle_filter, energy_filter]
elif tally_type == "photon_fast_flux":
energy_bins = [1e6, 1000e6]
energy_filter = openmc.EnergyFilter(energy_bins)
additional_filters = [photon_particle_filter, energy_filter]

elif tally_type == "neutron_spectra":
energy_bins = openmc.mgxs.GROUP_STRUCTURES["CCFE-709"]
energy_filter = openmc.EnergyFilter(energy_bins)
Expand All @@ -467,6 +485,7 @@ def compute_filters(tally_type):
energy_bins = openmc.mgxs.GROUP_STRUCTURES["CCFE-709"]
energy_filter = openmc.EnergyFilter(energy_bins)
additional_filters = [photon_particle_filter, energy_filter]

elif tally_type == "neutron_effective_dose":
energy_function_filter_n = openmc.EnergyFunctionFilter(
energy_bins_n, dose_coeffs_n
Expand Down
2 changes: 0 additions & 2 deletions openmc_dagmc_wrapper/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,6 @@ def process_results(

# access the tallies
for tally in statepoint.tallies.values():
print(f"processing {tally.name}")
if tally.name.endswith("TBR"):

data_frame = tally.get_pandas_dataframe()
Expand Down Expand Up @@ -322,7 +321,6 @@ def process_results(
",", "-"), )

elif "_on_3D_mesh" in tally.name:
print(f"processing {tally.name}")
mesh_id = 1
mesh = statepoint.meshes[mesh_id]

Expand Down
93 changes: 93 additions & 0 deletions tests/test_tallies/test_mesh_tally_2d.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@

import tarfile
import unittest
import urllib.request
from pathlib import Path

import openmc
import openmc_dagmc_wrapper as odw
from openmc_plasma_source import FusionRingSource


class TestMeshTally2D(unittest.TestCase):
"""Tests the MeshTally2D class functionality"""

def setUp(self):

if not Path("tests/v0.0.2.tar.gz").is_file():
url = "https://github.com/fusion-energy/neutronics_workflow/archive/refs/tags/v0.0.2.tar.gz"
urllib.request.urlretrieve(url, "tests/v0.0.2.tar.gz")

tar = tarfile.open("tests/v0.0.2.tar.gz", "r:gz")
tar.extractall("tests")
tar.close()

self.h5m_filename_smaller = "tests/neutronics_workflow-0.0.2/example_01_single_volume_cell_tally/stage_2_output/dagmc.h5m"
self.h5m_filename_bigger = "tests/neutronics_workflow-0.0.2/example_02_multi_volume_cell_tally/stage_2_output/dagmc.h5m"

def test_incorrect_mesh_tally_2d(self):
"""Set a mesh_tally_2d that is not accepted which should raise an
error"""
def incorrect_mesh_tally_2d():
odw.MeshTally2D("coucou", plane="xy")

self.assertRaises(ValueError, incorrect_mesh_tally_2d)

def test_incorrect_mesh_tally_2d_type(self):
"""Set a mesh_tally_2d that is the wrong type which should raise an
error"""
def incorrect_mesh_tally_2d_type():
odw.MeshTally2D(1, plane="xy")

self.assertRaises(TypeError, incorrect_mesh_tally_2d_type)

def test_shape_of_resulting_png(self):
"""Runs a simulation with a 2d mesh tally and checks png images are
produced"""

geometry = odw.Geometry(h5m_filename=self.h5m_filename_smaller)
materials = odw.Materials(
h5m_filename=self.h5m_filename_smaller,
correspondence_dict={
"mat1": "Be",
},
)
tally1 = odw.MeshTally2D(
tally_type="neutron_flux",
plane="xy",
bounding_box=self.h5m_filename_smaller,
mesh_resolution=(10, 200)
)
tally2 = odw.MeshTally2D(
tally_type="neutron_flux",
plane="xz",
bounding_box=self.h5m_filename_smaller,
mesh_resolution=(20, 100)
)
tally3 = odw.MeshTally2D(
tally_type="neutron_flux",
plane="yz",
bounding_box=self.h5m_filename_smaller,
mesh_resolution=(30, 500)
)

tallies = openmc.Tallies([tally1, tally2, tally3])

settings = odw.FusionSettings()
settings.batches = 2
settings.particles = 100
settings.photon_transport = False
settings.source = FusionRingSource(fuel="DT", radius=1)

my_model = openmc.Model(
materials=materials,
geometry=geometry,
settings=settings,
tallies=tallies)
statepoint_file = my_model.run()

odw.process_results(statepoint_file, fusion_power=1e9)

assert Path('neutron_flux_on_2D_mesh_xy.png').exists()
assert Path('neutron_flux_on_2D_mesh_xz.png').exists()
assert Path('neutron_flux_on_2D_mesh_yz.png').exists()
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@

import tarfile
import unittest
import urllib.request
Expand All @@ -7,8 +8,8 @@
import openmc_dagmc_wrapper as odw


class TestMeshTallies(unittest.TestCase):
"""Tests the MeshTallies class functionality"""
class TestMeshTally3D(unittest.TestCase):
"""Tests the MeshTally3D class functionality"""

def setUp(self):

Expand All @@ -23,22 +24,6 @@ def setUp(self):
self.h5m_filename_smaller = "tests/neutronics_workflow-0.0.2/example_01_single_volume_cell_tally/stage_2_output/dagmc.h5m"
self.h5m_filename_bigger = "tests/neutronics_workflow-0.0.2/example_02_multi_volume_cell_tally/stage_2_output/dagmc.h5m"

def test_incorrect_mesh_tally_2d(self):
"""Set a mesh_tally_2d that is not accepted which should raise an
error"""
def incorrect_mesh_tally_2d():
odw.MeshTally2D("coucou", plane="xy")

self.assertRaises(ValueError, incorrect_mesh_tally_2d)

def test_incorrect_mesh_tally_2d_type(self):
"""Set a mesh_tally_2d that is the wrong type which should raise an
error"""
def incorrect_mesh_tally_2d_type():
odw.MeshTally2D(1, plane="xy")

self.assertRaises(TypeError, incorrect_mesh_tally_2d_type)

def test_incorrect_mesh_tally_3d(self):
"""Set a mesh_tally_3d that is not accepted which should raise an
error"""
Expand Down

0 comments on commit 904c8a2

Please sign in to comment.