mirror of
https://github.com/openmc-dev/openmc.git
synced 2026-07-27 05:35:49 -04:00
69 lines
2.7 KiB
Python
69 lines
2.7 KiB
Python
from prettytable import PrettyTable
|
|
import numpy as np
|
|
|
|
# Data from Table A.1 (air kerma per fluence)
|
|
energy_a1 = np.array([
|
|
0.01, 0.015, 0.02, 0.03, 0.04, 0.05, 0.06, 0.08, 0.1, 0.15, 0.2,
|
|
0.3, 0.4, 0.5, 0.6, 0.8, 1.0, 1.5, 2.0, 3.0, 4.0, 5.0, 6.0, 8.0, 10.0
|
|
])
|
|
air_kerma = np.array([7.43, 3.12, 1.68, 0.721, 0.429, 0.323, 0.289, 0.307, 0.371, 0.599, 0.856, 1.38,
|
|
1.89, 2.38, 2.84, 3.69, 4.47, 6.14, 7.55, 9.96, 12.1, 14.1, 16.1, 20.1, 24.0])
|
|
|
|
# Data from Table A.17 (effective dose per air kerma)
|
|
energy_a17 = np.array([
|
|
0.01, 0.015, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.1, 0.15, 0.2, 0.3,
|
|
0.4, 0.5, 0.6, 0.8, 1.0, 2.0, 4.0, 6.0, 8.0, 10.0
|
|
])
|
|
dose_per_airkerma = {
|
|
'AP': np.array([
|
|
0.00653, 0.0402, 0.122, 0.416, 0.788, 1.106, 1.308, 1.407, 1.433, 1.394,
|
|
1.256, 1.173, 1.093, 1.056, 1.036, 1.024, 1.010, 1.003, 0.992, 0.993,
|
|
0.993, 0.991, 0.990
|
|
]),
|
|
'PA': np.array([
|
|
0.00248, 0.00586, 0.0181, 0.128, 0.370, 0.640, 0.846, 0.966, 1.019,
|
|
1.030, 0.959, 0.915, 0.880, 0.871, 0.869, 0.870, 0.875, 0.880, 0.901,
|
|
0.918, 0.924, 0.927, 0.929
|
|
]),
|
|
'RLAT': np.array([
|
|
0.00172, 0.00549, 0.0151, 0.0782, 0.205, 0.345, 0.455, 0.522, 0.554,
|
|
0.571, 0.551, 0.549, 0.557, 0.570, 0.585, 0.600, 0.628, 0.651, 0.728,
|
|
0.796, 0.827, 0.846, 0.860
|
|
]),
|
|
'LLAT': np.array([
|
|
0.00172, 0.00549, 0.0155, 0.0904, 0.241, 0.405, 0.528, 0.598, 0.628,
|
|
0.641, 0.620, 0.615, 0.615, 0.623, 0.635, 0.648, 0.670, 0.691, 0.757,
|
|
0.813, 0.836, 0.850, 0.859
|
|
]),
|
|
'ROT': np.array([
|
|
0.00326, 0.0153, 0.0462, 0.191, 0.426, 0.661, 0.828, 0.924, 0.961,
|
|
0.960, 0.892, 0.854, 0.824, 0.814, 0.812, 0.814, 0.821, 0.831, 0.871,
|
|
0.909, 0.925, 0.934, 0.941
|
|
]),
|
|
'ISO': np.array([
|
|
0.00271, 0.0123, 0.0362, 0.143, 0.326, 0.511, 0.642, 0.720, 0.749,
|
|
0.748, 0.700, 0.679, 0.664, 0.667, 0.675, 0.684, 0.703, 0.719, 0.774,
|
|
0.824, 0.846, 0.859, 0.868
|
|
])
|
|
}
|
|
|
|
# Interpolate air kerma onto energy grid for Table A.17
|
|
air_kerma = np.interp(energy_a17, energy_a1, air_kerma)
|
|
|
|
# Compute effective dose per fluence
|
|
dose_per_fluence = {
|
|
geometry: air_kerma * dose_per_airkerma
|
|
for geometry, dose_per_airkerma in dose_per_airkerma.items()
|
|
}
|
|
|
|
# Create table
|
|
table = PrettyTable()
|
|
table.field_names = ['Energy (MeV)', 'AP', 'PA', 'LLAT', 'RLAT', 'ROT', 'ISO']
|
|
table.float_format = '.7'
|
|
for i, energy in enumerate(energy_a17):
|
|
row = [energy]
|
|
for geometry in table.field_names[1:]:
|
|
row.append(dose_per_fluence[geometry][i])
|
|
table.add_row(row)
|
|
print('Photons: Effective dose per fluence, in units of pSv cm², for monoenergetic particles incident in various geometries.\n')
|
|
print(table.get_string(border=False))
|