We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Some particle lost tracking issues were reported when trying to make a dagmc model from a Paramak Reactor class that contained thin volumes.
Example is here for me to look into
Full script including geometry and openmc part to reproduce error
def make_dagmc_model(): import paramak # all units in degrees inboard_angle_offset = 5 outboard_angle_offset = 12 # all units in cm plasma_offset = 10 # Whether or not a TBR>1 can be achieved is highly dependent on VV thickness and material vv_thickness = 2 first_wall_thickness = 1 inboard_blanket_thickness = 100 outboard_blanket_thickness = 120 rotation_angle = 180 num_points = 200 # Cooling channel: cc_thickness = 2 # Multiplier: mult_thickness = 1 # Outer VV: outer_vv_thickness = 3 # Colors: plasma_c = [0.94, 0.012, 1] tank_c = [0.01176, 0.988, 0.776] cc_c = tank_c mult_c = [1, 0, 0] vv_c = [0.4, 0.4, 0.4] outer_vv_c = vv_c plasma = paramak.Plasma( major_radius=330, minor_radius=113, triangularity=0.33, elongation=1.84, rotation_angle=rotation_angle, name="plasma", color=plasma_c, ) ### INBOARD BLANKET ### ib_cooling_channel = paramak.BlanketFP( cc_thickness, 90 + inboard_angle_offset, 270 - inboard_angle_offset, plasma=plasma, offset_from_plasma=plasma_offset, rotation_angle=rotation_angle, name="inboard_cc", color=cc_c, num_points=num_points, ) ib_multiplier = paramak.BlanketFP( mult_thickness, 90 + inboard_angle_offset, 270 - inboard_angle_offset, plasma=plasma, offset_from_plasma=plasma_offset + cc_thickness, rotation_angle=rotation_angle, name="inboard_multiplier", color=mult_c, num_points=num_points, ) ib_outer_vv = paramak.BlanketFP( outer_vv_thickness, 90 + inboard_angle_offset, 270 - inboard_angle_offset, plasma=plasma, offset_from_plasma=plasma_offset + cc_thickness + mult_thickness, rotation_angle=rotation_angle, name="inboard_outer_vv", color=outer_vv_c, num_points=num_points, ) ib_tank = paramak.BlanketFP( inboard_blanket_thickness, 90 + inboard_angle_offset, 270 - inboard_angle_offset, plasma=plasma, offset_from_plasma=plasma_offset + cc_thickness + mult_thickness + outer_vv_thickness, rotation_angle=rotation_angle, name="inboard_tank", color=tank_c, num_points=num_points, ) ### OUTBOARD BLANKET ### ob_cooling_channel = paramak.BlanketFP( cc_thickness, -90 + outboard_angle_offset, 90 - outboard_angle_offset, plasma=plasma, offset_from_plasma=plasma_offset, rotation_angle=rotation_angle, name="outboard_cc", color=cc_c, num_points=num_points, ) ob_multiplier = paramak.BlanketFP( mult_thickness, -90 + outboard_angle_offset, 90 - outboard_angle_offset, plasma=plasma, offset_from_plasma=plasma_offset + cc_thickness, rotation_angle=rotation_angle, name="outboard_multiplier", color=mult_c, num_points=num_points, ) ob_outer_vv = paramak.BlanketFP( outer_vv_thickness, -90 + outboard_angle_offset, 90 - outboard_angle_offset, plasma=plasma, offset_from_plasma=plasma_offset + cc_thickness + mult_thickness, rotation_angle=rotation_angle, name="outboard_outer_vv", color=outer_vv_c, num_points=num_points, ) ob_tank = paramak.BlanketFP( outboard_blanket_thickness, -90 + outboard_angle_offset, 90 - outboard_angle_offset, plasma=plasma, offset_from_plasma=plasma_offset + cc_thickness + mult_thickness + outer_vv_thickness, rotation_angle=rotation_angle, name="outboard_tank", color=tank_c, num_points=num_points, ) vv = paramak.BlanketFP( vv_thickness, -90, 270, plasma=plasma, offset_from_plasma=plasma_offset - vv_thickness - 1, rotation_angle=rotation_angle, name="vv", color=vv_c, num_points=num_points, ) first_wall = paramak.BlanketFP( first_wall_thickness, -90, 270, plasma=plasma, offset_from_plasma=plasma_offset - vv_thickness - first_wall_thickness, rotation_angle=rotation_angle, name="first_wall", color=[0.6, 0.6, 0.6], num_points=num_points, ) reactor = paramak.Reactor( shapes_and_components=[ plasma, vv, first_wall, ob_cooling_channel, ob_multiplier, ob_outer_vv, ob_tank, ib_cooling_channel, ib_multiplier, ib_outer_vv, ib_tank, ] ) reactor.export_dagmc_h5m(filename="dagmc.h5m", min_mesh_size=1, max_mesh_size=20) def run_neutronics_simulation(): import openmc import openmc_data_downloader as odd import math # simplified material definitions have been used to keen this example minimal mat_plasma = openmc.Material(name="plasma") mat_plasma.add_element("H", 1, "ao") mat_plasma.set_density("g/cm3", 0.00001) mat_inboard_cc = openmc.Material(name="inboard_cc") mat_inboard_cc.add_element("Cu", 1, "ao") mat_inboard_cc.set_density("g/cm3", 8.96) mat_inboard_multiplier = openmc.Material(name="inboard_multiplier") mat_inboard_multiplier.add_element("Cu", 1, "ao") mat_inboard_multiplier.set_density("g/cm3", 8.96) mat_inboard_outer_vv = openmc.Material(name="inboard_outer_vv") mat_inboard_outer_vv.add_element("Cu", 1, "ao") mat_inboard_outer_vv.set_density("g/cm3", 8.96) mat_inboard_tank = openmc.Material(name="inboard_tank") mat_inboard_tank.add_element("Cu", 1, "ao") mat_inboard_tank.set_density("g/cm3", 8.96) mat_outboard_cc = openmc.Material(name="outboard_cc") mat_outboard_cc.add_element("Fe", 1, "ao") mat_outboard_cc.set_density("g/cm3", 8.96) mat_outboard_multiplier = openmc.Material(name="outboard_multiplier") mat_outboard_multiplier.add_element("Fe", 1, "ao") mat_outboard_multiplier.set_density("g/cm3", 8.96) mat_outboard_outer_vv = openmc.Material(name="outboard_outer_vv") mat_outboard_outer_vv.add_element("Fe", 1, "ao") mat_outboard_outer_vv.set_density("g/cm3", 8.96) mat_outboard_tank = openmc.Material(name="outboard_tank") mat_outboard_tank.add_element("Fe", 1, "ao") mat_outboard_tank.set_density("g/cm3", 8.96) mat_vv = openmc.Material(name="vv") mat_vv.add_element("W", 1, "ao") mat_vv.set_density("g/cm3", 19.3) mat_first_wall = openmc.Material(name="first_wall") mat_first_wall.add_element("Fe", 1, "ao") mat_first_wall.set_density("g/cm3", 7.7) materials = openmc.Materials( [ mat_plasma, mat_inboard_cc, mat_inboard_multiplier, mat_inboard_outer_vv, mat_inboard_tank, mat_outboard_cc, mat_outboard_multiplier, mat_outboard_outer_vv, mat_outboard_tank, mat_vv, mat_first_wall, ] ) # downloads the nuclear data and sets the openmc_cross_sections environmental variable odd.just_in_time_library_generator(libraries="ENDFB-7.1-NNDC", materials=materials) # makes use of the dagmc geometry dag_univ = openmc.DAGMCUniverse("dagmc.h5m") # creates an edge of universe boundary surface vac_surf = openmc.Sphere(r=10000, surface_id=9999, boundary_type="vacuum") # specifies the region as below the universe boundary region = -vac_surf # creates a cell from the region and fills the cell with the dagmc geometry containing_cell = openmc.Cell(cell_id=9999, region=region, fill=dag_univ) geometry = openmc.Geometry(root=[containing_cell]) # creates a simple isotropic neutron source in the center with 14MeV neutrons my_source = openmc.Source() # the distribution of radius is just a single value at the plasma major radius radius = openmc.stats.Discrete([293.0], [1]) # the distribution of source z values is just a single value z_values = openmc.stats.Discrete([0], [1]) # the distribution of source azimuthal angles values is a uniform distribution between 0 and 0.5 Pi # these angles must be the same as the reflective angles angle = openmc.stats.Uniform(a=0.0, b=math.radians(90)) # this makes the ring source using the three distributions and a radius my_source.space = openmc.stats.CylindricalIndependent(r=radius, phi=angle, z=z_values, origin=(0.0, 0.0, 0.0)) # sets the direction to isotropic my_source.angle = openmc.stats.Isotropic() # sets the energy distribution to a Muir distribution neutrons my_source.energy = openmc.stats.Muir(e0=14080000.0, m_rat=5.0, kt=20000.0) # specifies the simulation computational intensity settings = openmc.Settings() settings.batches = 10 settings.particles = 10000 settings.inactive = 0 settings.run_mode = "fixed source" settings.source = my_source # adds a tally to record the heat deposited in entire geometry cell_tally = openmc.Tally(name="heating") cell_tally.scores = ["heating"] # creates a mesh that covers the geometry mesh = openmc.RegularMesh() mesh.dimension = [100, 100, 100] mesh.lower_left = [0, 0, -350] # x,y,z coordinates start at 0 as this is a sector model mesh.upper_right = [650, 650, 350] # makes a mesh tally using the previously created mesh and records heating on the mesh mesh_tally = openmc.Tally(name="heating_on_mesh") mesh_filter = openmc.MeshFilter(mesh) mesh_tally.filters = [mesh_filter] mesh_tally.scores = ["heating"] # groups the two tallies tallies = openmc.Tallies([cell_tally, mesh_tally]) # builds the openmc model my_model = openmc.Model(materials=materials, geometry=geometry, settings=settings, tallies=tallies) # starts the simulation my_model.run() make_dagmc_model() # run_neutronics_simulation()
The text was updated successfully, but these errors were encountered:
Increasing the num_points to 2000 helped when running this with the new workflow
Sorry, something went wrong.
shimwell
No branches or pull requests
Some particle lost tracking issues were reported when trying to make a dagmc model from a Paramak Reactor class that contained thin volumes.
Example is here for me to look into
Full script including geometry and openmc part to reproduce error
The text was updated successfully, but these errors were encountered: