File:Effects of nuclear weapons 10-80 kt 1.png: Difference between revisions - Wikimedia Commons
Article Images
Summary
Description |
English: Air burst, optimal. |
Date | |
Source | Own work |
Author | ChatGPT 3 and 4o AI |
Source of data
https://nuclearweaponarchive.org/Nwfaq/Nfaq5.html
Section 5.0 Effects of Nuclear Explosions
Nuclear Weapons Frequently Asked Questions
Version 2.14: 15 May 1997
COPYRIGHT CAREY SUBLETTE
This material may be excerpted, quoted, or distributed freely provided that attribution to the author (Carey Sublette), the document name (Nuclear Weapons Frequently Asked Questions) and this copyright notice is clearly preserved, and the URL of this website is included: http://nuclearweaponarchive.org
Python3 source code, chatgpt 3 and 4o generation: lots of own edit
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
Annetut tehot kilotonneina
yields = [10, 20, 50, 80] # kt
- Vakioarvot suoraan kilometreinä
constant_bl_1_psi = 2.2 # km
constant_bl_3_psi = 1.0 # km
constant_bl_5_psi = 0.71 # km
constant_bl_10_psi = 0.45 # km
constant_bl_20_psi = 0.28 # km
- Vakioarvot lämpövaikutuksille kilometreinä
constant_thermal_1st = 1.2 # 1. asteen palovamma km
constant_thermal_2nd = 0.87 # 2. asteen palovamma km
constant_thermal_3rd = 0.67 # 3. asteen palovamma km
- Säteilyn vakioarvot kilometreinä
constant_rad_50 = 700 * (50 / 1000)**(1/0.19) / 1000
constant_rad_1000 = 700 / 1000
- Kaavat
def r_thermal_1st(Y):
return Y**0.38 * constant_thermal_1st
def r_thermal_2nd(Y):
return Y**0.40 * constant_thermal_2nd
def r_thermal_3rd(Y):
return Y**0.41 * constant_thermal_3rd
def blast_radius(Y, constant_bl):
return Y**0.33 * constant_bl
def r_radiation(Y, rad_level):
if rad_level == 50:
return Y**0.19 * constant_rad_50
elif rad_level == 1000:
return Y**0.19 * constant_rad_1000
else:
return None
- Arvioidaan ja tallennetaan tulokset
results = {
"thermal_1st": [],
"thermal_2nd": [],
"thermal_3rd": [],
"blast_1_psi": [],
"blast_3_psi": [],
"blast_5_psi": [],
"blast_10_psi": [],
"blast_20_psi": [],
"radiation_50_rad": [],
"radiation_1000_rad": []
}
for Y in yields:
r_thermal_1 = r_thermal_1st(Y) * 1000 # Kerrotaan 1000:lla, koska skaalataan metreiksi
r_thermal_2 = r_thermal_2nd(Y) * 1000
r_thermal_3 = r_thermal_3rd(Y) * 1000
r_blast_1 = blast_radius(Y, constant_bl_1_psi) * 1000
r_blast_3 = blast_radius(Y, constant_bl_3_psi) * 1000
r_blast_5 = blast_radius(Y, constant_bl_5_psi) * 1000
r_blast_10 = blast_radius(Y, constant_bl_10_psi) * 1000
r_blast_20 = blast_radius(Y, constant_bl_20_psi) * 1000
r_rad_50 = r_radiation(Y, 50) * 1000 # Kerrotaan 1000:lla, koska skaalataan metreiksi
r_rad_1000 = r_radiation(Y, 1000) * 1000
results["thermal_1st"].append(r_thermal_1)
results["thermal_2nd"].append(r_thermal_2)
results["thermal_3rd"].append(r_thermal_3)
results["blast_1_psi"].append(r_blast_1)
results["blast_3_psi"].append(r_blast_3)
results["blast_5_psi"].append(r_blast_5)
results["blast_10_psi"].append(r_blast_10)
results["blast_20_psi"].append(r_blast_20)
results["radiation_50_rad"].append(r_rad_50)
results["radiation_1000_rad"].append(r_rad_1000)
- Asetetaan välistys ja x-koordinaatit
spacing_factor = 1.2 # Välistyskerroin
x_positions = []
previous_x = -15000
for r_blast_20 in results["blast_20_psi"]:
x_positions.append(previous_x + r_blast_20 + 15000) # 15000 m marginaali
previous_x = x_positions[-1]
- Visualisoidaan ympyrät
fig, ax = plt.subplots(figsize=(14, 10)) # Laajennetaan kuvaa
- Värit lämpövaikutuksille
colors = ['#ffcccc', '#ff9999', '#ff6666']
labels = ['100 kt', '200 kt', '300 kt', '500 kt']
- Piirretään lämpövaikutukset
for i, Y in enumerate(yields):
circle_thermal_1 = plt.Circle((x_positions[i], 0), results["thermal_1st"][i], color=colors[0], fill=True, alpha=0.3, linestyle='--')
circle_thermal_2 = plt.Circle((x_positions[i], 0), results["thermal_2nd"][i], color=colors[1], fill=True, alpha=0.3, linestyle='--')
circle_thermal_3 = plt.Circle((x_positions[i], 0), results["thermal_3rd"][i], color=colors[2], fill=True, alpha=0.3, linestyle='--')
ax.add_artist(circle_thermal_1)
ax.add_artist(circle_thermal_2)
ax.add_artist(circle_thermal_3)
# Lisää kilotonnilukemat ympyröiden lähelle
ax.text(x_positions[i], results["thermal_3rd"][i] + 5000, f'{yields[i]} kt', fontsize=16, ha='center', color='black')
- Piirretään paineaallon ympyrät
for i, Y in enumerate(yields):
ax.add_artist(plt.Circle((x_positions[i], 0), results["blast_1_psi"][i], color='blue', fill=False, lw=0.25, linestyle='-', label=f'1 PSI {labels[i]}'))
ax.add_artist(plt.Circle((x_positions[i], 0), results["blast_3_psi"][i], color='blue', fill=False, lw=0.5, linestyle='-', label=f'3 PSI {labels[i]}'))
ax.add_artist(plt.Circle((x_positions[i], 0), results["blast_5_psi"][i], color='blue', fill=False, lw=1, linestyle='-', label=f'5 PSI {labels[i]}'))
ax.add_artist(plt.Circle((x_positions[i], 0), results["blast_10_psi"][i], color='blue', fill=False, lw=2, linestyle='-', label=f'10 PSI {labels[i]}'))
ax.add_artist(plt.Circle((x_positions[i], 0), results["blast_20_psi"][i], color='blue', fill=False, lw=3, linestyle='-', label=f'20 PSI {labels[i]}'))
- Piirretään säteilyvaikutukset
for i, Y in enumerate(yields):
ax.add_artist(plt.Circle((x_positions[i], 0), results["radiation_50_rad"][i], color='purple', fill=False, lw=2, linestyle='-', label=f'50 rad {labels[i]}'))
ax.add_artist(plt.Circle((x_positions[i], 0), results["radiation_1000_rad"][i], color='black', fill=False, lw=2, linestyle='-', label=f'1000 rad {labels[i]}'))
- Legendat ulkopuolelle
thermal_patch = [mpatches.Patch(color=color, label=f'{deg} Degree Burn') for color, deg in zip(colors, ['1st', '2nd', '3rd'])]
blast_patch = [mpatches.Patch(color='blue', lw=lw, label=f'{psi} PSI') for lw, psi in zip([3, 2, 1, 0.75, 0.5], ['1', '3', '5', '10', '20'])]
radiation_patch = [mpatches.Patch(color='purple', lw=2, label='50 rad'), mpatches.Patch(color='black', lw=2, label='1000 rad')]
plt.legend(handles=thermal_patch + blast_patch + radiation_patch, loc='upper left', fontsize=14)
- Asetetaan akselien rajat ja lisätään tekstit
ax.set_xlim(-25000, 60000) # Laajennetaan rajat
ax.set_ylim(-15000, 15000)
plt.xlabel('Distance (m)', fontsize=16)
plt.ylabel('Y-Axis (m)', fontsize=16)
plt.title('Effects of Nuclear Explosions: 10-80 kt', fontsize=18)
ax.set_aspect('equal', 'box')
ax.grid(lw=0.5, alpha=0.5)
plt.tight_layout()
plt.show()
Licensing
I, the copyright holder of this work, hereby publish it under the following license:
This file is made available under the Creative Commons CC0 1.0 Universal Public Domain Dedication. | |
The person who associated a work with this deed has dedicated the work to the public domain by waiving all of their rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law. You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission. |
This file is in the public domain because it is the work of a computer algorithm or artificial intelligence and does not contain sufficient human authorship to support a copyright claim. The United Kingdom and Hong Kong provide a limited term of copyright protection for computer-generated works of 50 years from creation. [1] [2] |
Click on a date/time to view the file as it appeared at that time.
Date/Time | Thumbnail | Dimensions | User | Comment | |
---|---|---|---|---|---|
current | 16:45, 15 September 2024 | 1,651 × 677 (147 KB) | Merikanto (talk | contribs) | Uploaded own work with UploadWizard |
You cannot overwrite this file.
There are no pages that use this file.