diff --git a/openmc/cell.py b/openmc/cell.py index f950963d27..23d10f74d1 100644 --- a/openmc/cell.py +++ b/openmc/cell.py @@ -547,7 +547,11 @@ class Cell(object): if self.region is not None: # Set the region attribute with the region specification - element.set("region", str(self.region)) + region = str(self.region) + if region.startswith('('): + region = region[1:-1] + if len(region) > 0: + element.set("region", region) # Only surfaces that appear in a region are added to the geometry # file, so the appropriate check is performed here. First we create diff --git a/openmc/region.py b/openmc/region.py index ce970f8120..8fd7e5181d 100644 --- a/openmc/region.py +++ b/openmc/region.py @@ -232,6 +232,11 @@ class Intersection(Region): def __init__(self, *nodes): self.nodes = list(nodes) + def __and__(self, other): + new = Intersection(*self.nodes) + new.nodes.append(other) + return new + def __iter__(self): for n in self.nodes: yield n @@ -304,6 +309,11 @@ class Union(Region): def __init__(self, *nodes): self.nodes = list(nodes) + def __or__(self, other): + new = Union(*self.nodes) + new.nodes.append(other) + return new + def __iter__(self): for n in self.nodes: yield n diff --git a/openmc/surface.py b/openmc/surface.py index c88c4ccc7c..da8524a4eb 100644 --- a/openmc/surface.py +++ b/openmc/surface.py @@ -8,7 +8,7 @@ from six import add_metaclass, string_types import numpy as np from openmc.checkvalue import check_type, check_value, check_greater_than -from openmc.region import Region, Intersection +from openmc.region import Region, Intersection, Union # A static variable for auto-generated Surface IDs @@ -1736,6 +1736,18 @@ class Halfspace(Region): self.surface = surface self.side = side + def __and__(self, other): + if isinstance(other, Intersection): + return Intersection(self, *other.nodes) + else: + return Intersection(self, other) + + def __or__(self, other): + if isinstance(other, Union): + return Union(self, *other.nodes) + else: + return Union(self, other) + def __invert__(self): return -self.surface if self.side == '+' else +self.surface diff --git a/tests/test_asymmetric_lattice/inputs_true.dat b/tests/test_asymmetric_lattice/inputs_true.dat index 84b81964c6..f6b6b13e47 100644 --- a/tests/test_asymmetric_lattice/inputs_true.dat +++ b/tests/test_asymmetric_lattice/inputs_true.dat @@ -1 +1 @@ -25bfa163360c4c48a9f51c4cde33c4fb9080e472e11b11ad6d01452d90bcb57d123b95bb4ba6b92178e0c678a38e7d8fc136430e9c105b2be8d7243b5561c641 \ No newline at end of file +3d7e640e5d8553a67324a6b91c9de23ae8c053dee05d9b194b15b7508a94985e32eec409253df2afd9134f295e8cbf2a5d75891eae7f73df1773a70db12f94dc \ No newline at end of file diff --git a/tests/test_create_fission_neutrons/inputs_true.dat b/tests/test_create_fission_neutrons/inputs_true.dat index d2093f8dce..f38a95603b 100644 --- a/tests/test_create_fission_neutrons/inputs_true.dat +++ b/tests/test_create_fission_neutrons/inputs_true.dat @@ -1 +1 @@ -2feaef10cd32d90d89bf3f1c10cddcb7b1c2daaf739dfe13427c3453168cef0d9f57d272bab24d4493bdcae6f97e2afdf636f5b966a7a93d1d16edb6728cc2eb \ No newline at end of file +9c36e3ae973f59a70a6ec46d6d83a13099e5bbe13881f2064dd02aebafeb40b131ccb0f1455d20a06602b8a2fb3f332c77784159f2a98a6a14ae614f15b2ef8e \ No newline at end of file diff --git a/tests/test_diff_tally/inputs_true.dat b/tests/test_diff_tally/inputs_true.dat index 9a67475791..4d969f443f 100644 --- a/tests/test_diff_tally/inputs_true.dat +++ b/tests/test_diff_tally/inputs_true.dat @@ -1 +1 @@ -df5a0ee7d353fe25344496058cea42e3244a7ab32c13c34c03b4b2f6adf88579f08a71ec0d22d8d264e50e3663717068ff54308e2d16aed8e085c222a8c2fdbd \ No newline at end of file +ce6a747ab6bf33bafb449f6b6eeb5f3962c1b45824620d2e0c93c04de36d38da8b37db71a3593d68cd61b8c3cd3cb1df2505e6c5a1726f1d1e6fb7b65ecf30f2 \ No newline at end of file diff --git a/tests/test_distribmat/inputs_true.dat b/tests/test_distribmat/inputs_true.dat index d21da2f894..80dc10454e 100644 --- a/tests/test_distribmat/inputs_true.dat +++ b/tests/test_distribmat/inputs_true.dat @@ -1 +1 @@ -6ae54c198e7659503d297e40be746a5bd72b35909fceed4b3ef357876b781946c0ea5021342556ef21f4034fa9e42b2c6014077c0efd3459dc063e6da4b12b59 \ No newline at end of file +be2dea743311bea603f69ce9f1982d16a22f2cf98f8cae81209d21adad4ec6d842d2b715020dfca399a3cb6c4a178bb2db455a70b5da83412f2d738e86be00e4 \ No newline at end of file diff --git a/tests/test_energy_cutoff/inputs_true.dat b/tests/test_energy_cutoff/inputs_true.dat index ed7b3acfce..4d10c42c86 100644 --- a/tests/test_energy_cutoff/inputs_true.dat +++ b/tests/test_energy_cutoff/inputs_true.dat @@ -1 +1 @@ -3c242912caf520c09de59edc2911d886fe77041577c1ab6a57985527f5b9e34d79d74c1fefff13d83462909d37d2318626cc14dcc717ce42f32420a799bd5c58 \ No newline at end of file +1befa239029aec6a9dd792b4b615168bc476ccc3589c289d63ba15742411c4c377bc46957800dce15e2b0867e8c5c7449ba8fb4f09c527cf5e5c9bba5b2f61ea \ No newline at end of file diff --git a/tests/test_filter_mesh/inputs_true.dat b/tests/test_filter_mesh/inputs_true.dat index d98e2f6f78..c9c54fea94 100644 --- a/tests/test_filter_mesh/inputs_true.dat +++ b/tests/test_filter_mesh/inputs_true.dat @@ -1 +1 @@ -c0882d16048d434219d32ed7b875615e00142b55ab78be5b51e0195e23cb534a3aa5a8e9c212f0bfff96c452177315deb1264421d688438814560b4131c88930 \ No newline at end of file +f4b4a63f8015b98b3f9b297834d548ed2f175dc92dcd6cd9a5c7ab38d98d1a57795372ae87b14027784ae28068eac5ac2243dca56444e0ebe4f0a53df449b2ad \ No newline at end of file diff --git a/tests/test_iso_in_lab/inputs_true.dat b/tests/test_iso_in_lab/inputs_true.dat index 454f891cd6..8ceef77054 100644 --- a/tests/test_iso_in_lab/inputs_true.dat +++ b/tests/test_iso_in_lab/inputs_true.dat @@ -1 +1 @@ -57d1ece4aa9633e5fc6d2fce9f7bba444d02046e0cdadc6e53efdf591b6e50fd0e5a14b956b7ad10710b4535b10354899e2ffc783fd78de5ccd09a061cb5678d \ No newline at end of file +f579ac15478188287c6d8ddc700e0037180f7214c41913b21e15b021860ace7037879f3b485e455dcf709b9f6003d31226878bd5b32c653b2b81101f6cf44d57 \ No newline at end of file diff --git a/tests/test_mg_basic/inputs_true.dat b/tests/test_mg_basic/inputs_true.dat index 6834e8e64c..1c48115641 100644 --- a/tests/test_mg_basic/inputs_true.dat +++ b/tests/test_mg_basic/inputs_true.dat @@ -1 +1 @@ -12abd69924751d1cf2a296ce799bfb2a6a4e744ffc49eef5a5cee8b764254caa3783c406cff71238c5608b454f451953479fb4caad45460a013225ab8de2271e \ No newline at end of file +6f9eff262e0d09cf0c7a175bef4e0661381e0c0ea99c1f45febc103a0f4fa844758f1b4504db4a13d16098bbf2879b2d8af7b1465736028d59c4673b5909ff05 \ No newline at end of file diff --git a/tests/test_mg_max_order/inputs_true.dat b/tests/test_mg_max_order/inputs_true.dat index ddb555692e..d3673f31f4 100644 --- a/tests/test_mg_max_order/inputs_true.dat +++ b/tests/test_mg_max_order/inputs_true.dat @@ -1 +1 @@ -1f82e622b36562a0a14536fe24c95ee9c901c428f7f082f245afae5c699ccd647aaf31a49790822ceb7ec136bdb75f8e25c3677642f73702ca2e30b058f6b440 \ No newline at end of file +979466e614ad705a010a9ff3e93788c936b73658d6e684b7ba6ed88786793d43ee362d3dcf2501b0762f3077bf59b0cb1f340dd86f04d1929f2081b137859017 \ No newline at end of file diff --git a/tests/test_mg_nuclide/inputs_true.dat b/tests/test_mg_nuclide/inputs_true.dat index 95f65c29e0..d300a3915d 100644 --- a/tests/test_mg_nuclide/inputs_true.dat +++ b/tests/test_mg_nuclide/inputs_true.dat @@ -1 +1 @@ -ec7f0697d22668dcc4cdaf134c58b9f84137730d52cb44264ee9205369abcf995b2f66847d620715cd609bd2f5f865294374978f8fb89f182962e40801171cba \ No newline at end of file +f128ba46838cf23029c4830bddc2612eefafb979f6e1844fea2575710b0eb558882eb9466cacfd00d994bc201c19541999b96b8cf0de4a11e102f71d0bb58a9c \ No newline at end of file diff --git a/tests/test_mg_tallies/inputs_true.dat b/tests/test_mg_tallies/inputs_true.dat index 1663d02d53..c96689f678 100644 --- a/tests/test_mg_tallies/inputs_true.dat +++ b/tests/test_mg_tallies/inputs_true.dat @@ -1 +1 @@ -8f9b2d1ba196fc0ad2e70647fb8691c5fc06b64b78f17414149a7fadfe63dd7e431830f73cb239e9c84f01e88896bf3f3d3cad1f57645bd63936dcc7db67e8a9 \ No newline at end of file +05a9778a42c28a65e29b467482d7ca6f74fb5cca425ff5ed0d63425030740f4bdb2e376b42adaad94ee1587ec1774b0516a4426309700025eff578eb7d5845f7 \ No newline at end of file diff --git a/tests/test_mgxs_library_ce_to_mg/inputs_true.dat b/tests/test_mgxs_library_ce_to_mg/inputs_true.dat index a4592254f8..f717da6178 100644 --- a/tests/test_mgxs_library_ce_to_mg/inputs_true.dat +++ b/tests/test_mgxs_library_ce_to_mg/inputs_true.dat @@ -1 +1 @@ -74f306b40647c6d7125af404234bbd6883ae88a446b00f828fcda9adc8bca5167b544b23d083c802e2c0630f7fcec9052e31bced490cc94b3e3193512359cb96 \ No newline at end of file +14ee7ab57a1a2e8b2d567771d7092cbbd2892f540aefc6f61721e257bbc87598606eea509d2b83d1c9afc88f6b943f6eea6a85711c82a909395c9d7dca8115e0 \ No newline at end of file diff --git a/tests/test_mgxs_library_condense/inputs_true.dat b/tests/test_mgxs_library_condense/inputs_true.dat index 6b3f5ab3a2..def328dac7 100644 --- a/tests/test_mgxs_library_condense/inputs_true.dat +++ b/tests/test_mgxs_library_condense/inputs_true.dat @@ -1 +1 @@ -4291b40470e7d59383c9e51c4178ca923b698cb1aaea16c1982fe3789ca980df10a65b84fb5021dacd4d290ebc232c2579f99b6c990fb6b8f28f67eef2aabcb2 \ No newline at end of file +8409f264b45150e8f28f0f37347d6ebca6b1e0d8c3cd6eb9c2004bf74ecb454514e830ff4b67ade5f492d43465e1cb98b6c597563dd7566f76036fec4f0d882a \ No newline at end of file diff --git a/tests/test_mgxs_library_distribcell/inputs_true.dat b/tests/test_mgxs_library_distribcell/inputs_true.dat index f00c2133da..194cb810ea 100644 --- a/tests/test_mgxs_library_distribcell/inputs_true.dat +++ b/tests/test_mgxs_library_distribcell/inputs_true.dat @@ -1 +1 @@ -df187239f7481867cc09138709da90bc28eeb647b4bcbb08b894e7fdf6ff45510341b77e34754c2358f0e0665f8e552bb1eafed8c42cd2c50595b60366320ce4 \ No newline at end of file +a7ce96604b3e79e5333e872d50e5f459d8ccbd8317a50a942a5c51c5a76a1a1a4e640c9ec58c1c7c75fc74344dac4789608ca30a49b442fda1f2c25636d12051 \ No newline at end of file diff --git a/tests/test_mgxs_library_hdf5/inputs_true.dat b/tests/test_mgxs_library_hdf5/inputs_true.dat index 6b3f5ab3a2..def328dac7 100644 --- a/tests/test_mgxs_library_hdf5/inputs_true.dat +++ b/tests/test_mgxs_library_hdf5/inputs_true.dat @@ -1 +1 @@ -4291b40470e7d59383c9e51c4178ca923b698cb1aaea16c1982fe3789ca980df10a65b84fb5021dacd4d290ebc232c2579f99b6c990fb6b8f28f67eef2aabcb2 \ No newline at end of file +8409f264b45150e8f28f0f37347d6ebca6b1e0d8c3cd6eb9c2004bf74ecb454514e830ff4b67ade5f492d43465e1cb98b6c597563dd7566f76036fec4f0d882a \ No newline at end of file diff --git a/tests/test_mgxs_library_mesh/inputs_true.dat b/tests/test_mgxs_library_mesh/inputs_true.dat index 70799f1474..5b24e099bc 100644 --- a/tests/test_mgxs_library_mesh/inputs_true.dat +++ b/tests/test_mgxs_library_mesh/inputs_true.dat @@ -1 +1 @@ -03d894a7995ac40f7971b17349b460f4b563cb1c94abaa7e7241e6f7edad7f0cb80d3f80829db14ea6b7d70d18197cb15e308047cd10f699d834178eeb6396be \ No newline at end of file +15f4829f02d43e357875a7ee9ad89beced200dffd3d7cad0d75d67f2f8b826d9e0b3510128b2b45462a33389b7313b94fc658b3b9525fff618a24f7d1b859bcb \ No newline at end of file diff --git a/tests/test_mgxs_library_no_nuclides/inputs_true.dat b/tests/test_mgxs_library_no_nuclides/inputs_true.dat index 6b3f5ab3a2..def328dac7 100644 --- a/tests/test_mgxs_library_no_nuclides/inputs_true.dat +++ b/tests/test_mgxs_library_no_nuclides/inputs_true.dat @@ -1 +1 @@ -4291b40470e7d59383c9e51c4178ca923b698cb1aaea16c1982fe3789ca980df10a65b84fb5021dacd4d290ebc232c2579f99b6c990fb6b8f28f67eef2aabcb2 \ No newline at end of file +8409f264b45150e8f28f0f37347d6ebca6b1e0d8c3cd6eb9c2004bf74ecb454514e830ff4b67ade5f492d43465e1cb98b6c597563dd7566f76036fec4f0d882a \ No newline at end of file diff --git a/tests/test_mgxs_library_nuclides/inputs_true.dat b/tests/test_mgxs_library_nuclides/inputs_true.dat index ed6f4d4432..2c711a28a2 100644 --- a/tests/test_mgxs_library_nuclides/inputs_true.dat +++ b/tests/test_mgxs_library_nuclides/inputs_true.dat @@ -1 +1 @@ -eed0190893105747f0146472dfea86ca58b9fc2e8d039961d9fef8f235f79da32215f9b59b840419e6b69c5a04544b4659f2634b63e3a76b6b0f8c75d05e416c \ No newline at end of file +4e11714b20d7ce463df075b15c68fe7c7f9c3fa20833e6aeb15c00e9367ed4c965f063802807cc0b48dc2b3314b3d36236c0d68996b8894e425e824226ca9998 \ No newline at end of file diff --git a/tests/test_multipole/inputs_true.dat b/tests/test_multipole/inputs_true.dat index 3b2b43ec73..23f8ea5774 100644 --- a/tests/test_multipole/inputs_true.dat +++ b/tests/test_multipole/inputs_true.dat @@ -1 +1 @@ -2be927608035759f52a2ac88b2c84e28c06e0f7905187bfd4695fecd80f417e727d8879c52fe03253938f7aa0301061f72dce9b5ae46b8675049b5bc4d9525a0 \ No newline at end of file +bc434e6aa07ab96a26b2fa7f589df1d1431ba4385d59721b588817efa6d9e2a94ba6e633d85ff60855464b6c520724d59600fb69d2f9af33ed421eedcf0ac255 \ No newline at end of file diff --git a/tests/test_periodic/inputs_true.dat b/tests/test_periodic/inputs_true.dat index ed1bc7d1b4..8af35b65c3 100644 --- a/tests/test_periodic/inputs_true.dat +++ b/tests/test_periodic/inputs_true.dat @@ -1 +1 @@ -259ea7c22920ddea0bc076ee77d35e76f36d2c7043cb8d036b182a11fd7d0f6524e3cbd9c6b0bf4a1af905ebe10b765d3d43e43e899d3edbb601baf6fd172365 \ No newline at end of file +17a7828d1e2bd6e0708fe9d88183f71a59751a88b835b85efbc2578dd48fba76caf6cc765a855debdba2a9697b12ade74b22c2cb60a1a7e8c38e40fae2f60cf0 \ No newline at end of file diff --git a/tests/test_tallies/inputs_true.dat b/tests/test_tallies/inputs_true.dat index 3c5b58f80a..490ec05a55 100644 --- a/tests/test_tallies/inputs_true.dat +++ b/tests/test_tallies/inputs_true.dat @@ -1 +1 @@ -c01691348435ace955eb9ba8c6771f4e62cef427d1ce935971683f87bdadb9f4695379d9d664511213e883b6588d341d8e6265a4e36676f40bdbf3be6cc39898 \ No newline at end of file +c50546581bb45ded4dc9d82940e40c8da25a44c1582d03087062d3869248f8ddfb55ace4757896e591edff7dd8ac5fad0a1ca284f2995d693467f688587aee0d \ No newline at end of file diff --git a/tests/test_tally_aggregation/inputs_true.dat b/tests/test_tally_aggregation/inputs_true.dat index 9511228d9a..05948f5875 100644 --- a/tests/test_tally_aggregation/inputs_true.dat +++ b/tests/test_tally_aggregation/inputs_true.dat @@ -1 +1 @@ -2ca11b519f903c106940ca4095764a5decab2c474f76a13a0869a9527db7e5bb5733b53b18b4dbb2a5e0dd0ae58cf55017491dae94d41b8094c1140d9079beb8 \ No newline at end of file +971a09ed7e8f2fb7e6d551b5e4c339be5fec8587b9d7f221a44a1da8148d7666944c6acbbc620c0878f2e581ba36a76d60a75254cece0c9fb962dbbf37092e15 \ No newline at end of file diff --git a/tests/test_tally_arithmetic/inputs_true.dat b/tests/test_tally_arithmetic/inputs_true.dat index 8cf6c4ff5d..4988561d6a 100644 --- a/tests/test_tally_arithmetic/inputs_true.dat +++ b/tests/test_tally_arithmetic/inputs_true.dat @@ -1 +1 @@ -530c54691a4f2df131627849dd58c5e6f331ede786c1ffff0b1126c4c0fe64929a15113699103a05f2c6178ec90be4a3d6fc12b80c32ec608ed4a59c965ef2e4 \ No newline at end of file +f8540bc1864c98ecbf771928a3bedb22c5d9ddc50eadd2ffabecf08ef990499c310eb4678a57d0fdd84b01768a575036722acbc5cf4d1374b5ca0dbf4e8aac25 \ No newline at end of file diff --git a/tests/test_tally_slice_merge/inputs_true.dat b/tests/test_tally_slice_merge/inputs_true.dat index 2e6daf4fac..5e2f0fb57e 100644 --- a/tests/test_tally_slice_merge/inputs_true.dat +++ b/tests/test_tally_slice_merge/inputs_true.dat @@ -1 +1 @@ -8ce48c0217ed0e9a151a96307db9bf3b2d897f8f1d36bbc1f96e24cad914bd6eaa0510e70d9c54f222fb5178bfe515eaaa4aebd11cbcd3f6c757749fddee6e9d \ No newline at end of file +ce47a39f54d87a57b7eb565540c25fd624e1655307e38577ce956c0d5899827660ce48b61c7f29c7032eb802347ec4f757ea4c1d1145fa2ba93c174d315ba27a \ No newline at end of file diff --git a/tests/test_triso/inputs_true.dat b/tests/test_triso/inputs_true.dat index 0ca3943f42..2e941fbbf9 100644 --- a/tests/test_triso/inputs_true.dat +++ b/tests/test_triso/inputs_true.dat @@ -1 +1 @@ -3a356b5b6d0aaa3db8c601521e1837a6870c5e5f6d1068f4f3e9b896c0107517d99ff9676311221633169b4d79dc1c4076bff84130e6de16df7ace4da5481a60 \ No newline at end of file +a343c0643d038ae72a6c33feac17e78cb4e7fa0aabab8617573da5f48e33ea41bae979421eea941bf7c46796681c67a3763d9a326019fc29a064bd3c7d47aac9 \ No newline at end of file diff --git a/tests/test_volume_calc/inputs_true.dat b/tests/test_volume_calc/inputs_true.dat index ddfd497de4..b33b0cc2f7 100644 --- a/tests/test_volume_calc/inputs_true.dat +++ b/tests/test_volume_calc/inputs_true.dat @@ -1 +1 @@ -382404d3061d2c847c87654ab12594ba3fbb7e3a82327da872b5fe2029018ef4d5d3376fceba5c2229ea6f85e1fb63650caf54baed3f3b0304137fde61a98d63 \ No newline at end of file +7d90f0eb17bccfeebe2ddce4aaab6a9ae6996a7e613b58949f120f8558bf71a37d9edb0393fff4b4d2718604de60313730266a62021b9c9a1e134be8f1a81f67 \ No newline at end of file