Скачиваний:
113
Добавлен:
13.12.2021
Размер:
8.35 Кб
Скачать
# Задание №3

import math

последняя_цифра = 0

# Радиоактивное загрязнение местности
t_н = [2, 4, 3, 3, 4, 3, 3, 4, 5, 3][последняя_цифра]  # часов
t_раб = [6, 4, 5, 3, 6, 7, 4, 3, 5, 7][последняя_цифра]  # часов
t_к = t_н + t_раб  # часов
Р_н = [4, 7, 5, 4, 5, 3, 5, 6, 7, 3][последняя_цифра]  # Р/с
Д_доп = [4, 5, 4, 3, 4, 5, 5, 5, 4, 3][последняя_цифра]  # бэр
К_осл = [8, 6, 7, 8, 8, 7, 7, 6, 7, 8][последняя_цифра]  # раз
print(f'Время начала облучения t_н = {t_н:.6g} ч')
print(f'Время работы на объекте t_раб = {t_раб:.6g} ч')
print(f'Время окончания облучения t_к = {t_к:.6g} ч')
print(f'Уровень радиоактивного облучения на время начала облучения P_н = {Р_н:.6g} Р/ч')
print(f'Допустимая доза облучения персонала Д_доп = {Д_доп:.6g} бэр')
print(f'Коэффициент ослабления объекта и посёлка К_осл = {К_осл:.6g} раз', end='\n\n')

# n -- показатель степени, характеризующий радионуклидный состав
#      и скорость уменьшения уровня радиоактивного излучения во времени
n = 0.4
Р_1 = Р_н * (1 / t_н) ** (-n)
К_пн = t_н ** (-n)
К_пк = t_к ** (-n)
Р_к = Р_н * (t_к / t_н) ** (-n)
Д_АЭС_обл = 1.7 * (Р_к * t_к - Р_н * t_н)
Д_помещ_обл = Д_АЭС_обл / К_осл
t_8 = t_н + 8
Р_8 = Р_н * (t_8 / t_н) ** (-n)
Д_помещ_обл_8 = 1.7 * (Р_8 * t_8 - Р_н * t_н) / К_осл
t_48 = t_н + 24 * 2
Р_48 = Р_н * (t_48 / t_н) ** (-n)
Д_помещ_обл_48 = 1.7 * (Р_48 * t_48 - Р_н * t_н) / К_осл
t_30d = t_н + 24 * 30
Р_30d = Р_н * (t_30d / t_н) ** (-n)
Д_помещ_обл_30d = 1.7 * (Р_30d * t_30d - Р_н * t_н) / К_осл
t_70y = math.ceil(t_н + 24 * 365.2425 * 70)  # 365.2425 дней в году согласно григорианскому календарю
Р_70y = Р_н * (t_70y / t_н) ** (-n)
Д_помещ_обл_70y = 1.7 * (Р_70y * t_70y - Р_н * t_н) / К_осл


def bilinear_interpolation(xs, ys, zs, x_inp, y_inp):
    assert all(x <= nxt_x for x, nxt_x in zip(xs, xs[1:])), 'xs must be sorted'
    assert all(y <= nxt_y for y, nxt_y in zip(ys, ys[1:])), 'ys must be sorted'
    for i, (x, nxt_x) in enumerate(zip(xs, xs[1:])):
        if x <= x_inp <= nxt_x:
            for j, (y, nxt_y) in enumerate(zip(ys, ys[1:])):
                if y <= y_inp <= nxt_y:
                    return (zs[i][j] * (nxt_x - x_inp) * (nxt_y - y_inp) +
                            zs[i + 1][j] * (x_inp - x) * (nxt_y - y_inp) +
                            zs[i][j + 1] * (nxt_x - x_inp) * (y_inp - y) +
                            zs[i + 1][j + 1] * (x_inp - x) * (y_inp - y)) / ((nxt_x - x) * (nxt_y - y))


# Данные таблицы №2
# "Допустимая продолжительность пребывания людей на радиоактивно зараженной местности при аварии АЭС"
A_col = [0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.]
t_н_col = [1, 2, 3, 4, 6, 8, 12]
T_col = [
    [7.3, 8.35, 10.0, 11.3, 12.3, 14.0, 16.0],
    [4.5, 5.35, 6.3, 7.1, 8.0, 9.0, 10.3],
    [3.3, 4.0, 4.35, 5.1, 5.5, 6.3, 7.3],
    [2.45, 3.05, 3.35, 4.05, 4.3, 5.0, 6.0],
    [2.15, 2.35, 3.0, 3.2, 3.45, 4.1, 4.5],
    [1.5, 2.1, 2.3, 2.4, 3.1, 3.3, 4.0],
    [1.35, 1.5, 2.1, 2.25, 2.45, 3.0, 3.3],
    [1.25, 1.35, 1.55, 2.05, 2.25, 2.4, 3.05],
    [1.15, 1.3, 1.4, 1.55, 2.1, 2.2, 2.45]
]

b_АЭС = False  # использовалась ли билинейная интерполяция
A_АЭС = Р_1 / Д_доп
Т_преб_АЭС = None
if A_АЭС <= 1.0:
    Т_преб_АЭС = bilinear_interpolation(A_col, t_н_col, T_col, A_АЭС, t_н)
    b_АЭС = Т_преб_АЭС is not None
if Т_преб_АЭС is None:
    Т_преб_АЭС = (1 / (1.7 * A_АЭС) + t_н ** 0.6) ** 1.7

b_помещ = False  # использовалась ли билинейная интерполяция
A_помещ = Р_1 / (Д_доп * К_осл)
Т_преб_помещ = None
if A_помещ <= 1.0:
    Т_преб_помещ = bilinear_interpolation(A_col, t_н_col, T_col, A_помещ, t_н)
    b_помещ = Т_преб_помещ is not None
if Т_преб_помещ is None:
    Т_преб_помещ = (1 / (1.7 * A_помещ) + t_н ** 0.6) ** 1.7


print(f'Уровень радиоактивного излучения на 1 час после аварии на АЭС Р_1 = {Р_1:.6g} Р/ч')
print(f'Коэффициент пересчета уровня радиоактивного излучения в начале облучения К_пн = {К_пн:.6g}')
print(f'Коэффициент пересчета уровня радиоактивного излучения в конце облучения К_пк = {К_пк:.6g}')
print(f'Уровень радиоактивного излучения на время окончания облучения после аварии на АЭС Р_к = {Р_к:.6g} Р/ч')
print(f'Возможная доза облучения для персонала и жителей посёлка, работающих на открытой территории Д_АЭС_обл = {Д_АЭС_обл:.6g} бэр')
print(f'Возможная доза облучения персонала и жителей посёлка, находящихся в помещении или ПРУ Д_помещ_обл = {Д_помещ_обл:.6g} бэр')
print(f'Коэффициент пребывания на открытой территории A_АЭС = {A_АЭС:.6g}')
print(f'Коэффициент пребывания в помещении A_помещ = {A_помещ:.6g}')
print(f'Время пребывания персонала и жителей населённого пункта на открытой территории Т_преб_АЭС = {Т_преб_АЭС:.6g} ч' + (' (билинейная интерполяция)' * b_АЭС))
print(f'Время пребывания персонала и жителей населённого пункта в помещении Т_преб_помещ = {Т_преб_помещ:.6g} ч' + (' (билинейная интерполяция)' * b_помещ), end='\n\n')

print(f'8 часов после аварии t_8 = {t_8:.6g} ч')
print(f'Уровень радиоактивного облучения за 8 часов Р_8 = {Р_8:.6g} Р/ч')
print(f'Возможная доза радиоактивного облучения жителей посёлка за 8 ч. проживания на РЗМ в домах Д_помещ_обл_8 = {Д_помещ_обл_8:.6g} бэр', end='\n\n')

print(f'2 суток после аварии t_48 = {t_48:.6g} ч')
print(f'Уровень радиоактивного облучения за 2 суток Р_48 = {Р_48:.6g} Р/ч')
print(f'Возможная доза радиоактивного облучения жителей посёлка за 2 суток проживания на РЗМ в домах Д_помещ_обл_48 = {Д_помещ_обл_48:.6g} бэр', end='\n\n')

print(f'30 дней после аварии t_30d = {t_30d:.6g} ч')
print(f'Уровень радиоактивного облучения за 30 дней Р_30d = {Р_30d:.6g} Р/ч')
print(f'Возможная доза радиоактивного облучения жителей посёлка за 30 дней проживания на РЗМ в домах Д_помещ_обл_30d = {Д_помещ_обл_30d:.6g} бэр', end='\n\n')

print(f'70 лет после аварии t_70y = {t_70y:.6g} ч')
print(f'Уровень радиоактивного облучения за 70 лет Р_70y = {Р_70y:.6g} Р/ч')
print(f'Возможная доза радиоактивного облучения жителей посёлка за 70 лет проживания на РЗМ в домах Д_помещ_обл_70y = {Д_помещ_обл_70y:.6g} бэр')