Earth to Jupiter on less than 2 m/s a day, the PyKEP way!

Keithth G

New member
Joined
Nov 20, 2014
Messages
272
Reaction score
0
Points
0
This post presents another optimised trajectory for getting from Earth to Jupiter. The trajectory starts at Earth, drops to Venus, then back to Earth, then out to Mars, then back to Earth and finally a transfer out to Jupiter. The total cost of the transfer is 3,630 m/s from LEO to Jupiter capture. And given that it takes, 3,200 m/s just to escape Earth's gravity - another 250 m/s or so to be captured by Jupiter - the balance (just 200 m/s or so) enables the transfer all the way out to Jupiter (via four ballistic flybys). Transfers from Earth to Jupiter don't really get any cheaper than this.

A 'top down' view of the trajectory is shown below. Distances are in AU, and the orbits of Venus, Earth, Mars and Jupiter are shown.



The optimised trajectory plan is as follows:

Code:
Date of Earth departue:   2023-May-27 23:40:30.246197
Date of Venus encounter:  2023-Oct-21 21:53:11.311513
Date of Earth encounter:  2024-Sep-01 10:02:09.685537
Date of Mars  encounter:  2025-Feb-10 21:50:49.497903
Date of Earth encounter:  2026-Nov-25 20:03:44.812798
Date of Jupiter arrival:  2029-Nov-06 23:55:40.784441

Transfer time from Earth to Venus:    146.93  days
Transfer time from Venus to Earth:    315.51  days
Transfer time from Earth to Mars:     162.49  days
Transfer time from Mars  to Earth:    652.93  days
Transfer time from Earth to Jupiter:  1077.16  days
Total mission duration:               2355.01  days


TransX escape plan - Earth escape
--------------------------------------
MJD:                 60091.9865 
Prograde:             -2498.827 m/s
Outward:               -817.887 m/s
Plane:                -1886.965 m/s
Hyp. excess velocity:  3236.311 m/s
Earth escape burn:     3669.374 m/s


Venus encounter
--------------------------------------
MJD:                 60238.9119 
Approach velocity:     5581.567 m/s
Departure velocity:    5581.567 m/s
Outward angle:          -20.168 deg
Inclination:             24.867 deg
Turning angle:           47.861 deg
Periapsis altitude:    9227.455 km 
dV needed:                0.000 m/s


Earth encounter
--------------------------------------
MJD:                 60554.4182 
Approach velocity:     8724.001 m/s
Departure velocity:    8724.001 m/s
Outward angle:          -52.409 deg
Inclination:            -13.843 deg
Turning angle:           45.313 deg
Periapsis altitude:    1980.691 km 
dV needed for flyby:      0.000 m/s


Mars encounter
--------------------------------------
MJD:                 60716.9103 
Approach velocity:    10035.980 m/s
Departure velocity:   10035.980 m/s
Outward angle:           98.839 deg
Inclination:             -0.985 deg
Turning angle:            9.827 deg
Periapsis altitude:   35867.103 km 
dV needed for flyby:      0.000 m/s


Earth encounter
--------------------------------------
MJD:                 61369.8359 
Approach velocity:    11457.896 m/s
Departure velocity:   11457.896 m/s
Outward angle:           45.576 deg
Inclination:             -9.078 deg
Turning angle:           26.971 deg
Periapsis altitude:    3605.498 km 
dV needed for flyby:      0.000 m/s


Jupiter arrival
--------------------------------------
MJD:                 62446.9970    
Hyp. excess velocity:  5572.611 m/s
Orbit insertion burn    260.791 m/s - (C3 = 0)


Total fuel cost:       3930.166 m/s


This trajectory plan is fly-able in Orbiter (although MCCs are likely to run to a few hundred m/s). It is based on a schedule of Earth to Jupiter transfers posted on this forum by 'dgatsoulis'. Here, PyKEP has been used to 'fill in the blanks' by providing some additional information about the optimised trajectory. It is assumed that LEO is a 300 x 300 km circular orbit

The Python code used to generate this plan is as follows:

Code:
from PyGMO.problem import base
from PyGMO         import algorithm, island, archipelago, topology 

from PyKEP         import planet, epoch, ic2par, fb_vel, lambert_problem, DAY2SEC, AU, MU_SUN
from PyKEP.planet  import jpl_lp

from math          import *
from numpy         import *


earth   = jpl_lp('earth'  )
venus   = jpl_lp('venus'  )
mars    = jpl_lp('mars'   )
jupiter = jpl_lp('jupiter')

muE   =   earth.mu_self
muV   =   venus.mu_self
muM   =    mars.mu_self
muJ   = jupiter.mu_self

radE  =   earth.radius + 300000
radV  =   venus.radius
radM  =    mars.radius
radJ  = jupiter.radius + 300000



t1     = 60094.0 
t2     = 60240.0 
t3     = 60555.0
t4     = 60717.0
t5     = 61370.0
t6     = 62432.0
        
r1, v1 =   earth.eph(epoch(t1, "mjd") )
r2, v2 =   venus.eph(epoch(t2, "mjd") )
r3, v3 =   earth.eph(epoch(t3, "mjd") )
r4, v4 =    mars.eph(epoch(t4, "mjd") )
r5, v5 =   earth.eph(epoch(t5, "mjd") )
r6, v6 = jupiter.eph(epoch(t6, "mjd") )
        
l1     = lambert_problem(r1, r2, (t2 - t1)*DAY2SEC, MU_SUN)
l2     = lambert_problem(r2, r3, (t3 - t2)*DAY2SEC, MU_SUN)
l3     = lambert_problem(r3, r4, (t4 - t3)*DAY2SEC, MU_SUN)
l4     = lambert_problem(r4, r5, (t5 - t4)*DAY2SEC, MU_SUN)
l5     = lambert_problem(r5, r6, (t6 - t5)*DAY2SEC, MU_SUN)

vo1    = array(l1.get_v1()[0]) - v1
vi2    = array(l1.get_v2()[0]) - v2
vo2    = array(l2.get_v1()[0]) - v2
vi3    = array(l2.get_v2()[0]) - v3
vo3    = array(l3.get_v1()[0]) - v3
vi4    = array(l3.get_v2()[0]) - v4
vo4    = array(l4.get_v1()[0]) - v4
vi5    = array(l4.get_v2()[0]) - v5
vo5    = array(l5.get_v1()[0]) - v5
vi6    = array(l5.get_v2()[0]) - v6



from PyGMO.problem import base

class my_problem_min(base):
    """
    Put some descriptive text here
    """

    def __init__(self):
        super(my_problem_min, self).__init__(6)  # a problem in three variables
        self.set_bounds(0.0001, 0.9999)          # place bounds on those variables


    # Defines the objective function
    def _objfun_impl(self, x):  
               
        # calculate the times        
        t1     = 60094.0 + (2*x[0]-1.0)*15   # epoch of Earth departure
        t2     = 60240.0 + (2*x[1]-1.0)*15   # epoch of Venus encounter
        t3     = 60555.0 + (2*x[2]-1.0)*15   # epoch of Earth encounter
        t4     = 60717.0 + (2*x[3]-1.0)*15   # epoch of Mars  encounter
        t5     = 61370.0 + (2*x[4]-1.0)*15   # epoch of Earth encounter
        t6     = 62432.0 + (2*x[5]-1.0)*15   # epoch of Jupiter encounter
        
        # calculate the state vectors of Earth, Venus & Mercury using JPL's Low Precision
        # ephemeris
        r1, v1 =   earth.eph(epoch(t1, "mjd") )
        r2, v2 =   venus.eph(epoch(t2, "mjd") )
        r3, v3 =   earth.eph(epoch(t3, "mjd") )
        r4, v4 =    mars.eph(epoch(t4, "mjd") )
        r5, v5 =   earth.eph(epoch(t5, "mjd") )
        r6, v6 = jupiter.eph(epoch(t6, "mjd") )
        
        # calculate the solutions of the two Lambert transfers
        l1     = lambert_problem(r1, r2, (t2 - t1)*DAY2SEC, MU_SUN)
        l2     = lambert_problem(r2, r3, (t3 - t2)*DAY2SEC, MU_SUN)
        l3     = lambert_problem(r3, r4, (t4 - t3)*DAY2SEC, MU_SUN)
        l4     = lambert_problem(r4, r5, (t5 - t4)*DAY2SEC, MU_SUN)
        l5     = lambert_problem(r5, r6, (t6 - t5)*DAY2SEC, MU_SUN)
        
        # perform the dV calculations
        vo1    = array(l1.get_v1()[0]) - v1
        vi2    = array(l1.get_v2()[0]) - v2
        vo2    = array(l2.get_v1()[0]) - v2        
        vi3    = array(l2.get_v2()[0]) - v3
        vo3    = array(l3.get_v1()[0]) - v3
        vi4    = array(l3.get_v2()[0]) - v4
        vo4    = array(l4.get_v1()[0]) - v4
        vi5    = array(l4.get_v2()[0]) - v5
        vo5    = array(l5.get_v1()[0]) - v5
        vi6    = array(l5.get_v2()[0]) - v6
        
        # sum the total fuel costs
        f      = sqrt(dot(vo1, vo1) + 2 * muE / radE) - sqrt(1 * muE / radE )
        f      = fb_vel(vi2, vo2, venus) + f
        f      = fb_vel(vi3, vo3, earth) + f
        f      = fb_vel(vi4, vo4, mars ) + f
        f      = fb_vel(vi5, vo5, earth) + f
        f      = sqrt(dot(vi6, vi6) + 2 * muJ / radJ) - sqrt(2 * muJ / radJ ) + f
        
        # returb the total fuel cost
        return (f, )

    # Reimplement the virtual method that compares fitnesses - a minimisation problem
    def _compare_fitness_impl(self, f1, f2):
        return f1[0] < f2[0]

    # Add some output to __repr__
    def human_readable_extra(self):
        return "\n\tMinimisation problem - Earth-Venus-Earth-Jupiter transfer"



prob = my_problem_min()
algo = algorithm.de(gen = 1000)

l = list()
for i in range(1):
    archi = archipelago(algo,prob, 32, 10, topology = topology.ring())
    for j in range(3):
        archi.evolve(100)
        print min([isl.population.champion.f[0] for isl in archi])
    tmp = [isl for isl in archi]; tmp.sort(key = lambda x: x.population.champion.f[0]);
    l.append(tmp[0].population.champion)
    print
print "Results: \n"
print [ch.f[0] for ch in l]


l.sort(key = lambda x: x.f[0])
y = array(l[0].x)

# calculate the times        
t1     = 60094.0 + (2*y[0]-1.0)*15   # epoch of Earth departure
t2     = 60240.0 + (2*y[1]-1.0)*15   # epoch of Venus encounter
t3     = 60555.0 + (2*y[2]-1.0)*15   # epoch of Earth encounter
t4     = 60717.0 + (2*y[3]-1.0)*15   # epoch of Mars  encounter
t5     = 61370.0 + (2*y[4]-1.0)*15   # epoch of Earth encounter
t6     = 62432.0 + (2*y[5]-1.0)*15   # epoch of Jupiter encounter
        
# calculate the state vectors of Earth, Venus & Mercury using JPL's Low Precision
# ephemeris
r1, v1 =   earth.eph(epoch(t1, "mjd") )
r2, v2 =   venus.eph(epoch(t2, "mjd") )
r3, v3 =   earth.eph(epoch(t3, "mjd") )
r4, v4 =    mars.eph(epoch(t4, "mjd") )
r5, v5 =   earth.eph(epoch(t5, "mjd") )
r6, v6 = jupiter.eph(epoch(t6, "mjd") )
        
# calculate the solutions of the two Lambert transfers
l1     = lambert_problem(r1, r2, (t2 - t1)*DAY2SEC, MU_SUN)
l2     = lambert_problem(r2, r3, (t3 - t2)*DAY2SEC, MU_SUN)
l3     = lambert_problem(r3, r4, (t4 - t3)*DAY2SEC, MU_SUN)
l4     = lambert_problem(r4, r5, (t5 - t4)*DAY2SEC, MU_SUN)
l5     = lambert_problem(r5, r6, (t6 - t5)*DAY2SEC, MU_SUN)
        
# perform the dV calculations
vo1    = array(l1.get_v1()[0]) - v1
vi2    = array(l1.get_v2()[0]) - v2
vo2    = array(l2.get_v1()[0]) - v2        
vi3    = array(l2.get_v2()[0]) - v3
vo3    = array(l3.get_v1()[0]) - v3
vi4    = array(l3.get_v2()[0]) - v4
vo4    = array(l4.get_v1()[0]) - v4
vi5    = array(l4.get_v2()[0]) - v5
vo5    = array(l5.get_v1()[0]) - v5
vi6    = array(l5.get_v2()[0]) - v6
        
# sum the total fuel costs
f1     = sqrt(dot(vo1, vo1) + 2 * muE / radE) - sqrt(1 * muE / radE )
f2     = fb_vel(vi2, vo2, venus)
f3     = fb_vel(vi3, vo3, earth)
f4     = fb_vel(vi4, vo4, mars )
f5     = fb_vel(vi5, vo5, earth)
f6     = sqrt(dot(vi6, vi6) + 2 * muJ / radJ) - sqrt(2 * muJ / radJ )
                
# calculate the TransX cordinates - Earth departure
fward1 = v1 / linalg.norm(v1)
plane1 = cross(v1, r1)
plane1 = plane1 / linalg.norm(plane1)
oward1 = cross(plane1, fward1)

# calculate the TransX slingshot cordinates - Venus encounter
fward2 = v2 / linalg.norm(v2)
plane2 = cross(v2, r2)
plane2 = plane2 / linalg.norm(plane2)
oward2 = cross(plane2, fward2)

vx2    = dot(fward2, vo2)
vy2    = dot(oward2, vo2)
vz2    = dot(plane2, vo2)

# calculate the TransX slingshot cordinates - Earth encounter
fward3 = v3 / linalg.norm(v3)
plane3 = cross(v3, r3)
plane3 = plane3 / linalg.norm(plane3)
oward3 = cross(plane3, fward3)

vx3    = dot(fward3, vo3)
vy3    = dot(oward3, vo3)
vz3    = dot(plane3, vo3)

# calculate the TransX slingshot cordinates - Mars encounter
fward4 = v4 / linalg.norm(v4)
plane4 = cross(v4, r4)
plane4 = plane4 / linalg.norm(plane4)
oward4 = cross(plane4, fward4)

vx4    = dot(fward4, vo4)
vy4    = dot(oward4, vo4)
vz4    = dot(plane4, vo4)

# calculate the TransX slingshot cordinates - Jupiter arrival
fward5 = v5 / linalg.norm(v5)
plane5 = cross(v5, r5)
plane5 = plane5 / linalg.norm(plane5)
oward5 = cross(plane5, fward5)

vx5    = dot(fward5, vo5)
vy5    = dot(oward5, vo5)
vz5    = dot(plane5, vo5)

# print out the results
print "Date of Earth departue:  ", epoch(t1, "mjd")
print "Date of Venus encounter: ", epoch(t2, "mjd")
print "Date of Earth encounter: ", epoch(t3, "mjd")
print "Date of Mars  encounter: ", epoch(t4, "mjd")
print "Date of Earth encounter: ", epoch(t5, "mjd")
print "Date of Jupiter arrival: ", epoch(t6, "mjd")
print
print "Transfer time from Earth to Venus:   ", round(t2 - t1, 2), " days"
print "Transfer time from Venus to Earth:   ", round(t3 - t2, 2), " days"
print "Transfer time from Earth to Mars:    ", round(t4 - t3, 2), " days"
print "Transfer time from Mars  to Earth:   ", round(t5 - t4, 2), " days"
print "Transfer time from Earth to Jupiter: ", round(t6 - t5, 2), " days"
print "Total mission duration:              ", round(t6 - t1, 2), " days"
print
print
print "TransX escape plan - Earth escape"
print "--------------------------------------"
print("MJD:                 %10.4f "    % round(epoch(t1, "mjd").mjd, 4))
print("Prograde:            %10.3f m/s" % round(dot(fward1, vo1), 3))
print("Outward:             %10.3f m/s" % round(dot(oward1, vo1), 3))
print("Plane:               %10.3f m/s" % round(dot(plane1, vo1), 3))
print("Hyp. excess velocity:%10.3f m/s" % round(sqrt(dot(vo1, vo1)), 3))
print("Earth escape burn:   %10.3f m/s" % round(f1, 3))
print
print 
print "Venus encounter"
print "--------------------------------------"
print("MJD:                 %10.4f "    % round(epoch(t2, "mjd").mjd, 4))
print("Approach velocity:   %10.3f m/s" % round(sqrt(dot(vi2,vi2)), 3))
print("Departure velocity:  %10.3f m/s" % round(sqrt(dot(vo2,vo2)), 3)) 
print("Outward angle:       %10.3f deg" % round(180*atan2(vy2, vx2) / pi, 3)) 
print("Inclination:         %10.3f deg" % round(180*atan2(vz2, sqrt(vx2*vx2+vy2*vy2)) / pi, 3)) 
ta  = acos(dot(vi2, vo2)/sqrt(dot(vi2,vi2))/sqrt(dot(vo2,vo2)))
print("Turning angle:       %10.3f deg" % round(ta*180/pi, 3))
alt = (muV/dot(vi2,vi2)*(1/sin(ta/2)-1) - venus.radius)/1000
print("Periapsis altitude:  %10.3f km " % round(alt, 3))
print("dV needed:           %10.3f m/s" % round(f2, 3))
print
print 
print "Earth encounter"
print "--------------------------------------"
print("MJD:                 %10.4f "    % round(epoch(t3, "mjd").mjd, 4))
print("Approach velocity:   %10.3f m/s" % round(sqrt(dot(vi3,vi3)), 3))
print("Departure velocity:  %10.3f m/s" % round(sqrt(dot(vo3,vo3)), 3))  
print("Outward angle:       %10.3f deg" % round(180*atan2(vy3, vx3) / pi, 3)) 
print("Inclination:         %10.3f deg" % round(180*atan2(vz3, sqrt(vx3*vx3+vy3*vy3)) / pi, 3)) 
ta  = acos(dot(vi3, vo3)/sqrt(dot(vi3,vi3))/sqrt(dot(vo3,vo3)))
print("Turning angle:       %10.3f deg" % round(ta*180/pi, 3))
alt = (muE/dot(vi3,vi3)*(1/sin(ta/2)-1) - earth.radius)/1000
print("Periapsis altitude:  %10.3f km " % round(alt, 3))
print("dV needed for flyby: %10.3f m/s" % round(f3, 3))
print
print 
print "Mars encounter"
print "--------------------------------------"
print("MJD:                 %10.4f "    % round(epoch(t4, "mjd").mjd, 4))
print("Approach velocity:   %10.3f m/s" % round(sqrt(dot(vi4,vi4)), 3))
print("Departure velocity:  %10.3f m/s" % round(sqrt(dot(vo4,vo4)), 3))  
print("Outward angle:       %10.3f deg" % round(180*atan2(vy4, vx4) / pi, 3)) 
print("Inclination:         %10.3f deg" % round(180*atan2(vz4, sqrt(vx4*vx4+vy4*vy4)) / pi, 3)) 
ta  = acos(dot(vi4, vo4)/sqrt(dot(vi4,vi4))/sqrt(dot(vo4,vo4)))
print("Turning angle:       %10.3f deg" % round(ta*180/pi, 3))
alt = (muE/dot(vi4,vi4)*(1/sin(ta/2)-1) - earth.radius)/1000
print("Periapsis altitude:  %10.3f km " % round(alt, 3))
print("dV needed for flyby: %10.3f m/s" % round(f4, 3))
print
print 
print "Earth encounter"
print "--------------------------------------"
print("MJD:                 %10.4f "    % round(epoch(t5, "mjd").mjd, 4))
print("Approach velocity:   %10.3f m/s" % round(sqrt(dot(vi5,vi5)), 3))
print("Departure velocity:  %10.3f m/s" % round(sqrt(dot(vo5,vo5)), 3))  
print("Outward angle:       %10.3f deg" % round(180*atan2(vy5, vx5) / pi, 3)) 
print("Inclination:         %10.3f deg" % round(180*atan2(vz5, sqrt(vx5*vx5+vy5*vy5)) / pi, 3)) 
ta  = acos(dot(vi5, vo5)/sqrt(dot(vi5,vi5))/sqrt(dot(vo5,vo5)))
print("Turning angle:       %10.3f deg" % round(ta*180/pi, 3))
alt = (muE/dot(vi5,vi5)*(1/sin(ta/2)-1) - earth.radius)/1000
print("Periapsis altitude:  %10.3f km " % round(alt, 3))
print("dV needed for flyby: %10.3f m/s" % round(f5, 3))
print
print 
print "Jupiter arrival"
print "--------------------------------------"
print("MJD:                 %10.4f    " % round(epoch(t6, "mjd").mjd, 4))
print("Hyp. excess velocity:%10.3f m/s" % round(sqrt(dot(vi6, vi6)), 3))
print("Orbit insertion burn %10.3f m/s - C3 = 0" % round(f6, 3))
print
print
 
Last edited:

Loru

Retired Staff Member
Retired Staff
Addon Developer
Donator
Joined
Sep 30, 2008
Messages
3,731
Reaction score
6
Points
36
Location
Warsaw
Ok. Now you need to change your nick to Rich Purnell
 

Dantassii

HUMONGOUS IMS shipbuilder
Joined
Jul 14, 2012
Messages
508
Reaction score
20
Points
33
I wonder if anyone can do a 100 km Lunar Orbit to 100 km Pluto Orbit mission in 100 days with less than 1 Mm/s of delta V.....

Departure date anytime in the year 2065.

Dantassii
HUMONGOUS IMS shipbuilder
 

Keithth G

New member
Joined
Nov 20, 2014
Messages
272
Reaction score
0
Points
0
I wonder if anyone can do a 100 km Lunar Orbit to 100 km Pluto Orbit mission in 100 days with less than 1 Mm/s of delta V.....

Departure date anytime in the year 2065.

OK, I'll bite.

The short answer to this question is yes, but based upon some back of the envelope computations, it is only just feasible to do this if the following conditions are satisfied:

1. You attempt the transfer when Pluto is at perihelion (29.6 AU); and when Earth is on the same side as the Sun - so distance between the Earth and Pluto is at a minimum ~ 28.6 AU.

2. You accelerate towards Pluto at 0.60g for about 23 hours continuously - thereby accelerating your craft to 500,000 m/s during which time you will travel approximately 0.138 AU.

3. You then coasts for 98.1 days during which time your spacecraft will travel approximately 28.3 AU.

4. You decelerates the craft at 0.60g for a further 23 hours reducing your speed to match Pluto's orbital speed.

If Pluto is not at or near perihelion, then it isn't possible to get to Pluto in less than 100 days and for less than 1 million m/s.
 
Last edited:

Dantassii

HUMONGOUS IMS shipbuilder
Joined
Jul 14, 2012
Messages
508
Reaction score
20
Points
33
OK, I'll bite.

The short answer to this question is yes, but based upon some back of the envelope computations, it is only just feasible to do this if the following conditions are satisfied:

1. You attempt the transfer when Pluto is at perihelion (29.6 AU); and when Earth is on the same side as the Sun - so the distance between the Earth and Pluto is at a minimum ~ 28.6 AU.

2. You accelerate towards Pluto at 0.60g for about 23 hours continuously - thereby accelerating to slightly less than 500,000 m/s during which time you travel approximately 0.138 AU.

3. You then coast for 98.1 days during which time you travel approximately 28.3 AU.

4. You decelerate at 0.60g for a further 23 hours reducing your speed to match Pluto's orbital speed and orbit insertion.

If Pluto is not at or near perihelion, then it isn't possible to get to Pluto in less than 100 days and for less than 1 million m/s.

That's what I kind of thought. Thanks for the back of the envelope calculation! :)

I've done the preliminary TransX calculations for the Trans Pluto Injection burn for my SSTV-002 mission and came up with a deltaV requirement of about 350,000 m/s. This will take a multi-day burn at around 1 G to perform. I haven't done the arrival burn calculation yet, but as the trip is going up-hill to Pluto, I don't expect it to be much worse than that.

The big problem is the down-hill return from Pluto to Earth in 100 days. The Trans Earth Injection burn at Pluto is probably not that bad due to Pluto's low gravity, however, after about 80 days of coasting, the Earth-Moon System Injection Burn (burn that puts the SSTV in a highly elliptical orbit around the Earth with a Lunar intercept 1 or more orbits later) is probably going to use up quite a bit of the 27,000,000 m/s deltaV budget that the SSTV-002 has on board.

The whole concept of the SSTV (Solar System Transport Vehicle) system is that it can go from any planet in the solar system to any other planet in the solar system in 100 days or less carrying ~40 humans and 17.5 XR5 cargo bays worth of standardized XR5 cargo pallets on any date of the year no matter what the alignment of the planets is. SSTV-001 and 002 are currently designed for Earth orbit or beyond. I don't know if it has enough cooling capacity for Mercury or Venus. Going to have to test that some day I suppose.

Dantassii
HUMONGOUS IMS shipbuilder
 

Keithth G

New member
Joined
Nov 20, 2014
Messages
272
Reaction score
0
Points
0
I've done the preliminary TransX calculations for the Trans Pluto Injection burn for my SSTV-002 mission and came up with a deltaV requirement of about 350,000 m/s. This will take a multi-day burn at around 1 G to perform

Not sure I understand this. 1 G = 10 ms^-2. So, it takes 35,000 seconds to accelerate to 350,000 m/s. Which works out to 9hrs 45 mins.


The big problem is the down-hill return from Pluto to Earth in 100 days.

My back-of-the-envelope calculations suggest that the increase in speed falling back to Earth is a mere 1,600 m/s - fairly trivial in comparison with the mean 100 day Earth-Pluto transit speed of around 500,000 m/s.
 
Last edited:

Dantassii

HUMONGOUS IMS shipbuilder
Joined
Jul 14, 2012
Messages
508
Reaction score
20
Points
33
Not sure I understand this. 1 G = 10 ms^-2. So, it takes 35,000 seconds to accelerate to 350,000 m/s. Which works out to 9hrs 45 mins.




My back-of-the-envelope calculations suggest that the increase in speed falling back to Earth is a mere 1,600 m/s (from an initial ex-Pluto speed of around 500,00 m/s. This increase in speed is fairly trivial in comparison with the ex-Pluto speed. (Because mean speeds are so high, the Sun's gravity well is largely immaterial to the calculations.)

---------- Post added at 01:26 PM ---------- Previous post was at 12:24 PM ----------

I've spent a bit more time doing these calculations. This is what I calculate assuming very rapid acceleration:

During Earth escape, the spacecraft needs to be accelerated to 483.6 km/s. Taking into account the Earth's orbital speed of 29.78 km/s, this means that the spacecraft will have a heliocentric speed of 513.4 km/s. By the time the craft has got out to Pluto's perihelion radius, its heliocentric speed will have fallen slightly to 511.7 km/s. Total dV cost of acceleration and deceleration will be 995.3 km/s - not including the cost of escape from LEO and Pluto orbit insertion. The hyperbolic turning angle on this trajectory is 0.193 degrees - i.e., the trajectory is more or less a straight line. One needs to depart when the angular separation between the Earth and where Pluto will be 100 days in the future is 88.25 degrees. Based on the need for Pluto to be very close to its perihelion; and this constraint on the angular separation of Pluto and the Earth at Earth departure, this greatly restricts the number of possible launch dates.

The return journey from Pluto back to Earth is largely a time reversal of the outgoing journey. One leaves Pluto with a heliocentric speed of 511.7 km/s; by the time one has arrived at Earth, heliocentric speeds have increased to 513.4 km/s; and Earth approach speeds will be 483.6 km/s.

Overall, and even assuming very fast acceleration and deceleration, beating the 1 Mm/s target is a marginal affair. In practice, with realistic accelerations < 3.0 g, it probably can't be done.

Actually, I figured 5 days because the burn wouldn't be done all at once, but in several installments with pauses in between. I think I was also figuring on a max acceleration of a fraction of a G since the spacecraft is really not orientated in such a way that a long (even 9 hours) burn at 1G in the 'forward' direction would be comfortable for the crew. If I kept the acceleration down to 0.1 G (and 90 hours burn) then the crew could use the ship's facilities w/out much effort, especially if there are pauses in the burn of an hour or so every 8 hours.

The mission I'm flying in 2065 assumes Pluto is in its orbit. Not at perihelion, but actually about a third of an orbit away from it (perihelion was back in the 1980's I think). I'm 'limited' :lol: to 27,000,000 m/s of DeltaV, but I was just curious to see if it was possible with 1/27th of that.

Another thing is the mission is leaving a 100 km lunar orbit and falling towards the Earth where it will do a fly by on its way to Pluto. This would make the deltaV a little less (maybe 2-4 minutes less burn time?) at Earth departure, but as you noted, the speed of this trajectory is so different than normal Earth orbital speeds that using the Earth's gravity is a minor perturbation. This sling around the Earth (while under thrust none the less) will complicate the calculations using TransX. This is another reason to perform the burn at low G over a long period (well, relatively long).

As a side note, the SSTV-001 fully loaded was capable of 5G's acceleration. I haven't tested out the SSTV-002 design fully loaded, but I'm guessing it also has about 5G's of acceleration available.

Thanks for the envelope calculations!:tiphat:

Dantassii
HUMONGOUS IMS shipbuilder
 

RGClark

Mathematician
Joined
Jan 27, 2010
Messages
1,635
Reaction score
1
Points
36
Location
Philadelphia
Website
exoscientist.blogspot.com
This post presents another optimised trajectory for getting from Earth to Jupiter. The trajectory starts at Earth, drops to Venus, then back to Earth, then out to Mars, then back to Earth and finally a transfer out to Jupiter. The total cost of the transfer is 3,630 m/s from LEO to Jupiter capture. And given that it takes, 3,200 m/s just to escape Earth's gravity - another 250 m/s or so to be captured by Jupiter - the balance (just 200 m/s or so) enables the transfer all the way out to Jupiter (via four ballistic flybys). Transfers from Earth to Jupiter don't really get any cheaper than this.

A 'top down' view of the trajectory is shown below. Distances are in AU, and the orbits of Venus, Earth, Mars and Jupiter are shown.



The optimised trajectory plan is as follows:

Code:
Date of Earth departue:   2023-May-27 23:40:30.246197
Date of Venus encounter:  2023-Oct-21 21:53:11.311513
Date of Earth encounter:  2024-Sep-01 10:02:09.685537
Date of Mars  encounter:  2025-Feb-10 21:50:49.497903
Date of Earth encounter:  2026-Nov-25 20:03:44.812798
Date of Jupiter arrival:  2029-Nov-06 23:55:40.784441

Transfer time from Earth to Venus:    146.93  days
Transfer time from Venus to Earth:    315.51  days
Transfer time from Earth to Mars:     162.49  days
Transfer time from Mars  to Earth:    652.93  days
Transfer time from Earth to Jupiter:  1077.16  days
Total mission duration:               2355.01  days
...
[/quote]

 Thanks for that. Such a small required delta-v might make it possible to do a sample return mission from Europa at a much smaller size.
 Do the planets have to be aligned for this to work?
 
  Bob Clark
 
Top