|
| 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