411 lines
31 KiB
Text
411 lines
31 KiB
Text
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Modeling Hexagonal Lattices\n",
|
|
"In this example, we will create a hexagonal lattice and show how the orientation can be changed via the cell rotation property. Let's first just set up some materials and universes that we will use to fill the lattice."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"%matplotlib inline\n",
|
|
"import openmc"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"fuel = openmc.Material(name='fuel')\n",
|
|
"fuel.add_nuclide('U235', 1.0)\n",
|
|
"fuel.set_density('g/cm3', 10.0)\n",
|
|
"\n",
|
|
"fuel2 = openmc.Material(name='fuel2')\n",
|
|
"fuel2.add_nuclide('U238', 1.0)\n",
|
|
"fuel2.set_density('g/cm3', 10.0)\n",
|
|
"\n",
|
|
"water = openmc.Material(name='water')\n",
|
|
"water.add_nuclide('H1', 2.0)\n",
|
|
"water.add_nuclide('O16', 1.0)\n",
|
|
"water.set_density('g/cm3', 1.0)\n",
|
|
"\n",
|
|
"materials = openmc.Materials((fuel, fuel2, water))\n",
|
|
"materials.export_to_xml()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"With our three materials, we will set up two universes that represent pin-cells: one with a small pin and one with a big pin. Since we will be using these universes in a lattice, it's always a good idea to have an \"outer\" universe as well that is applied outside the defined lattice."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"r_pin = openmc.ZCylinder(r=0.25)\n",
|
|
"fuel_cell = openmc.Cell(fill=fuel, region=-r_pin)\n",
|
|
"water_cell = openmc.Cell(fill=water, region=+r_pin)\n",
|
|
"pin_universe = openmc.Universe(cells=(fuel_cell, water_cell))\n",
|
|
"\n",
|
|
"r_big_pin = openmc.ZCylinder(r=0.5)\n",
|
|
"fuel2_cell = openmc.Cell(fill=fuel2, region=-r_big_pin)\n",
|
|
"water2_cell = openmc.Cell(fill=water, region=+r_big_pin)\n",
|
|
"big_pin_universe = openmc.Universe(cells=(fuel2_cell, water2_cell))\n",
|
|
"\n",
|
|
"all_water_cell = openmc.Cell(fill=water)\n",
|
|
"outer_universe = openmc.Universe(cells=(all_water_cell,))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Now let's create a hexagonal lattice using the `HexLattice` class:"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"lattice = openmc.HexLattice()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"We need to set the `center` of the lattice, the `pitch`, an `outer` universe (which is applied to all lattice elements outside of those that are defined), and a list of `universes`. Let's start with the easy ones first. Note that for a 2D lattice, we only need to specify a single number for the pitch."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"lattice.center = (0., 0.)\n",
|
|
"lattice.pitch = (1.25,)\n",
|
|
"lattice.outer = outer_universe"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Now we need to set the `universes` property on our lattice. It needs to be set to a list of lists of Universes, where each list of Universes corresponds to a ring of the lattice. The rings are ordered from outermost to innermost, and within each ring the indexing starts at the \"top\". To help visualize the proper indices, we can use the `show_indices()` helper method."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 6,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
" (0, 0)\n",
|
|
" (0,17) (0, 1)\n",
|
|
" (0,16) (1, 0) (0, 2)\n",
|
|
"(0,15) (1,11) (1, 1) (0, 3)\n",
|
|
" (1,10) (2, 0) (1, 2)\n",
|
|
"(0,14) (2, 5) (2, 1) (0, 4)\n",
|
|
" (1, 9) (3, 0) (1, 3)\n",
|
|
"(0,13) (2, 4) (2, 2) (0, 5)\n",
|
|
" (1, 8) (2, 3) (1, 4)\n",
|
|
"(0,12) (1, 7) (1, 5) (0, 6)\n",
|
|
" (0,11) (1, 6) (0, 7)\n",
|
|
" (0,10) (0, 8)\n",
|
|
" (0, 9)\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"print(lattice.show_indices(num_rings=4))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Let's set up a lattice where the first element in each ring is the big pin universe and all other elements are regular pin universes. \n",
|
|
"\n",
|
|
"From the diagram above, we see that the outer ring has 18 elements, the first ring has 12, and the second ring has 6 elements. The innermost ring of any hexagonal lattice will have only a single element. \n",
|
|
"\n",
|
|
"We build these rings through 'list concatenation' as follows: "
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 7,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"outer_ring = [big_pin_universe] + [pin_universe]*17 # Adds up to 18\n",
|
|
"\n",
|
|
"ring_1 = [big_pin_universe] + [pin_universe]*11 # Adds up to 12\n",
|
|
"\n",
|
|
"ring_2 = [big_pin_universe] + [pin_universe]*5 # Adds up to 6\n",
|
|
"\n",
|
|
"inner_ring = [big_pin_universe]"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"We can now assign the rings (and the universes they contain) to our lattice. "
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 8,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"HexLattice\n",
|
|
"\tID =\t4\n",
|
|
"\tName =\t\n",
|
|
"\tOrientation =\ty\n",
|
|
"\t# Rings =\t4\n",
|
|
"\t# Axial =\tNone\n",
|
|
"\tCenter =\t(0.0, 0.0)\n",
|
|
"\tPitch =\t(1.25,)\n",
|
|
"\tOuter =\t3\n",
|
|
"\tUniverses \n",
|
|
" 2\n",
|
|
" 1 1\n",
|
|
" 1 2 1\n",
|
|
"1 1 1 1\n",
|
|
" 1 2 1\n",
|
|
"1 1 1 1\n",
|
|
" 1 2 1\n",
|
|
"1 1 1 1\n",
|
|
" 1 1 1\n",
|
|
"1 1 1 1\n",
|
|
" 1 1 1\n",
|
|
" 1 1\n",
|
|
" 1\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"lattice.universes = [outer_ring,\n",
|
|
" ring_1,\n",
|
|
" ring_2,\n",
|
|
" inner_ring]\n",
|
|
"print(lattice)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Now let's put our lattice inside a circular cell that will serve as the top-level cell for our geometry."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 9,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"outer_surface = openmc.ZCylinder(r=5.0, boundary_type='vacuum')\n",
|
|
"main_cell = openmc.Cell(fill=lattice, region=-outer_surface)\n",
|
|
"geometry = openmc.Geometry([main_cell])\n",
|
|
"geometry.export_to_xml()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Now let's create a plot to see what our geometry looks like."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 10,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAZAAAAGQCAIAAAAP3aGbAAAUTklEQVR4nO3d3dLbtg6FYbjTC++dqwdOHMf2J1P8AbGA95kc7JntNjUFroEombwdx2FAm9tt/r+TAkS7f3f/ByCWFZE08jcSZ3hGYBXlH0x9fvrvJMhqIrCqUEmoRi9fh/wqgsBKK1lCnSO/iiCw8iiVUOfIr6wILG2EVIvnUSK8pBFYksipbo+hI7kUEVgyCKm5aLsUEVjRkVMOaLtUEFhBkVNbkFzBEVixkFNBkFwxEVghkFNhkVyhEFibEVUq7leK2NqLwNqDnBJFw7UXgeWNqMqBhmsLAssJOZUSDZczAms5oqoCGi4fBNZCRFU1xNZqBNYSRFVlxNY6BNZkRBXuiK0VCKxpiCq8I7bmIrAmIKpwjtiahcAaQlShHbE1jsDqRFShD7E1gsC6jKjCOGKrzz+7/wPEkFaYiHK6ig6rFbWFFWi1LiGwviOqsBqx1YjAOkNUwROx9RWB9SPS6qrj+DxktxtT8ILbjcz60e1gbN4QVe1+CqmfEF7tmJrvCKxXpFWjq1H1jNhqxOx8QWD9QVS1G0mrOzKrHXP0gcD6hbRqNB5Vz4itRkzTOwKLqLpgblrdkVntyk/W8m+6k1btVqTVun9tSpRr3Q6La3/J6lihz7qk6qyt2mGRVpBWtoArBlbZi93N4a6NG8OrapZxrVvCmtd4kGeUcGPYodIMrtRhkVZIqVRhVwmsUhd1Iuc7NW4M+9Qp7/w/fq5zLVFZkZ0ekndYpBVKSV/wmQMr/cUD3uUu+7SBlfuy+diyosQy1rjExZ8zsBJfMKBF1imQbdE963UCrkq5DJ+qwyKtgBfJJkWewEp2YYBZMk2NJIGV6ZIA06WZIBkCK83FANbJMU3kAyvHZQAcJJgs2oGV4AJEtmXvBDZsWEp9yggHlvrQA1tITxzVwJIedGAv3ekjGVi6ww0EITqJ9AJLdKBFOa8osYDlSXEqiQWW4hADYclNKKXAkhvcHNy6HtqrLbSmlUxgaQ1rMg5RQlptJDS5NAJLaEABRSpTTCCwVIYyt6UdEO1VBBITLXpgSQxiEYtihbSKI/50C32Qavzhi+a//16H7L//Jl/fuVsYT08rhxFIL3AkBA4s0qrd+yx9+0C42HKIqrcPBC31gKKmQtRbQtKq3deJ2viZSwbjxj+tGj+Du7ATMGKHFXawAro0CVe0GFdbrRUrVtsHIat42RAvsEirdh0tw9Lp+lN4LV1WjzYIyQSLh6i3hFhk6W3R7XZ8/LPub+Qur5pYgUV71Y652o2haxdtSgYKrGhDA8CCTcwogRVqUHJL01+k+SLxxZmeIQIrznAA+CjIJN0fWEEGAsC5CFN1f2ABQKPNgRUhs6tJ8xZSmi8iZPuE3RlY2788gKv2TtttgUVaDaK/6MbQDdo4eVnDqmX1T3M+/ln3NxI91ez5LSHt1Szbf/fLj5/L2vIzww2BRVrN1ThdQ22JtWV7GSOtZvPPLO9bQtJqupZJGCqtxv/xd1sGAf7T2bvDIrCWYotktkh25txkuQYWaaVuxQo6h1Co88wsv1tC0krdoud9Sx8jwoHn1Oa1BjRZGitkFho5BRbtFZCY2wT3CCzSSp1DB0STpc5nmv/r8ZfU8PFVoASPqNyi5DhuCRbgs5ZBEMufElZor3If4enZ+0gHVu4yaLT6ieHaW0LSqv0zMTnfqeneGOYug3arpzxPCYe0l2CFYi2LMnCzMLDSt1dXi49iTYkyeLF04q8KLNIK+En64lk3/bkldKVVqVtWlLSWsbQuaAJLAit9ewXg3KIQoMMCIGN+YFVor7gRwKAKJbQiCuiwAMiYHFgV2iur8coylipSQtMDYWZgFUkrAO3mxgK3hABkTAss2qsWWjcCW36KrPX7Z60LusvEcKDD6kSlohvF021OYNVsr66WHWWaEmXQYlZE0GENaS++mmVaBGXgZkJg1WyvHnIf4em8oqS1gPUsdxlMMSUoJuw4WjywHrLujcuOo5dkLYMpxvcjHQ0s0qoCn8xKkFb4ajCzWMPCdw5RQlqhxVBg0V4BuGQwNOiw0GRpB0R7hUb9gUV7Vc2iWCGtqhmJjjwHqb4/nSn4aGb1INxux9wF+OlpRRlY6kHofEoYqr063wstzaU64X+E53hsOUTV2weqV0KoEeh7XKgdWFfOgwt0qeZqHIRQmeWfVr8/Vr0MLMwg+AWWXFr9/nyI6zTXpUFYMQJXY2vFitX2QdhOdC50ZBZPCYVFOMLzdjsef0Y+0y3CIMDN5cASba/6/pF8lg7CczAtDakHrqkpz4WOMKHDUhWk5hQxdLokA6u74KhUJFNtLlwLrCD3gxghWqnv0nyRyq5GimSHBaCmC4FFewVgukvBQocFQAaBVU6QlwbHpfkiaNcaWKHuB7srlRJHMjnmQnu80GGpClVwWhg6XU2BFaq9uuuoOcrUFg/Ccdw+/ln3N3JNLctcaAwZOixhEY7wbAmmpeEVYRDgRjiwLlVe1jLdeIRnXwCtiC3OMa0zF75vLxPwfvCF0KZli7CBn7GBn5npz4WvG85kCKy7xNvCtnMYBLZIjk93EAoFFhysWITiEAo8fA2sL2tYpBUeFj3v8zlWGhK+Bo7wojs8LY0VMguNCCwAMs4Ci/tB3Dl0QDRZuDuPnTwHqW738YmyytOZE25Rchy3BAvwWcsgiLOnhHRYjXK/AeTZ+0gHVu4y8HTyrPDHW0LSqlHLRr26m/k636np3hjmLgNnJ+HDovuQK8ftUqxpUQZuCKx+HOEJowx8EVidKDt0o3i6fQ4sFrAW0arULStKWstYWhdUyE8RRIcFQAaBBUDGh8DifvArbgQwiBL66mMQ0WEBkEFg9eCVZQyihPoQWABkvAYWC1gAgniPIzosV1o3Alt+iqz1+2etC5oAgdWJSkU3iqcbgdWPIzxhlIEvAmsIR3jCKANHfwUWK+4dWkpQt0ydV5S0FrCe5S6DjV5C6a8dRwmsEVn3xmXH0UuylsFGzxuQElj4ziezEqQVVngOLNaw8J1DlJBWaEFgAZDxJ7C4H8SJpR0Q7RVOPEcTHRZaLYoV0grt8hyk+v50puCjmdWDcLsdcxfgp6cVZWCpB+HPU0LdW8LzvdDSXKoT/kd4jseWQ1S9faB6JeiOwONBoXZgXTkPTvVSfdU4CKEyyz+tfn+sehmY5iC8BlbutPr9eb3r9NWlQVgxAldja8WK1fZB2K7CXLhnFovuwiIc4Xm7HY8/I5/pFmEQ4EY1sDrKjkq1xYPwHExLQ+qBa2rF5oJqYEG35rZj6HRJBlZ3wVGpSKbaXJAMLIwQrdR3ab4I2hFYAGQQWABk/GOaL2EBKOUeU3RY5Si+NPhRmi+CdpKB1V2plDiSqTYXJAMLJltwETB0ulQDq6PmKFNbPAjHcfv4Z93fyDW1YnNBNbBgMY7wbAmmpeEVYRDgRjiwLlVe1jLdeIRnXwCtiC3OMa0zF27Hcai/1pB107J2bOBnbOBnZtnnwnGkCKy7xNvCtnMYBLZIji/rIKQKLDhYsQjFIRRodBx2M6Nc0GTd8z4yC42EF93haenbCUv/5ciEwAIgg8DCdw4dEE0WWrCGNc3HJ8oJns54RkmCxaysZRAEgTVB7jeACKxGucsgCG4JR7Vs1Ku7ma/znZrujWHuMoiDwBpy5bhdijUtysANgdWPIzxhlIEvAqsTZYduFE83AsuVVqVuWVHSWsbSuqAJEFgAZBBYAGQQWD24EcAgSqgPgQVABoHVg1eWMYgS6kNgAZBBYAGQQWC50roR2PJTZK3fP2td0AQIrE5UKrpRPN0IrH4c4QmjDHwRWEM4whNGGTgisEa1lKBumTqvKGktYD3LXQZxsOPoNFn3xmXH0UuylkEQBBa+88msBGmF1bglxHcOUUJaoQWBBUAGgYUmSzsg2is0+uegVNBmUayQVmh0HPbv7v+Gad6fzhR8NLN6EG63Y+4C/PS0ogws9SDcjuO4iW8ldr4XWppLdcL/CM/x2HKIqrcPVK8E9RE4DvHAunIenPalOtE4CKEyyz+tfn+sehmY8iAch/Ki+6VNZrPuSLvxCM/b7ejInb5/6hznmNaZC8KBhQhHeN4D6DyGWj7TLcIgwI1qYHWUHZVqiwfhOZiWhtQD19SKzQXVwIJuzW3H0OmSDKzugqNSkUy1uSAZWBghWqnv0nwRtPvHzHjZHUBw95iiwwIgg8ACIIPAKkf3RecXab4I2kkGVnelUuJIptpckAwsmGzBRcDQ6VINrI6ao0wt3SAk+zp9Ss0F1cCCcYSnmTEIxfwKLMVXsS5VXtYy5QhPYxAKzIVHQN2O3/8z665YipfnKvauMwbBzPLOhVSBdZd4W9h2DAIjYBkHIWFgAcjqEVgsugOQ8SewFNfdAaT3HE10WABkEFgAZOQ5SHW7j0+U1Z/OXJXv+dRVlMFSf54SGg8Ke/EGkOV9A6gdZbDI8xrWX4FlZNZ1HOFZ4QjPryiDRV4eBrKGNYQjPOsc4XmCMnBDYPXjCE8YZeCLwOpE2VmxIzwnYhC6EViuqNRkuKDOXgOL993RqNoRnvD3Hkd0WABkEFg96BEwiBLqQ2ABkPEhsFjG+orX/zCIEvrqYxDRYQGQQWChU7UjPBHB58DirnAR5moyXNBFfoogOqxOVKoVO8JzIgahG4HVjyM8YZSBLwJrCEd4pj/CswVl4OZ1P6y//j9ebWvDzm3GBn6UwTwna+gE1jTsjWtskUwZzEBgAZBxElhna1i83ADA2XnssOgOQAaBBUDGl8DirhCAm6+Bk+cgVZ5PGYPACJhZ6kE4e0r46xPhnxXyBhBvABmDYGb6c+Frh/U9sCxwZnGEp3GEp5kxCCnmQssClPCiO0d4Gkd4mhmDUGkuCAcWOMLTGIRimgIr4LNCjvDsk2wQkn2dPjnmQmPI0GGpClhzKhg6Xa2BFarJ4ghP4C7HXGiPFzqsckJV6og0XwTtCCwAMi4EVqi7QgA5XAoWOiwAMq4FFk1WAmFfdL4qzRep7GqkSHZYHOEJ3FWbC5KBBZMtuAgYOl2XAyvIXSFHePZJNgjJvk4f3bnQESZ0WMI4wtMYhGJ6AkuxycpaphzhaQyC5lzoi5Gm/bA+/GOR3jFW37RsHHvXGYNgZlJzwTWwLFhmWeptYdsxCIyAKQxC911ansACoKI7sPoX3YOsZAHQMhIdPCUEIGMosGiyAFwyGBp0WABkjB6kehysvv/y8YlytKczq8V/PrUaZXBi/J6s/ynhn39F+cDiDSCTegNoEcrgqxCBZbUziyM8ExzhOY4y+GrKkjdrWEM4wrPOEZ4nKAM3cwKr5uNCjvCEUQZtZkUEHVanmmX3IscRnv4YhG7TAqtmk3UVlZoMF7TFxHCgw0KnHEd4QsvMwKLJAvBibixM7rCKZBY9AgYVKaHpgcAtIQAZ8wOrQpNV+fU/TFGhhFZEAR0WABlLAqtCk4VqR3jikkUhQIflirmaDBfU2arASt9kUammfITnXukHYd30X9hhkVmDn4cEyuDF0onPLeEQjvBUPMJzOsrAzZz9sM7+ggLvx7Fzm7GBH2VgZuvvq5YHltXILGNvXDNji+TaZeCwCkRgAZjDIbA81rDSr74D8JnmTovuZBaQmNsE5ykhABl+gUWTBaTkObVHD1K9hFNXV+MhHSPgzLkR8XhK+NffR2AtwBtAxiBs4hxY3mtY3BhO17J3Zfr9LRmELfyn84ZFdzJrIo7wNAZhky0Tec9TQjJrCo7wNAZhk11TmNcaakk2XZN9HXy1LbBosgYxV7sxdIM2Tt6dHRaZBcjZO2033xKSWf7S9BdpvoiQ7ROWNSwAMvYH1vbMBtAiwlTdH1gWYyAAnAgySUMEloUZjgrS/EIlzReJL870jBJYFmlQADyEmpiBAsuCDU1w9BfdGLp20aZkrMDCasnmarKvg6/CBVa0RI+MIzyNQVgp4GQMF1gWcpjC4ghPYxDWiDkNIwaWRR2smFomYfqJyiDMFXYCeu84egnbk17FBsGMwLjAkRA7sIzMAnzFzoOot4QPwYcPyCT+dIseWKYwiEACEhNNILBMZCgBXSpTTCOwTGdAATlCk8v1INVBnMMaHw/p5AillcV/SviOzIrpfP9PYismtdkvGFhGZgVz5VhAvWJLTHDq66xhPVMc6KwubazOLuxxiE4iycAy2eEGItCdPqqBZcqDnkZHx0STtZ30xBEOLBMfesCf+pTRDizTvwC6unslmqxdEkwW+cCyFJcBWC3HNMkQWJblYgCLpJkgSQLLEl0SYK5MUyNPYFmuCwNMkWxSKP2WsMX98vAqPJAsqu5SdVgPKS9VNN2/s+EHOg6yToGcgWV5LxjwVeLiTxtYlvqyBdHRK9FerZa77DMHlmW/eMCL9AUvub1MB5bh12F7mQhqzOMygWVk1mJs4LdRmUlcKbCMzFqPLZL9VZrBxQLrjthCDvXmbvZF948KXmbkU7OMKwaWVb3YSKNsAWf7aU47fsQDRWWj6q5oh/VQ/PJDC+Vat8N6oNVCfETVXfUO64GCQFgU5wMd1h+0WoiGqHpBh/WKEkEQlOI7OqwPaLWwF1H1EzqsH1E02ILCO0GHdYZWC56Iqq8IrO+ILaxGVDUisFoRW1iBqLqENaxrKC9MRDldRYd1Ga0WxhFVfQisTsQW+hBVIwisIcQW2hFV4wisCYgtnCOqZiGwpiG28I6omovAmozYwh1RtQKBtQSxVRlRtQ6BtRCxVQ1RtRqBtRyxVQFR5YPAcvIoaJIrE3LKGYHljYYrB6JqCwJrDxouUeTUXgTWZjRcKoiqCAisEGi4wiKnQiGwYiG5giCnYiKwgiK5tiCngiOwoiO5HJBTKggsGc+TivAaR0gpIrAk0XZ1I6ekEVjaaLtaEFJpEFh5vEzLyvlFQmVFYKVVKr9IqCIIrCqS5RcJVROBVdRPEz5akBFMeEZg4S/nAbEizogktPsfghVILVnPjJgAAAAASUVORK5CYII=",
|
|
"text/plain": [
|
|
"<IPython.core.display.Image object>"
|
|
]
|
|
},
|
|
"execution_count": 10,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"plot = openmc.Plot.from_geometry(geometry)\n",
|
|
"plot.color_by = 'material'\n",
|
|
"plot.colors = colors = {\n",
|
|
" water: 'blue',\n",
|
|
" fuel: 'olive',\n",
|
|
" fuel2: 'yellow'\n",
|
|
"}\n",
|
|
"plot.to_ipython_image()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"At this point, if we wanted to simulate the model, we would need to create an instance of `openmc.Settings`, export it to XML, and run."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Lattice orientation\n",
|
|
"\n",
|
|
"Now let's say we want our hexagonal lattice orientated such that two sides of the lattice are parallel to the x-axis. This can be achieved by two means: either we can rotate the cell that contains the lattice, or we can can change the `HexLattice.orientation` attribute. By default, the `orientation` is set to \"y\", indicating that two sides of the lattice are parallel to the y-axis, but we can also change it to \"x\" to make them parallel to the x-axis."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 11,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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",
|
|
"text/plain": [
|
|
"<IPython.core.display.Image object>"
|
|
]
|
|
},
|
|
"execution_count": 11,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Change the orientation of the lattice and re-export the geometry\n",
|
|
"lattice.orientation = 'x'\n",
|
|
"geometry.export_to_xml()\n",
|
|
"\n",
|
|
"# Run OpenMC in plotting mode\n",
|
|
"plot.to_ipython_image()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"When we change the orientation to 'x', you can see that the first universe in each ring starts to the right along the x-axis. As before, the universes are defined in a clockwise fashion around each ring. To see the proper indices for a hexagonal lattice in this orientation, we can again call `show_indices` but pass an extra orientation argument:"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 12,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
" (0,12) (0,13) (0,14) (0,15)\n",
|
|
"\n",
|
|
" (0,11) (1, 8) (1, 9) (1,10) (0,16)\n",
|
|
"\n",
|
|
" (0,10) (1, 7) (2, 4) (2, 5) (1,11) (0,17)\n",
|
|
"\n",
|
|
"(0, 9) (1, 6) (2, 3) (3, 0) (2, 0) (1, 0) (0, 0)\n",
|
|
"\n",
|
|
" (0, 8) (1, 5) (2, 2) (2, 1) (1, 1) (0, 1)\n",
|
|
"\n",
|
|
" (0, 7) (1, 4) (1, 3) (1, 2) (0, 2)\n",
|
|
"\n",
|
|
" (0, 6) (0, 5) (0, 4) (0, 3)\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"print(lattice.show_indices(4, orientation='x'))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Hexagonal prisms\n",
|
|
"\n",
|
|
"OpenMC also contains a convenience function that can create a hexagonal prism representing the interior region of six surfaces defining a hexagon. This can be useful as a bounding surface of a hexagonal lattice. For example, if we wanted the outer boundary of our geometry to be hexagonal, we could change the `region` of the main cell:"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 13,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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",
|
|
"text/plain": [
|
|
"<IPython.core.display.Image object>"
|
|
]
|
|
},
|
|
"execution_count": 13,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"main_cell.region = -openmc.model.HexagonalPrism(\n",
|
|
" edge_length=4*lattice.pitch[0],\n",
|
|
" orientation='x',\n",
|
|
" boundary_type='vacuum'\n",
|
|
")\n",
|
|
"geometry.export_to_xml()\n",
|
|
"\n",
|
|
"# Run OpenMC in plotting mode\n",
|
|
"plot.color_by = 'cell'\n",
|
|
"plot.to_ipython_image()"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"anaconda-cloud": {},
|
|
"kernelspec": {
|
|
"display_name": "Python 3 (ipykernel)",
|
|
"language": "python",
|
|
"name": "python3"
|
|
},
|
|
"language_info": {
|
|
"codemirror_mode": {
|
|
"name": "ipython",
|
|
"version": 3
|
|
},
|
|
"file_extension": ".py",
|
|
"mimetype": "text/x-python",
|
|
"name": "python",
|
|
"nbconvert_exporter": "python",
|
|
"pygments_lexer": "ipython3",
|
|
"version": "3.12.1"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 4
|
|
}
|