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

  1. Annetut tehot kilotonneina

yields = [10, 20, 50, 80] # kt

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

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

  1. Säteilyn vakioarvot kilometreinä

constant_rad_50 = 700 * (50 / 1000)**(1/0.19) / 1000 constant_rad_1000 = 700 / 1000

  1. 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
  1. 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)
  1. 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]
  1. Visualisoidaan ympyrät

fig, ax = plt.subplots(figsize=(14, 10)) # Laajennetaan kuvaa

  1. Värit lämpövaikutuksille

colors = ['#ffcccc', '#ff9999', '#ff6666'] labels = ['100 kt', '200 kt', '300 kt', '500 kt']

  1. 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')
  1. 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]}'))
  1. 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]}'))
  1. 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)

  1. 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:

Creative Commons CC-Zero 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.
Public domain

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/TimeThumbnailDimensionsUserComment
current16:45, 15 September 2024Thumbnail for version as of 16:45, 15 September 20241,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.