|
1 | 1 | """ |
2 | 2 | Example creating INP files. |
| 3 | +
|
| 4 | +This example creates an INP file. First, it creates surfaces, and second, |
| 5 | +it defines materials. Third, it defines cells by combining geometries using |
| 6 | +operators and assigning materials. Fourth, it creates a point source and a |
| 7 | +type #4 tally. Fifth, it creates a INP file using `Inp` and prints the result. |
3 | 8 | """ |
4 | 9 |
|
5 | 10 | import pymcnp |
6 | 11 |
|
7 | | -RADIUS_AIR: float = 60 |
8 | | -RADIUS_SHIELD: float = 5 |
9 | | -RADIUS_LEAD: float = 1 |
10 | | - |
11 | | -# Creating cell geometries. |
12 | | -geometry_air = pymcnp.types.Geometry.from_mcnp('11') |
13 | | -geometry_shield = pymcnp.types.Geometry.from_mcnp('12') |
14 | | -geometry_lead = pymcnp.types.Geometry.from_mcnp('13') |
15 | | -geometry_world = pymcnp.types.Geometry.from_mcnp('14') |
16 | | - |
17 | | -# Creating cells. |
18 | | -cell_air = pymcnp.inp.Cell(number=1, material=21, density=0.5, geometry=geometry_air) |
19 | | -cell_shield = pymcnp.inp.Cell(number=2, material=22, density=0.5, geometry=geometry_shield & geometry_air) |
20 | | -cell_lead = pymcnp.inp.Cell(number=3, material=23, density=0.5, geometry=geometry_lead & geometry_shield) |
21 | | -cell_world = pymcnp.inp.Cell(number=4, material=0, geometry=geometry_world) |
22 | | - |
23 | | -# Creating surface options. |
24 | | -rpp_air = pymcnp.inp.surface.Rpp( |
25 | | - xmin=-RADIUS_AIR, |
26 | | - xmax=RADIUS_AIR, |
27 | | - ymin=-RADIUS_AIR, |
28 | | - ymax=RADIUS_AIR, |
29 | | - zmin=-RADIUS_AIR, |
30 | | - zmax=RADIUS_AIR, |
31 | | -) |
32 | | -rpp_shield = pymcnp.inp.surface.Rpp( |
33 | | - xmin=-RADIUS_SHIELD, |
34 | | - xmax=RADIUS_SHIELD, |
35 | | - ymin=-RADIUS_SHIELD, |
36 | | - ymax=RADIUS_SHIELD, |
37 | | - zmin=-RADIUS_SHIELD, |
38 | | - zmax=RADIUS_SHIELD, |
39 | | -) |
40 | | -rpp_lead = pymcnp.inp.surface.Rpp( |
41 | | - xmin=-RADIUS_LEAD, |
42 | | - xmax=RADIUS_LEAD, |
43 | | - ymin=-RADIUS_LEAD, |
44 | | - ymax=RADIUS_LEAD, |
45 | | - zmin=-RADIUS_LEAD, |
46 | | - zmax=RADIUS_LEAD, |
47 | | -) |
48 | | -so_world = pymcnp.inp.surface.So(r=RADIUS_AIR + RADIUS_SHIELD + RADIUS_LEAD + 1) |
| 12 | +RADIUS_WORLD: float = 100 |
| 13 | +RADIUS_INNER: float = 50 |
| 14 | +RADIUS_OUTER: float = 10 |
49 | 15 |
|
50 | 16 | # Creating surfaces. |
51 | | -surface_air = pymcnp.inp.Surface( |
52 | | - number=11, |
53 | | - option=rpp_air, |
| 17 | +surface_inner = pymcnp.inp.Surface( |
| 18 | + number=12, |
| 19 | + option=pymcnp.inp.surface.Rpp( |
| 20 | + xmin=-RADIUS_INNER, |
| 21 | + xmax=RADIUS_INNER, |
| 22 | + ymin=-RADIUS_INNER, |
| 23 | + ymax=RADIUS_INNER, |
| 24 | + zmin=-RADIUS_INNER, |
| 25 | + zmax=RADIUS_INNER, |
| 26 | + ), |
54 | 27 | ) |
55 | | -surface_shield = pymcnp.inp.Surface( |
56 | | - number=11, |
57 | | - option=rpp_shield, |
58 | | -) |
59 | | -surface_lead = pymcnp.inp.Surface( |
60 | | - number=11, |
61 | | - option=rpp_lead, |
| 28 | +surface_outer = pymcnp.inp.Surface( |
| 29 | + number=13, |
| 30 | + option=pymcnp.inp.surface.Rpp( |
| 31 | + xmin=-RADIUS_OUTER, |
| 32 | + xmax=RADIUS_OUTER, |
| 33 | + ymin=-RADIUS_OUTER, |
| 34 | + ymax=RADIUS_OUTER, |
| 35 | + zmin=-RADIUS_OUTER, |
| 36 | + zmax=RADIUS_OUTER, |
| 37 | + ), |
62 | 38 | ) |
63 | 39 | surface_world = pymcnp.inp.Surface( |
64 | | - number=99, |
65 | | - option=so_world, |
| 40 | + number=14, |
| 41 | + option=pymcnp.inp.surface.So( |
| 42 | + r=RADIUS_WORLD, |
| 43 | + ), |
66 | 44 | ) |
67 | 45 |
|
68 | 46 | # Creating materials. |
69 | 47 | material_air = pymcnp.inp.M_0.from_formula(number=21, formulas={'N2': 0.8, 'O2': 0.2}) |
70 | | -material_shield = pymcnp.inp.M_0.from_formula(number=22, formulas={'TiO2': 0.5, 'PbO': 0.5}) |
71 | 48 | material_lead = pymcnp.inp.M_0.from_formula(number=23, formulas={'Pb': 1}) |
72 | 49 |
|
| 50 | +# Creating cells. |
| 51 | +cell_inside = pymcnp.inp.Cell(number=1, material=0, geometry=-surface_inner) |
| 52 | +cell_shield = pymcnp.inp.Cell(number=2, material=23, density=0.5, geometry=+surface_inner & -surface_outer) |
| 53 | +cell_air = pymcnp.inp.Cell(number=3, material=21, density=0.5, geometry=-surface_inner | (+surface_outer & -surface_world)) |
| 54 | +cell_world = pymcnp.inp.Cell(number=4, material=0, geometry=+surface_world) |
| 55 | + |
| 56 | +# Creating source & tally. |
| 57 | +source = pymcnp.inp.Sdef( |
| 58 | + options=[ |
| 59 | + pymcnp.inp.sdef.Pos_0(0, 0, 0), |
| 60 | + pymcnp.inp.sdef.Erg_0(14.4), |
| 61 | + pymcnp.inp.sdef.Par_0(1), |
| 62 | + ] |
| 63 | +) |
| 64 | + |
| 65 | +tally = pymcnp.inp.F_0( |
| 66 | + suffix=4, |
| 67 | + designator='n', |
| 68 | + problems=[2], |
| 69 | +) |
| 70 | + |
73 | 71 | # Creating inp. |
74 | 72 | inp = pymcnp.Inp( |
75 | 73 | title='Create `Inp`\n', |
76 | | - cells=[cell_air, cell_shield, cell_lead, cell_world], |
77 | | - surfaces=[surface_air, surface_shield, surface_lead, surface_world], |
78 | | - data=[material_air, material_shield, material_lead], |
| 74 | + cells=[cell_inside, cell_shield, cell_air, cell_world], |
| 75 | + surfaces=[surface_inner, surface_outer, surface_world], |
| 76 | + data=[material_air, material_lead, source, tally], |
79 | 77 | ) |
| 78 | +inp.nps = 1e5 |
| 79 | +inp.seed = 1232209489 |
80 | 80 |
|
| 81 | +print('INP file created using `__init__`:') |
81 | 82 | print(inp) |
0 commit comments