New Mars Forums

Official discussion forum of The Mars Society and MarsNews.com

You are not logged in.

Announcement

Announcement: This forum is accepting new registrations by emailing newmarsmember * gmail.com become a registered member. Read the Recruiting expertise for NewMars Forum topic in Meta New Mars for other information for this process.

#126 2024-07-15 10:04:01

GW Johnson
Member
From: McGregor, Texas USA
Registered: 2011-12-04
Posts: 5,678
Website

Re: Spin Launch SpinLaunch Vacuum Launches Centrifuge Launched Mass

Composite solid propellants today pretty much use a polymer binder in which you disperse the solid ingredients during mixing,  then cure in place by both chemistry and cooking (essentially vulcanizing the rubber binder).  The solids are usually AP (a class 1.1 mass detonable material as a powder that is also friction-sensitive),  aluminum powder (a fire hazard),  iron oxide powder,  and carbon lack powder.  The older ones used AN oxidizer,  but AP performs a lot better.

The composite binders are CTPB or HTPB if you need to cold soak (these go down to -65F),  or PBAN (if you never go below about 20 F,  it cracks easily in the cold).  Processing these things requires remote-operated equipment located in explosion-proof revetments.  There is also GAP,  but it is a liquid monopropellant explosive.  Usually only a double-base plant can handle that.

The double base is even worse,  you need liquid explosive precautions (impermeable surfaces everywhere) and you must handle raw nitroglycerin,  which is extremely sensitive to all sorts of stimuli! The propellant is pelletized nitrocellulose flooded with nitroglycerin,  which reacts to form a sort of plastic material.  The same oxidizer and ballistic-aid solids can be dispersed among the NC particles,  to form what is called a composite-modified double base.  Those usually used AN as the added oxidizer,  but AP is being used more,  now.

As you can see,  the facility investment and operating expenses of a solid propellant plant are enormous.  Not many smaller businesses can afford to get started doing this anymore.  "Aerojet Rocketdyne"/"Northrup Grumman" possibly operates a strategic big-motor plant in Utah (one of the two that were in Salt Lake,  I don't know which one),  and a small-motor tactical plant back east that was once Atlantic Research.  Or they might be running the other other big-motor plant that was UTC-CSD's big plant on the Mississippi.  I doubt they are operating two big-motor plants.  I don't think the other small-motor plant that was Allegheny Ballistic Laboratory in West Virginia is operating any more.   

The big-motor plants at least used to be mostly silo-based missiles,  or space business stuff,  that never soaks out very cold.  They really like PBAN for such applications,  and so have no experience using CTPB or HTPB.  The small-motor guys had to meet severe cold soak to -65 F,  and so stayed completely away from PBAN.  CTPB was the older choice,  HTPB is the newer one,  and slightly better.

GW

Last edited by GW Johnson (2024-07-15 10:10:08)


GW Johnson
McGregor,  Texas

"There is nothing as expensive as a dead crew,  especially one dead from a bad management decision"

Offline

#127 2024-07-15 11:14:38

tahanson43206
Moderator
Registered: 2018-04-27
Posts: 18,452

Re: Spin Launch SpinLaunch Vacuum Launches Centrifuge Launched Mass

For GW Johnson re #125

Thank you for the background on solid rocket manufacture, and in particular on dangers associated with these materials.

The Air Force uses a lot of solid fuel rockets, and my recollection is your experience includes research and testing of rockets for that customer. 

My question today is... do any of the grains for the various under-wing missiles qualify for the SpinLaunch application. I ask because it might be possible ??? to simply use the known performance of those materials and the existing manufacturing facilities to make them.

The quantities to be delivered are significant, if we assume we are serious about expanding from Earth into space.

200 kg is the shot size that SpinLaunch is hawking.  You only get one shot every 12 hours if we assume one depot.  That means you only get 400 kg of propellant to the station per day, per launcher.  However, the launcher can be replicated, and replication is needed, if we are going to collect and store tons of propellant.

If you want a ton per day then you'll need 3 launchers.

If you want 2 tons per day, then you'll need five launchers.

In early days, when business is light, one launcher can build up 100 tons of propellant in 500 days. 

Boiloff may (will) eat into that on orbit cache.

100 tons in a month might be a useful target capacity for a starting depot.

17 launchers would be enough to fill the depot over 30 days, with some spare for boil off.

100*2000/30 >> result divided by 400 >> 16.667

Each 200 kg shipment is going to require a set of second and third stage rockets.

That 100 ton depot load will require 1000 rockets, used over 30 days.

As business grows, that looks to me like a steady business.

(th)

Offline

#128 2024-07-15 18:04:49

tahanson43206
Moderator
Registered: 2018-04-27
Posts: 18,452

Re: Spin Launch SpinLaunch Vacuum Launches Centrifuge Launched Mass

Out of curiosity, I asked Google for information about solid fuel rockets.

There seemed to be a consensus that the material used for the Space Shuttle solid motors is the most common...

carbon (C) are the fuel. The Chemical Equation is: 2KNO3 + S + 3C = K2S + N2 + 3CO2. 2.

Rocket Propulsion - Science Kits
Science Kits
http://www.csun.edu › scied › 2-chem › exp_kits
Search for: What is the formula for solid rocket fuel?
What does NASA use for solid rocket fuel?
This propellant is commonly referred to as ammonium perchlorate composite propellant (APCP). This mixture gave the solid rocket motors a specific impulse of 242 seconds (2.37 km/s) at sea level or 268 seconds (2.63 km/s) in a vacuum.

For GW Johnson... how does this information match up with your post #126?

In your post, are you talking about a binder as distinct from the fuel.

Update ... the editors of the Wikipedia article are (apparently) working on the contents ... the most recent update was in July of 2024.

https://en.wikipedia.org/wiki/Ammonium_ … propellant

(th)

Offline

#129 2024-07-20 17:40:21

tahanson43206
Moderator
Registered: 2018-04-27
Posts: 18,452

Re: Spin Launch SpinLaunch Vacuum Launches Centrifuge Launched Mass

GW Johnson has been working on the SpinLaunch concept recently. He is not yet ready to publish his work, but I have seen a couple iterations already.  The effect of drag is significant, and when drag is considered, the performance of the launch method is less than it would be if there were no atmosphere.  SpinLaunch looks ** really good ** from the Moon, for example.

I am hoping that as GW works with the numbers, and varies the variables that are available, he may find a combination that shows the concept could work.  He's been working with a 300 kg projectile in his first iterations, and the performance is disappointing, due to drag. 

I've suggested increasing the mass of the projectile to 2000 kg.  The drag will not change if the cross section of projectile does not change, but the increased mass will insure greater momentum to push air molecules to the side.

The work I've seen so far includes text, graphs with descriptions, and sections of spreadsheets.

Update: GW is ready to publish the latest results. He has found a configuration of mass, size and exit velocity that appear to show the SpinLaunch concept is feasible from the theoretical standpoint.

Here is a link to a study that shows details for this latest design:

https://www.dropbox.com/scl/fi/p8t4m1cj … okgyf&dl=0

(th)

Offline

#130 2024-07-22 09:52:45

tahanson43206
Moderator
Registered: 2018-04-27
Posts: 18,452

Re: Spin Launch SpinLaunch Vacuum Launches Centrifuge Launched Mass

This post is reserved for an update by GW Johnson...

There are two images and text ...

The summary at this point is that results look more favorable for storable liquid propellant.

The solid fuel version suffers from the low ISP of the material.

Solid fuel study: tOAcmmS.png

Liquid fuel study: 882Xy0p.png

(th)

Offline

#131 2024-07-22 10:18:35

tahanson43206
Moderator
Registered: 2018-04-27
Posts: 18,452

Re: Spin Launch SpinLaunch Vacuum Launches Centrifuge Launched Mass

Here is the text that goes with the images in Post #130

I've run some bounding calculations for NTO-MMH liquids,  and for a set of AP-HTPB-Al solids.  The liquids sized out as a two-stage item,  with the 1st stage near 3000 kg at ignition,  and the 2nd stage near 600 kg at ignition,  to send 120 kg into low circular orbit for tug retrieval. If you increase payload to 200 kg,  scale the other masses up in proportion. Isp was about 345 sec for a pressure-fed storable system at 500 psia,  and 150:1 area expansion ratio.  Overall payload fraction was about 4%.

I sized out the solids as a two-stage item plus a circularization cartridge as a tiny 3rd stage.  I did not like what I found,  it likely needs 3 big stages plus that circularization cartridge.  1st stage ignition about 3000 kg,  2nd stage ignition about 237 kg,  and cartridge ignition about 19 kg to deliver 18 kg to low circular orbit.  Again,  scale up in proportion to deliver 200 kg propellant.  Isp was reverse-engineered as 305 sec from ASALM booster propellant to a 1500 psia system with a vacuum nozzle at 150:1 area ratio expansion.  Overall payload fraction was only about 0.6%,  which is why 2 stages plus a cartridge is inadequate.  As a sea level design,  ASALM was 254 sec in tests.  Not everybody could make this stuff,  you had to pressure-pack cast it at 87 or 88% solids.  Lower solids is lower Isp.

Bear in mind that there are no credible designs backing up any of the weights.  I did assume rather high inerts,  to try to model designing-to-resist-incredible-lateral gee loads in the slinger.  That 3000 kg figure is about 6600 lbm.  None of these will ever perform the way everyone is used to,  because they have to be built so very stout,  and that is inherently very heavy.

(th)

Offline

#132 2024-07-22 17:07:42

SpaceNut
Administrator
From: New Hampshire
Registered: 2004-07-22
Posts: 29,357

Re: Spin Launch SpinLaunch Vacuum Launches Centrifuge Launched Mass

Keep in mind that any changes to the length and width as well as mass means changes to the spin unit itself must be made as well.
Length will affect larger arc or diameter to allow for it to move freely. Width means that opening will need to be made larger as well. Of course, these also mean the arm must be able to support the much larger mass.

Offline

#133 2024-07-22 18:19:28

tahanson43206
Moderator
Registered: 2018-04-27
Posts: 18,452

Re: Spin Launch SpinLaunch Vacuum Launches Centrifuge Launched Mass

For SpaceNut and all members and readers....

GW has completed a four Stage solid fuel conceptual design for the SpinLaunch system. As I interpret the latest work, he has the payload up to 61.3 kg, which is a major improvement but still shy of the target of 200 kg.

wLD0UhF.png

(th)

Offline

#134 2024-07-22 19:48:44

tahanson43206
Moderator
Registered: 2018-04-27
Posts: 18,452

Re: Spin Launch SpinLaunch Vacuum Launches Centrifuge Launched Mass

For GW Johnson re latest version of study ...

Is there any way to guess the cost of the projectile that can put 61.3 kg into 150 Km orbit?

We haven't addressed re-usability.  If each stage had a parachute or some means of steering itself to a collection point, then potentially the entire system could be reused.  That would reduce the cost still further.

(th)

Offline

#135 2024-07-23 08:01:56

tahanson43206
Moderator
Registered: 2018-04-27
Posts: 18,452

Re: Spin Launch SpinLaunch Vacuum Launches Centrifuge Launched Mass

For all ...
Speaking of GW Johnson... he has asked to clarify that the work I have published does not qualify as a "design".  It is a preliminary study to find the boundaries of the problem.
***
I need to go back and correct text where I oversold GW's work, but this correction is added to the topic pending time to go back and make edits.
(th)

Offline

#136 2024-07-23 08:45:22

tahanson43206
Moderator
Registered: 2018-04-27
Posts: 18,452

Re: Spin Launch SpinLaunch Vacuum Launches Centrifuge Launched Mass

I described the opportunity to work with GW Johnson to ChatGPT4o, and it has accepted the (well deserved) skepticism GW brings to the collaboration.  ChatGPT4o wrote a Python program that it ** thinks ** will be useful to compute the configuration of each of multiple stages. I will publish the program here, and invite any and all NewMars members who have the ability to run Python to download the program, installed the needed add-ons, and test the software. 

import numpy as np
import matplotlib.pyplot as plt
import tkinter as tk
from tkinter import simpledialog, messagebox

# Constants
g0 = 9.81  # m/s^2
R = 6371e3  # Earth's radius in meters

def atmospheric_density(altitude):
    """Calculate atmospheric density based on altitude."""
    if altitude < 11000:
        return 1.225 * (1 - 2.25577e-5 * altitude) ** 5.2561
    elif altitude < 25000:
        return 0.36391 * np.exp(1.581e-4 * (11000 - altitude))
    else:
        return 0.08803 * (1 - 2.868e-5 * (altitude - 25000)) ** 34.1632

def drag_force(Cd, A, rho, v):
    """Calculate drag force."""
    return 0.5 * Cd * A * rho * v**2

def simulate_flight(mass, cross_section, velocity, altitude, angle, time_step=0.1, burn_time=60):
    """Simulate the flight of the projectile."""
    altitudes = [altitude]
    velocities = [velocity]
    angles = [angle]
    times = [0]
   
    angle_rad = np.radians(angle)
    velocity_x = velocity * np.cos(angle_rad)
    velocity_y = velocity * np.sin(angle_rad)
   
    for t in np.arange(0, burn_time, time_step):
        rho = atmospheric_density(altitude)
        drag = drag_force(0.75, cross_section, rho, velocity)
        acceleration = -drag / mass - g0 * (R / (R + altitude)) ** 2
       
        # Update velocities
        velocity_x += acceleration * np.cos(angle_rad) * time_step
        velocity_y += (acceleration * np.sin(angle_rad) - g0) * time_step
       
        # Update overall velocity and angle
        velocity = np.sqrt(velocity_x**2 + velocity_y**2)
        angle_rad = np.arctan2(velocity_y, velocity_x)
       
        # Update position
        altitude += velocity_y * time_step
        times.append(t)
        velocities.append(velocity)
        altitudes.append(altitude)
        angles.append(np.degrees(angle_rad))
       
    return times, altitudes, velocities, angles

def run_simulation():
    mass = float(entry_mass.get())
    cross_section = float(entry_cross_section.get())
    velocity = float(entry_velocity.get())
    altitude = float(entry_altitude.get())
    angle = float(entry_angle.get())
    burn_time = float(entry_burn_time.get())
   
    times, altitudes, velocities, angles = simulate_flight(mass, cross_section, velocity, altitude, angle, burn_time=burn_time)
   
    plt.figure(figsize=(10, 6))
    plt.subplot(2, 1, 1)
    plt.plot(times, altitudes)
    plt.xlabel('Time (s)')
    plt.ylabel('Altitude (m)')
    plt.title('Altitude vs Time')

    plt.subplot(2, 1, 2)
    plt.plot(times, velocities)
    plt.xlabel('Time (s)')
    plt.ylabel('Velocity (m/s)')
    plt.title('Velocity vs Time')

    plt.tight_layout()
    plt.show()

app = tk.Tk()
app.title("Stage Simulation")

tk.Label(app, text="Mass (kg)").grid(row=0, column=0)
entry_mass = tk.Entry(app)
entry_mass.grid(row=0, column=1)

tk.Label(app, text="Cross Section (m^2)").grid(row=1, column=0)
entry_cross_section = tk.Entry(app)
entry_cross_section.grid(row=1, column=1)

tk.Label(app, text="Velocity (m/s)").grid(row=2, column=0)
entry_velocity = tk.Entry(app)
entry_velocity.grid(row=2, column=1)

tk.Label(app, text="Altitude (m)").grid(row=3, column=0)
entry_altitude = tk.Entry(app)
entry_altitude.grid(row=3, column=1)

tk.Label(app, text="Angle (degrees)").grid(row=4, column=0)
entry_angle = tk.Entry(app)
entry_angle.grid(row=4, column=1)

tk.Label(app, text="Burn Time (s)").grid(row=5, column=0)
entry_burn_time = tk.Entry(app)
entry_burn_time.grid(row=5, column=1)

tk.Button(app, text="Run Simulation", command=run_simulation).grid(row=6, columnspan=2)

app.mainloop()

(th)

Offline

#137 2024-07-23 08:50:05

tahanson43206
Moderator
Registered: 2018-04-27
Posts: 18,452

Re: Spin Launch SpinLaunch Vacuum Launches Centrifuge Launched Mass

I attempted to post more information but AISE objected to something in the text. I'll try to add it later.

Input:

Mass (kg): Enter the mass of the stage.
Cross Section (m²): Enter the cross-sectional area of the stage.
Velocity (m/s): Enter the initial velocity at the start of the stage.
Altitude (m): Enter the initial altitude at the start of the stage.
Angle (degrees): Enter the angle of movement at the start of the stage.
Burn Time (s): Enter the burn time of the stage.
Run Simulation:
Click the "Run Simulation" button to see the results. The program will plot altitude vs. time and velocity vs. time.


(th)

Offline

#138 2024-07-23 10:18:36

GW Johnson
Member
From: McGregor, Texas USA
Registered: 2011-12-04
Posts: 5,678
Website

Re: Spin Launch SpinLaunch Vacuum Launches Centrifuge Launched Mass

Does the ChatGPT Python program vary CD with Mach number,  or is that a constant?  It should vary with Mach,  because the subsonic and hypersonic values are not the same,  and the transonic values are about twice either the subsonic or hypersonic values.

I could not quite tell what the program was really trying to do.  The slinger trajectory is one problem,  while making the burns to get onto a transfer ellipse is quite a different problem.

GW


GW Johnson
McGregor,  Texas

"There is nothing as expensive as a dead crew,  especially one dead from a bad management decision"

Offline

#139 2024-07-23 17:31:02

tahanson43206
Moderator
Registered: 2018-04-27
Posts: 18,452

Re: Spin Launch SpinLaunch Vacuum Launches Centrifuge Launched Mass

For GW Johnson re #138

Thank you for looking at the Python program that ChatGPT4o created in an effort to try assist with the problem you are working.

To clarify, I asked ChatGPT4o to pick up the problem after release from the SpinLaunch carrier.  The program was written to model four stages, because at that point, that was the number of stages you were considering for the solid fuel version.

Because the vehicle is released at or above 37 miles, the greater part of the atmosphere is below, so the drag forces will be less than the carrier would have had to contend with.

I will attempt to compile the program later today, on a machine set up to run Python.

(th)

Offline

#140 2024-07-23 17:32:39

tahanson43206
Moderator
Registered: 2018-04-27
Posts: 18,452

Re: Spin Launch SpinLaunch Vacuum Launches Centrifuge Launched Mass

For all...

Here is a link to the latest PDF file by GW Johnson, addressing the challenge of configuring a rocket to carry a payload to LEO after release by the SpinLaunch system.

https://www.dropbox.com/scl/fi/4an7uc8c … orsf3&dl=0

I will now attempt to paste the conclusion from the PDF file:

6
Conclusions
The slinger launch trajectories need to be revisited with far more massive flung vehicles, to
see how  much launch speed reduction can be obtained and still apogee out near 37 statute miles up, and
what effect that might have on horizontal apogee speed.

The 2 stage/3 burn liquid and the 4 stage solid need to be revisited at the appropriate t a r g e t mass
for the propelled vehicle from the slinger study revisit, to see what payloads can really be delivered.

This is very likely a multiple pass iterative process.
It is the prerequisite for more traceable design
studies, however!

The paper at the link above includes a graph showing GW's concept for how to circularize the orbit of the payload.  The illustration shows the acceleration at the 37 mile altitude where massive horizontal impulse is needed, and the small circularization acceleration at the 300 kilometer altitude which GW has selected as the goal for this exercise.

I remain hopeful that there may be at least one more current NewMars member who will follow and perhaps participate in this work.

The forum remains open to accept new members who might wish to participate in this project, or other projects our members have  considered. See the Recruiting topic for procedure.

(th)

Offline

#141 2024-07-24 07:40:19

tahanson43206
Moderator
Registered: 2018-04-27
Posts: 18,452

Re: Spin Launch SpinLaunch Vacuum Launches Centrifuge Launched Mass

This post is about the near term path forward.

GW Johnson has prepared a rough draft of concepts for liquid and solid propulsion for the SpinLaunch system.

What he has not yet done is to see if a hybrid might make sense.

GW has shown a massive horizontal boost from the point where SpinLaunch releases the flight package from the carrier, at about 37 miles altitude.  GW is assuming negligible horizontal velocity, but he is also assuming negligible drag since the altitude is above most of the atmosphere.  He is currently showing a relatively small burn at the top of the ellipse to circularize the orbit at 300 km.

I've been working with ChatGPT4o to approach the problem using Python, and I am reasonably confident the two approaches can be brought together to create a structure that performs the multiple stage iteration that would allow for closer and closer approximation of what is actually possible.

I regret that we have such limited participation in the process, but that is the situation at the moment.

My time will be limited over the next week, due to external obligations. If all goes well, I'll be able to devote more time to this in August. At the same time, GW has numerous irons in the fire there in Texas.

(th)

Offline

#142 2024-07-24 12:53:27

GW Johnson
Member
From: McGregor, Texas USA
Registered: 2011-12-04
Posts: 5,678
Website

Re: Spin Launch SpinLaunch Vacuum Launches Centrifuge Launched Mass

With the smaller vehicles,  I was showing 1 to 1.08 km/s horizontal velocity at apogee,  altitude 37 statue miles (59.5 km).  That was for 45 degree launch at 5000 to 5500 mph.  Most of the sling launcher exit kinetic energy is lost to extreme hypersonic drag (low altitude!) in the first 10 seconds.  Larger size vehicles gain mass faster than they do frontal area,  at the same apparent overall density and the same L/D and hypersonic drag coefficient.  The frontal area mass loading (analog of ballistic coefficient) increases in proportion to diameter.  The larger it is,  the less initial KE you lose in the first 10 seconds,  but the effect is not at all dramatic!

So I looked at larger-mass vehicles of larger diameter,  and I reduced the launch angle to just maintain the apogee altitude,  hoping for an increase in apogee horizontal velocity.  I got it,  but it is not dramatic.  Even so,  it lowers the dV required to reach orbit (theoretically 7.95 km/s minus the slinger horizontal apogee speed),  to which you add a tad of loss,  and about 0.08 km/s to circularize at 300 km circular.  That raises the overall payload/ignition mass fractions.  A little bit!

The problem is these larger slung vehicles are getting to be quite large,  implying a ridiculously-large slinger,  and the deliverable payloads are still quite low compared to Tom's desired 200 kg.

I cannot work on this continuously,  there are too many other things around here demanding my attention.  But I have made some progress,  and I sent it to Tom's personal email. 

I don't know enough about hybrid rockets to investigate them properly.  But I have been looking at storable liquids,  and solids,  for the propulsion from slinger apogee to low circular Earth orbit. That's in the stuff I have sent Tom so far.  And none of that is a converged sizing. 

GW

Last edited by GW Johnson (2024-07-24 12:55:36)


GW Johnson
McGregor,  Texas

"There is nothing as expensive as a dead crew,  especially one dead from a bad management decision"

Offline

#143 2024-07-24 17:37:31

tahanson43206
Moderator
Registered: 2018-04-27
Posts: 18,452

Re: Spin Launch SpinLaunch Vacuum Launches Centrifuge Launched Mass

For GW Johnson and anyone else who may be interested in the SpinLaunch problem...

I asked ChatGPT4o to clarify how it is doing drag computations. In this post, I will attempt to assemble a series of snippets from an extended conversation.

This opening snippet shows the code that handles drag computations:

def atmospheric_density(altitude):
    # Model for atmospheric density (kg/m^3)
    scale_height = 8500  # scale height for the atmosphere in meters
    sea_level_density = 1.225  # sea level atmospheric density in kg/m^3
    return sea_level_density * np.exp(-altitude / scale_height)

I then asked ChatGPT4o to show me the results if we place the vehicle at 37 miles, above the greater part of the atmosphere:

This model exponentially decreases the atmospheric density with altitude, which is appropriate for the range of altitudes considered in your simulations.

If you would like to further refine this model or if there are specific atmospheric models you would prefer, we can update the function accordingly. Let me know if there are any additional adjustments or specific atmospheric models you have in mind.

Would you like to proceed with the current model, or should we refine it further to match more detailed atmospheric data?


Can you determine the amount of drag at 37 miles altitude, as compared to sea level, which we can arbitrarily set to 1. What I am looking for is the value that your code is going to be using at 37 miles. It will be a value less than 1.

ChatGPT
At 37 miles altitude, the atmospheric density is approximately 0.000907 times the density at sea level. This means the drag experienced at this altitude will be significantly reduced compared to sea level, effectively less than 1% of the drag at sea level.

For GW Johnson... I would be interested in knowing how the value of 0.000907 compares to the corresponding figure used by the spreadsheet.  Please keep in mind that the 0.000907 figure is the part of 1, where 1 is taken as the atmosphere at sea level.  There is some drag at 37 miles, and ChatGPT4o is showing that value as 0.0907 percent of the value at sea level. How does that compare to the spreadsheet calculation for drag at that altitude?

(th)

Offline

#144 2024-07-24 17:40:04

tahanson43206
Moderator
Registered: 2018-04-27
Posts: 18,452

Re: Spin Launch SpinLaunch Vacuum Launches Centrifuge Launched Mass

Here is an updated version of the Stage Calculator prepared by ChatGPT4o, with feedback from me and from GW Johnson.

# Version of Stage Calculator 02 on 2024/07/24
import numpy as np
import matplotlib.pyplot as plt
import tkinter as tk
from tkinter import ttk

def simulate_flight(mass, cross_section, velocity, altitude, angle, burn_time, isp):
    # Convert angle to radians
    angle_rad = np.radians(angle)

    # Initial velocities
    velocity_x = velocity * np.cos(angle_rad)
    velocity_y = velocity * np.sin(angle_rad)

    g = 9.81  # Gravity
    rho0 = 1.225  # Sea level air density, kg/m^3
    drag_coefficient = 0.47  # Typical for a projectile shape
    dt = 0.1  # Time step, seconds

    times = np.arange(0, burn_time, dt)
    altitudes = []
    velocities = []
    angles = []

    for t in times:
        if altitude < 0:
            break

        # Decrease air density with altitude
        rho = rho0 * np.exp(-altitude / 8000.0)

        # Calculate drag force
        speed = np.sqrt(velocity_x**2 + velocity_y**2)
        drag_force = 0.5 * rho * cross_section * drag_coefficient * speed**2

        # Calculate thrust (Tsiolkovsky rocket equation)
        thrust = isp * g * mass / burn_time  # Simplified thrust calculation

        # Update velocities
        accel_x = (thrust - drag_force * (velocity_x / speed)) / mass
        accel_y = (-g + thrust / mass) - (drag_force * (velocity_y / speed)) / mass

        velocity_x += accel_x * dt
        velocity_y += accel_y * dt

        # Update position
        altitude += velocity_y * dt

        # Update angle
        angle_rad = np.arctan2(velocity_y, velocity_x)

        # Save values
        altitudes.append(altitude)
        velocities.append(np.sqrt(velocity_x**2 + velocity_y**2))
        angles.append(np.degrees(angle_rad))

    return times, altitudes, velocities, angles

def run_simulation():
    mass = float(mass_entry.get())
    cross_section = float(cross_section_entry.get())
    velocity = float(velocity_entry.get())
    altitude = float(altitude_entry.get())
    angle = float(angle_entry.get())
    burn_time = float(burn_time_entry.get())
    isp = float(isp_entry.get())

    times, altitudes, velocities, angles = simulate_flight(mass, cross_section, velocity, altitude, angle, burn_time, isp)

    plt.figure()
    plt.subplot(311)
    plt.plot(times, altitudes)
    plt.title('Altitude vs Time')
    plt.xlabel('Time (s)')
    plt.ylabel('Altitude (m)')

    plt.subplot(312)
    plt.plot(times, velocities)
    plt.title('Velocity vs Time')
    plt.xlabel('Time (s)')
    plt.ylabel('Velocity (m/s)')

    plt.subplot(313)
    plt.plot(times, angles)
    plt.title('Angle vs Time')
    plt.xlabel('Time (s)')
    plt.ylabel('Angle (degrees)')

    plt.tight_layout()
    plt.show()

root = tk.Tk()
root.title("Stage Simulation")

mainframe = ttk.Frame(root, padding="3 3 12 12")
mainframe.grid(column=0, row=0, sticky=(tk.W, tk.E, tk.N, tk.S))

mass_entry = ttk.Entry(mainframe, width=7)
mass_entry.grid(column=2, row=1, sticky=(tk.W, tk.E))

cross_section_entry = ttk.Entry(mainframe, width=7)
cross_section_entry.grid(column=2, row=2, sticky=(tk.W, tk.E))

velocity_entry = ttk.Entry(mainframe, width=7)
velocity_entry.grid(column=2, row=3, sticky=(tk.W, tk.E))

altitude_entry = ttk.Entry(mainframe, width=7)
altitude_entry.grid(column=2, row=4, sticky=(tk.W, tk.E))

angle_entry = ttk.Entry(mainframe, width=7)
angle_entry.grid(column=2, row=5, sticky=(tk.W, tk.E))

burn_time_entry = ttk.Entry(mainframe, width=7)
burn_time_entry.grid(column=2, row=6, sticky=(tk.W, tk.E))

isp_entry = ttk.Entry(mainframe, width=7)
isp_entry.grid(column=2, row=7, sticky=(tk.W, tk.E))

ttk.Label(mainframe, text="Mass (kg)").grid(column=1, row=1, sticky=tk.W)
ttk.Label(mainframe, text="Cross Section (m^2)").grid(column=1, row=2, sticky=tk.W)
ttk.Label(mainframe, text="Velocity (m/s)").grid(column=1, row=3, sticky=tk.W)
ttk.Label(mainframe, text="Altitude (m)").grid(column=1, row=4, sticky=tk.W)
ttk.Label(mainframe, text="Angle (degrees)").grid(column=1, row=5, sticky=tk.W)
ttk.Label(mainframe, text="Burn Time (s)").grid(column=1, row=6, sticky=tk.W)
ttk.Label(mainframe, text="ISP (s)").grid(column=1, row=7, sticky=tk.W)

ttk.Button(mainframe, text="Run Simulation", command=run_simulation).grid(column=2, row=8, sticky=tk.W)

for child in mainframe.winfo_children():
    child.grid_configure(padx=5, pady=5)

root.mainloop()

(th)

Offline

#145 2024-07-24 17:44:02

tahanson43206
Moderator
Registered: 2018-04-27
Posts: 18,452

Re: Spin Launch SpinLaunch Vacuum Launches Centrifuge Launched Mass

As a follow up to Post #144, here are the input fields to be entered at run time:

"Mass (kg)"
"Cross Section (m^2)")
"Velocity (m/s)")
"Altitude (m)")
"Angle (degrees)")
"Burn Time (s)")
"ISP (s)")

It is possible GW Johnson will ask for more input values to improve performance.

I will now attempt to run the revised program.

As a reminder, anyone with a computer that runs Windows, Linux or Apple OS will be able to run Python.

I understand that even Android can be configured to run Python, but I have no direct experience with it.

(th)

Offline

#146 2024-07-24 18:27:32

tahanson43206
Moderator
Registered: 2018-04-27
Posts: 18,452

Re: Spin Launch SpinLaunch Vacuum Launches Centrifuge Launched Mass

Here is a part of a discussion about the need to change the Python program to burn only at Apogee and Perigee, and at an angle of zero with respect to the ellipse.

In addition to our mission of helping the engineer to compete with other teams to design a vehicle for SpinLaunch, we have an educational opportunity for the members of our small international forum. Please format our discussion about using apogee and perigee for our audience, using the BBCode subset that you have used so effectively in the past.
ChatGPT
Certainly! Here is the formatted discussion using BBCode:

Understanding Orbital Maneuvers: Apogee and Perigee Burns

In the context of orbital mechanics, understanding how to effectively change a spacecraft's orbit using burns at specific points is crucial. Here, we'll discuss the importance of performing burns at apogee and perigee, and how these maneuvers can be applied to our SpinLaunch project.

Key Concepts

  • []Apogee: The point in an orbit where the spacecraft is farthest from the Earth.
    []Perigee: The point in an orbit where the spacecraft is closest to the Earth.

  • Horizontal Burn: A burn applied in the direction of the spacecraft's current velocity (tangential to the orbit).


Burns at Apogee and Perigee

  • Burn at Perigee (Closest Point):

    When a spacecraft fires its engines horizontally at perigee, it increases its velocity.
    This increase in velocity raises the apogee (the highest point of the orbit).
    This type of burn is efficient for increasing the altitude of the apogee while maintaining a nearly circular orbit at perigee.

  • Burn at Apogee (Farthest Point):


    When a spacecraft fires its engines horizontally at apogee, it increases its velocity.
    This increase in velocity raises the perigee (the lowest point of the orbit).
    This type of burn is efficient for raising the altitude of the perigee, effectively circularizing the orbit if done at the right time and velocity.

Practical Application for SpinLaunch

  • Initial Burn Strategy:

    After the SpinLaunch system places the vehicle at 37 miles altitude with an initial eastward velocity, our plan involves performing horizontal burns at this altitude.
    The first series of burns will aim to increase the vehicle's velocity, thereby raising the apogee to 300 km.

  • Circularization Burn:


    Once the apogee is at 300 km, a final horizontal burn at this altitude will increase the perigee, circularizing the orbit at 300 km.

Why Horizontal Burns?

Efficiency: Horizontal burns at apogee or perigee make the most efficient use of fuel, as they directly increase the spacecraft's velocity in the most effective direction.
Orbital Mechanics: Applying thrust at angles other than horizontal or at points other than apogee or perigee can introduce unwanted changes in the orbit's shape and orientation, making the maneuver less efficient.
Program Adjustments

Our Python program must reflect these orbital mechanics principles to accurately model our mission profile. This involves:

  • []Identifying perigee and apogee points.
    []Applying horizontal thrust at these points to achieve desired orbital changes.

  • Recalculating the orbital path after each burn to reflect the new elliptical or circular orbit.

Conclusion


By understanding and applying these principles of orbital mechanics, we can effectively plan and execute the mission to deliver our payload to a 300 km Low Earth Orbit (LEO). This approach not only helps in the practical execution of the mission but also serves as an educational tool for our forum members to grasp the fundamentals of spaceflight dynamics.

We look forward to any questions or discussions this may generate within our community!

Feel free to copy and paste this formatted discussion into your forum. If you need further adjustments or additional information, let me know!

It appears that I have exhausted my account for the immediate present.

Thankfully ChatGPT4o will be available again after a time out.


(th)

Offline

#147 2024-07-25 09:34:55

tahanson43206
Moderator
Registered: 2018-04-27
Posts: 18,452

Re: Spin Launch SpinLaunch Vacuum Launches Centrifuge Launched Mass

Building upon feedback from GW Johnson, today I asked ChatGPT4o to begin work on a Python program to deal with just the perigee portion of the flight of a payload package to be placed at a desired altitude by one of the alternative launch systems. The program will if all goes well, accept inputs from the operator, and iteratively compute the stages needed to achieve the flight objective. In this case, the flight objective is to increase the apogee of the ellipse to the desired altitude.

Here is a first draft of a program to perform this set of operations:

import numpy as np
import matplotlib.pyplot as plt
import tkinter as tk
from tkinter import ttk

def orbital_velocity(altitude):
    mu = 3.986e14  # Gravitational parameter for Earth (m^3/s^2)
    r = 6371e3 + altitude  # Radius from the center of the Earth (m)
    return np.sqrt(mu / r)

def burn_effects(mass, isp, delta_v):
    g0 = 9.81  # Gravitational acceleration at sea level (m/s^2)
    m0 = mass
    mf = m0 / np.exp(delta_v / (isp * g0))
    return mf

def simulate_stage(altitude, velocity, isp, mass, burn_time):
    # Simplified simulation of a single stage burn
    delta_v = isp * 9.81 * np.log(mass / (mass - (burn_time * isp * 9.81)))
    new_velocity = velocity + delta_v
    return new_velocity

# The run function caused an AISE

# Set up Tkinter interface
root = tk.Tk()
root.title("Stage to Orbit Simulation")

mainframe = ttk.Frame(root, padding="10")
mainframe.grid(row=0, column=0, sticky=(tk.W, tk.E, tk.N, tk.S))

ttk.Label(mainframe, text="Initial Altitude (m)").grid(row=1, column=1, sticky=tk.W)
altitude_entry = ttk.Entry(mainframe)
altitude_entry.grid(row=1, column=2)

ttk.Label(mainframe, text="Initial Velocity (m/s)").grid(row=2, column=1, sticky=tk.W)
initial_velocity_entry = ttk.Entry(mainframe)
initial_velocity_entry.grid(row=2, column=2)

ttk.Label(mainframe, text="Desired Apogee (m)").grid(row=3, column=1, sticky=tk.W)
desired_apogee_entry = ttk.Entry(mainframe)
desired_apogee_entry.grid(row=3, column=2)

ttk.Label(mainframe, text="Payload Mass (kg)").grid(row=4, column=1, sticky=tk.W)
payload_mass_entry = ttk.Entry(mainframe)
payload_mass_entry.grid(row=4, column=2)

ttk.Label(mainframe, text="ISP (s)").grid(row=5, column=1, sticky=tk.W)
isp_entry = ttk.Entry(mainframe)
isp_entry.grid(row=5, column=2)

ttk.Label(mainframe, text="Inert Mass Fraction").grid(row=6, column=1, sticky=tk.W)
inert_mass_fraction_entry = ttk.Entry(mainframe)
inert_mass_fraction_entry.grid(row=6, column=2)

ttk.Label(mainframe, text="Burn Time (s)").grid(row=7, column=1, sticky=tk.W)
burn_time_entry = ttk.Entry(mainframe)
burn_time_entry.grid(row=7, column=2)

run_button = ttk.Button(mainframe, text="Run Simulation", command=run_simulation)
run_button.grid(row=8, column=1, columnspan=2)

results_text = tk.Text(mainframe, width=60, height=20)
results_text.grid(row=9, column=1, columnspan=2)

root.mainloop()

(th)

Offline

#148 2024-07-25 09:48:54

tahanson43206
Moderator
Registered: 2018-04-27
Posts: 18,452

Re: Spin Launch SpinLaunch Vacuum Launches Centrifuge Launched Mass

Here is the run function that caused AISE...

# below removed - If anyone is interested, I'll put the program up on a Google share...

Google share: https://docs.google.com/document/d/1Xfx … sp=sharing

(th)

Offline

#149 2024-07-25 09:52:37

tahanson43206
Moderator
Registered: 2018-04-27
Posts: 18,452

Re: Spin Launch SpinLaunch Vacuum Launches Centrifuge Launched Mass

What we are attempting to do here is to replicate the power of GW Johnson's spreadsheets in a form that may be (hopefully ** will ** be) more accessible to our members, and perhaps a few readers as well.

I'll attempt to run the draft program for the Perigee burns later today.

(th)

Offline

#150 2024-07-25 14:37:06

tahanson43206
Moderator
Registered: 2018-04-27
Posts: 18,452

Re: Spin Launch SpinLaunch Vacuum Launches Centrifuge Launched Mass

Here is an image prepared by GW Johnson to summarize the launch environment for either SpinLaunch or Dr. John Hunter's gas gun.

4B9Ref3.png

(th)

Offline

Board footer

Powered by FluxBB