1import os 2 3import openmc 4import openmc.model 5import pytest 6 7from tests.testing_harness import TestHarness, PyAPITestHarness 8 9 10def make_model(): 11 model = openmc.model.Model() 12 13 # Materials 14 moderator = openmc.Material(material_id=1) 15 moderator.set_density('g/cc', 1.0) 16 moderator.add_nuclide('H1', 2.0) 17 moderator.add_nuclide('O16', 1.0) 18 moderator.add_s_alpha_beta('c_H_in_H2O') 19 20 dense_fuel = openmc.Material(material_id=2) 21 dense_fuel.set_density('g/cc', 4.5) 22 dense_fuel.add_nuclide('U235', 1.0) 23 24 model.materials += [moderator, dense_fuel] 25 26 # Geometry 27 c1 = openmc.Cell(cell_id=1, fill=moderator) 28 mod_univ = openmc.Universe(universe_id=1, cells=(c1,)) 29 30 r0 = openmc.ZCylinder(r=0.3) 31 c11 = openmc.Cell(cell_id=11, fill=dense_fuel, region=-r0) 32 c11.temperature = [500, 700, 0, 800] 33 c12 = openmc.Cell(cell_id=12, fill=moderator, region=+r0) 34 fuel_univ = openmc.Universe(universe_id=11, cells=(c11, c12)) 35 36 lat = openmc.RectLattice(lattice_id=101) 37 lat.dimension = [2, 2] 38 lat.lower_left = [-2.0, -2.0] 39 lat.pitch = [2.0, 2.0] 40 lat.universes = [[fuel_univ]*2]*2 41 lat.outer = mod_univ 42 43 x0 = openmc.XPlane(x0=-3.0) 44 x1 = openmc.XPlane(x0=3.0) 45 y0 = openmc.YPlane(y0=-3.0) 46 y1 = openmc.YPlane(y0=3.0) 47 for s in [x0, x1, y0, y1]: 48 s.boundary_type = 'reflective' 49 c101 = openmc.Cell(cell_id=101, fill=lat, region=+x0 & -x1 & +y0 & -y1) 50 model.geometry.root_universe = openmc.Universe(universe_id=0, cells=(c101,)) 51 52 # Settings 53 model.settings.batches = 5 54 model.settings.inactive = 0 55 model.settings.particles = 1000 56 model.settings.source = openmc.Source(space=openmc.stats.Box( 57 [-1, -1, -1], [1, 1, 1])) 58 model.settings.temperature = {'tolerance': 1000, 'multipole': True} 59 60 # Tallies 61 tally = openmc.Tally() 62 tally.nuclides = ['U235', 'O16', 'total'] 63 tally.scores = ['total', 'fission', '(n,gamma)', 'elastic', '(n,p)'] 64 model.tallies.append(tally) 65 66 return model 67 68 69class MultipoleTestHarness(PyAPITestHarness): 70 def _get_results(self): 71 outstr = super()._get_results() 72 su = openmc.Summary('summary.h5') 73 outstr += str(su.geometry.get_all_cells()[11]) 74 return outstr 75 76 77def test_multipole(): 78 model = make_model() 79 harness = MultipoleTestHarness('statepoint.5.h5', model) 80 harness.main() 81