Skip to content

Commit 7d25ea4

Browse files
committed
examples: updated INP examples
1 parent 42d30b7 commit 7d25ea4

22 files changed

+753
-258
lines changed

examples/create_cell_build.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
"""
2+
Examples for creating INP cells using ``build``.
3+
"""
4+
5+
import pymcnp
6+
7+
# Creating option.
8+
imp = pymcnp.inp.cell.ImpBuilder(
9+
designator='n',
10+
importance=1.0,
11+
).build()
12+
13+
# Creating cell.
14+
cell = pymcnp.inp.CellBuilder(
15+
number=1,
16+
material=1,
17+
density=0.5,
18+
geometry='#(99:(3 9))',
19+
options=[imp],
20+
).build()
21+
22+
print(cell)

examples/create_cell_init.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
"""
2+
Examples for creating INP cells using ``__init__``.
3+
"""
4+
5+
import pymcnp
6+
7+
# Creating option parameters.
8+
designator = pymcnp.utils.types.Designator((pymcnp.utils.types.Particle('n'),))
9+
importance = pymcnp.utils.types.Real(1.0)
10+
11+
# Creating option.
12+
imp = pymcnp.inp.cell.Imp(designator, importance)
13+
14+
# Creating cell parameters.
15+
number = pymcnp.utils.types.Integer(1)
16+
material = pymcnp.utils.types.Integer(1)
17+
density = pymcnp.utils.types.Real(0.1)
18+
geometry = pymcnp.utils.types.Geometry('#(99:(3 9))')
19+
options = pymcnp.utils.types.Tuple([imp])
20+
21+
# Creating cell.
22+
cell = pymcnp.inp.Cell(
23+
number=number,
24+
material=material,
25+
geometry=geometry,
26+
density=density,
27+
options=options,
28+
)
29+
30+
print(cell)

examples/create_inp_build.py

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
"""
2+
Examples for creating INP files using ``build``.
3+
"""
4+
5+
import pymcnp
6+
7+
RADIUS_AIR: float = 60
8+
RADIUS_SHIELD: float = 5
9+
RADIUS_LEAD: float = 1
10+
11+
# Creating cell geometries.
12+
geometry_air = pymcnp.utils.types.GeometryBuilder('11')
13+
geometry_shield = pymcnp.utils.types.GeometryBuilder('12')
14+
geometry_lead = pymcnp.utils.types.GeometryBuilder('13')
15+
geometry_world = pymcnp.utils.types.GeometryBuilder('14')
16+
17+
# Creating cells.
18+
cell_air = pymcnp.inp.CellBuilder(number=1, material=21, density=0.5, geometry=geometry_air)
19+
cell_shield = pymcnp.inp.CellBuilder(number=2, material=22, density=0.5, geometry=geometry_shield & geometry_air)
20+
cell_lead = pymcnp.inp.CellBuilder(number=3, material=23, density=0.5, geometry=geometry_lead & geometry_shield)
21+
cell_world = pymcnp.inp.CellBuilder(number=4, material=0, geometry=geometry_world)
22+
23+
# Creating surface options.
24+
rpp_air = pymcnp.inp.surface.RppBuilder(
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.RppBuilder(
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.RppBuilder(
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.SoBuilder(r=RADIUS_AIR + RADIUS_SHIELD + RADIUS_LEAD + 1)
49+
50+
# Creating surfaces.
51+
surface_air = pymcnp.inp.SurfaceBuilder(
52+
number=11,
53+
option=rpp_air,
54+
)
55+
surface_shield = pymcnp.inp.SurfaceBuilder(
56+
number=11,
57+
option=rpp_shield,
58+
)
59+
surface_lead = pymcnp.inp.SurfaceBuilder(
60+
number=11,
61+
option=rpp_lead,
62+
)
63+
surface_world = pymcnp.inp.SurfaceBuilder(
64+
number=99,
65+
option=so_world,
66+
)
67+
68+
# Creating data options.
69+
material_air = pymcnp.inp.data.M_0.from_formula(number=21, formulas={'N2': 0.8, 'O2': 0.2})
70+
material_shield = pymcnp.inp.data.M_0.from_formula(number=22, formulas={'TiO2': 0.5, 'PbO': 0.5})
71+
material_lead = pymcnp.inp.data.M_0.from_formula(number=23, formulas={'Pb': 1})
72+
73+
# Creating data.
74+
data_air = pymcnp.inp.DataBuilder(material_air)
75+
data_shield = pymcnp.inp.DataBuilder(material_shield)
76+
data_lead = pymcnp.inp.DataBuilder(material_lead)
77+
78+
# Creating inp.
79+
inp = pymcnp.InpBuilder(
80+
title='Create ``Inp`` Using ``build``\n',
81+
cells=[cell_air, cell_shield, cell_lead, cell_world],
82+
surfaces=[surface_air, surface_shield, surface_lead, surface_world],
83+
data=[data_air, data_shield, data_lead],
84+
).build()
85+
86+
print(inp)

examples/create_inp_init.py

Lines changed: 252 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,252 @@
1+
"""
2+
Examples for creating INP files using ``build``.
3+
"""
4+
5+
import pymcnp
6+
7+
RADIUS_AIR: float = 60
8+
RADIUS_SHIELD: float = 5
9+
RADIUS_LEAD: float = 1
10+
11+
# Creating cell geometries.
12+
geometry_air = pymcnp.utils.types.Geometry('11')
13+
geometry_shield = pymcnp.utils.types.Geometry('12:11')
14+
geometry_lead = pymcnp.utils.types.Geometry('13:12')
15+
geometry_world = pymcnp.utils.types.Geometry('14')
16+
17+
# Creating cells.
18+
cell_air_number = pymcnp.utils.types.Integer(1)
19+
cell_air_material = pymcnp.utils.types.Integer(21)
20+
cell_air_density = pymcnp.utils.types.Real(0.5)
21+
cell_air = pymcnp.inp.Cell(
22+
number=cell_air_number,
23+
material=cell_air_material,
24+
density=cell_air_density,
25+
geometry=geometry_air,
26+
)
27+
cell_shield_number = pymcnp.utils.types.Integer(2)
28+
cell_shield_material = pymcnp.utils.types.Integer(22)
29+
cell_shield_density = pymcnp.utils.types.Real(0.5)
30+
cell_shield = pymcnp.inp.Cell(
31+
number=cell_shield_number,
32+
material=cell_shield_material,
33+
density=cell_shield_density,
34+
geometry=geometry_shield,
35+
)
36+
cell_lead_number = pymcnp.utils.types.Integer(3)
37+
cell_lead_material = pymcnp.utils.types.Integer(23)
38+
cell_lead_density = pymcnp.utils.types.Real(0.5)
39+
cell_lead = pymcnp.inp.Cell(
40+
number=cell_lead_number,
41+
material=cell_lead_material,
42+
density=cell_lead_density,
43+
geometry=geometry_lead,
44+
)
45+
cell_world_number = pymcnp.utils.types.Integer(4)
46+
cell_world_material = pymcnp.utils.types.Integer(0)
47+
cell_world = pymcnp.inp.Cell(
48+
number=cell_world_number,
49+
material=cell_world_material,
50+
density=None,
51+
geometry=geometry_world,
52+
)
53+
54+
# Creating surface options.
55+
rpp_air_xmin = pymcnp.utils.types.Real(-RADIUS_AIR)
56+
rpp_air_xmax = pymcnp.utils.types.Real(RADIUS_AIR)
57+
rpp_air_ymin = pymcnp.utils.types.Real(-RADIUS_AIR)
58+
rpp_air_ymax = pymcnp.utils.types.Real(RADIUS_AIR)
59+
rpp_air_zmin = pymcnp.utils.types.Real(-RADIUS_AIR)
60+
rpp_air_zmax = pymcnp.utils.types.Real(RADIUS_AIR)
61+
rpp_air = pymcnp.inp.surface.Rpp(
62+
xmin=rpp_air_xmin,
63+
xmax=rpp_air_xmax,
64+
ymin=rpp_air_ymin,
65+
ymax=rpp_air_ymax,
66+
zmin=rpp_air_zmin,
67+
zmax=rpp_air_zmax,
68+
)
69+
rpp_shield_xmin = pymcnp.utils.types.Real(-RADIUS_SHIELD)
70+
rpp_shield_xmax = pymcnp.utils.types.Real(RADIUS_SHIELD)
71+
rpp_shield_ymin = pymcnp.utils.types.Real(-RADIUS_SHIELD)
72+
rpp_shield_ymax = pymcnp.utils.types.Real(RADIUS_SHIELD)
73+
rpp_shield_zmin = pymcnp.utils.types.Real(-RADIUS_SHIELD)
74+
rpp_shield_zmax = pymcnp.utils.types.Real(RADIUS_SHIELD)
75+
rpp_shield = pymcnp.inp.surface.Rpp(
76+
xmin=rpp_shield_xmin,
77+
xmax=rpp_shield_xmax,
78+
ymin=rpp_shield_ymin,
79+
ymax=rpp_shield_ymax,
80+
zmin=rpp_shield_zmin,
81+
zmax=rpp_shield_zmax,
82+
)
83+
rpp_lead_xmin = pymcnp.utils.types.Real(-RADIUS_LEAD)
84+
rpp_lead_xmax = pymcnp.utils.types.Real(RADIUS_LEAD)
85+
rpp_lead_ymin = pymcnp.utils.types.Real(-RADIUS_LEAD)
86+
rpp_lead_ymax = pymcnp.utils.types.Real(RADIUS_LEAD)
87+
rpp_lead_zmin = pymcnp.utils.types.Real(-RADIUS_LEAD)
88+
rpp_lead_zmax = pymcnp.utils.types.Real(RADIUS_LEAD)
89+
rpp_lead = pymcnp.inp.surface.Rpp(
90+
xmin=rpp_lead_xmin,
91+
xmax=rpp_lead_xmax,
92+
ymin=rpp_lead_ymin,
93+
ymax=rpp_lead_ymax,
94+
zmin=rpp_lead_zmin,
95+
zmax=rpp_lead_zmax,
96+
)
97+
so_world_r = pymcnp.utils.types.Real(RADIUS_AIR + RADIUS_SHIELD + RADIUS_LEAD + 1)
98+
so_world = pymcnp.inp.surface.So(
99+
r=so_world_r,
100+
)
101+
102+
# Creating surfaces.
103+
surface_air_number = pymcnp.utils.types.Integer(11)
104+
surface_air = pymcnp.inp.Surface(
105+
number=surface_air_number,
106+
option=rpp_air,
107+
)
108+
surface_shield_number = pymcnp.utils.types.Integer(12)
109+
surface_shield = pymcnp.inp.Surface(
110+
number=surface_shield_number,
111+
option=rpp_shield,
112+
)
113+
surface_lead_number = pymcnp.utils.types.Integer(13)
114+
surface_lead = pymcnp.inp.Surface(
115+
number=surface_lead_number,
116+
option=rpp_lead,
117+
)
118+
surface_world_number = pymcnp.utils.types.Integer(99)
119+
surface_world = pymcnp.inp.Surface(
120+
number=surface_world_number,
121+
option=so_world,
122+
)
123+
124+
# Creating data options.
125+
n14 = pymcnp.utils.types.Zaid(7, 14)
126+
n15 = pymcnp.utils.types.Zaid(7, 15)
127+
o16 = pymcnp.utils.types.Zaid(8, 16)
128+
o17 = pymcnp.utils.types.Zaid(8, 17)
129+
o18 = pymcnp.utils.types.Zaid(8, 18)
130+
ti46 = pymcnp.utils.types.Zaid(22, 46)
131+
ti47 = pymcnp.utils.types.Zaid(22, 47)
132+
ti48 = pymcnp.utils.types.Zaid(22, 48)
133+
ti49 = pymcnp.utils.types.Zaid(22, 49)
134+
ti50 = pymcnp.utils.types.Zaid(22, 50)
135+
pb204 = pymcnp.utils.types.Zaid(82, 204)
136+
pb206 = pymcnp.utils.types.Zaid(82, 206)
137+
pb207 = pymcnp.utils.types.Zaid(82, 207)
138+
pb208 = pymcnp.utils.types.Zaid(82, 208)
139+
140+
n14_frac = pymcnp.utils.types.Real(-0.797088)
141+
n15_frac = pymcnp.utils.types.Real(-0.002912)
142+
o16_frac_air = pymcnp.utils.types.Real(-0.199514)
143+
o16_frac_shield = pymcnp.utils.types.Real(-0.19984179019595494)
144+
o16_frac_lead = pymcnp.utils.types.Real(-0.03575396279808631)
145+
o17_frac_air = pymcnp.utils.types.Real(-7.6e-05)
146+
o17_frac_shield = pymcnp.utils.types.Real(-7.612486369323746e-05)
147+
o17_frac_lead = pymcnp.utils.types.Real(-1.361960149490542e-05)
148+
o18_frac_air = pymcnp.utils.types.Real(-0.00041000000000000005)
149+
o18_frac_shield = pymcnp.utils.types.Real(-0.00041067360676614944)
150+
o18_frac_lead = pymcnp.utils.types.Real(-7.347416595935819e-05)
151+
ti46_frac = pymcnp.utils.types.Real(-0.02472289143502082)
152+
ti47_frac = pymcnp.utils.types.Real(-0.02229555300321877)
153+
ti48_frac = pymcnp.utils.types.Real(-0.22091776443511935)
154+
ti49_frac = pymcnp.utils.types.Real(-0.016212223353146985)
155+
ti50_frac = pymcnp.utils.types.Real(-0.015522979107079737)
156+
pb204_frac_shield = pymcnp.utils.types.Real(-0.006498225208082432)
157+
pb204_frac_lead = pymcnp.utils.types.Real(-0.014)
158+
pb206_frac_shield = pymcnp.utils.types.Real(-0.11186230536770471)
159+
pb206_frac_lead = pymcnp.utils.types.Real(-0.241)
160+
pb207_frac_shield = pymcnp.utils.types.Real(-0.10257912649901553)
161+
pb207_frac_lead = pymcnp.utils.types.Real(-0.221)
162+
pb208_frac_shield = pymcnp.utils.types.Real(-0.24321928635965673)
163+
pb208_frac_lead = pymcnp.utils.types.Real(-0.524)
164+
165+
n14_substance = pymcnp.utils.types.Substance(n14, n14_frac)
166+
n15_substance = pymcnp.utils.types.Substance(n15, n15_frac)
167+
o16_substance_air = pymcnp.utils.types.Substance(o16, o16_frac_air)
168+
o16_substance_shield = pymcnp.utils.types.Substance(o16, o16_frac_shield)
169+
o16_substance_lead = pymcnp.utils.types.Substance(o16, o16_frac_lead)
170+
o17_substance_air = pymcnp.utils.types.Substance(o17, o17_frac_air)
171+
o17_substance_shield = pymcnp.utils.types.Substance(o17, o17_frac_shield)
172+
o17_substance_lead = pymcnp.utils.types.Substance(o17, o17_frac_lead)
173+
o18_substance_air = pymcnp.utils.types.Substance(o18, o18_frac_air)
174+
o18_substance_shield = pymcnp.utils.types.Substance(o18, o18_frac_shield)
175+
o18_substance_lead = pymcnp.utils.types.Substance(o18, o18_frac_lead)
176+
ti46_substance = pymcnp.utils.types.Substance(ti46, ti46_frac)
177+
ti47_substance = pymcnp.utils.types.Substance(ti47, ti47_frac)
178+
ti48_substance = pymcnp.utils.types.Substance(ti48, ti48_frac)
179+
ti49_substance = pymcnp.utils.types.Substance(ti49, ti49_frac)
180+
ti50_substance = pymcnp.utils.types.Substance(ti50, ti50_frac)
181+
pb204_substance_shield = pymcnp.utils.types.Substance(pb204, pb204_frac_shield)
182+
pb204_substance_lead = pymcnp.utils.types.Substance(pb204, pb204_frac_lead)
183+
pb206_substance_shield = pymcnp.utils.types.Substance(pb206, pb206_frac_shield)
184+
pb206_substance_lead = pymcnp.utils.types.Substance(pb206, pb206_frac_lead)
185+
pb207_substance_shield = pymcnp.utils.types.Substance(pb207, pb207_frac_shield)
186+
pb207_substance_lead = pymcnp.utils.types.Substance(pb207, pb207_frac_lead)
187+
pb208_substance_shield = pymcnp.utils.types.Substance(pb208, pb208_frac_shield)
188+
pb208_substance_lead = pymcnp.utils.types.Substance(pb208, pb208_frac_lead)
189+
190+
material_air_suffix = pymcnp.utils.types.Integer(21)
191+
material_shield_suffix = pymcnp.utils.types.Integer(22)
192+
material_lead_suffix = pymcnp.utils.types.Integer(23)
193+
material_air_substances = pymcnp.utils.types.Tuple(
194+
[
195+
o16_substance_air,
196+
o17_substance_air,
197+
o18_substance_air,
198+
n14_substance,
199+
n15_substance,
200+
]
201+
)
202+
material_shield_substances = pymcnp.utils.types.Tuple(
203+
[
204+
o16_substance_shield,
205+
o17_substance_shield,
206+
o18_substance_shield,
207+
ti46_substance,
208+
ti47_substance,
209+
ti48_substance,
210+
ti49_substance,
211+
ti50_substance,
212+
pb204_substance_shield,
213+
pb206_substance_shield,
214+
pb207_substance_shield,
215+
pb208_substance_shield,
216+
]
217+
)
218+
material_lead_substances = pymcnp.utils.types.Tuple(
219+
[
220+
o16_substance_lead,
221+
o17_substance_lead,
222+
o18_substance_lead,
223+
pb204_substance_lead,
224+
pb206_substance_lead,
225+
pb207_substance_lead,
226+
pb208_substance_lead,
227+
]
228+
)
229+
material_air = pymcnp.inp.data.M_0(suffix=material_air_suffix, substances=material_air_substances)
230+
material_shield = pymcnp.inp.data.M_0(suffix=material_shield_suffix, substances=material_shield_substances)
231+
material_lead = pymcnp.inp.data.M_0(suffix=material_lead_suffix, substances=material_lead_substances)
232+
233+
# Creating data.
234+
data_air = pymcnp.inp.Data(material_air)
235+
data_shield = pymcnp.inp.Data(material_shield)
236+
data_lead = pymcnp.inp.Data(material_lead)
237+
238+
# Creating inp parameters.
239+
title = pymcnp.utils.types.String('Create ``Inp`` Using ``build``\n')
240+
cells = pymcnp.utils.types.Tuple([cell_air, cell_shield, cell_lead, cell_world])
241+
surfaces = pymcnp.utils.types.Tuple([surface_air, surface_shield, surface_lead, surface_world])
242+
data = pymcnp.utils.types.Tuple([data_air, data_shield, data_lead])
243+
244+
# Creating inp.
245+
inp = pymcnp.Inp(
246+
title=title,
247+
cells=cells,
248+
surfaces=surfaces,
249+
data=data,
250+
)
251+
252+
print(inp)

0 commit comments

Comments
 (0)