Skip to content
Permalink
master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"from scipy.optimize import newton\n",
"from scipy.integrate import solve_ivp\n",
"import numpy as np"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Non-Dimensional L1 Point"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [],
"source": [
"m_earth = 5.974E24 # kg\n",
"m_moon = 73.48E21 # kg\n",
"r_em = 384400 # km\n",
"pi_2 = m_moon/(m_earth + m_moon)"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [],
"source": [
"def collinear_lagrange(xstar, pi_2):\n",
" \"\"\"Calculate the resultant of the collinear Lagrange point equation.\n",
" \n",
" This is a function f(xstar, pi_2), where xstar is the nondimensional x coordinate\n",
" and pi_2 is the nondimensional mass ratio. The function should be passed to\n",
" scipy.optimize.newton (or another Newton solver) to find a value for xstar\n",
" that satsifies the equation, for a given value of pi_2.\n",
" \n",
" The solver will try different values of xstar until the return value is equal to zero.\n",
" \"\"\"\n",
" first_term = xstar\n",
" second_term = (1 - pi_2)/np.abs(xstar + pi_2)**3 * (xstar + pi_2)\n",
" third_term = pi_2 / np.abs(xstar - 1 + pi_2)**3 * (xstar - 1 + pi_2)\n",
" return first_term - second_term - third_term"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Earth-Moon L1 point = 321710.307 km\n"
]
}
],
"source": [
"non_dim_L_1 = newton(func=collinear_lagrange, x0=0, args=(pi_2,))\n",
"L_1 = non_dim_L_1*r_em\n",
"print('Earth-Moon L1 point =', round(L_1,3), 'km')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Spheres of Influence"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Earth sphere of influence = 924663.613 km\n",
"Mars sphere of influence = 577134.933 km\n"
]
}
],
"source": [
"m_sun = 1.989E30 # kg\n",
"R_earth = 149.6E6 # km\n",
"r_soi_e = R_earth*((m_earth/m_sun)**(2/5))\n",
"print('Earth sphere of influence =', round(r_soi_e,3),'km')\n",
"\n",
"R_mars = 227.9E6 # km\n",
"m_mars = 641.9E21 # kg\n",
"r_soi_m = R_mars*((m_mars/m_sun)**(2/5))\n",
"print('Mars sphere of influence =', round(r_soi_m,3),'km')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Escape Velocity"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Escape velocity = 908.311 km/s\n"
]
}
],
"source": [
"v_esc = np.sqrt((2*mu_sun)/L_1)\n",
"print('Escape velocity =', round(v_esc,3), 'km/s')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Parabolic Trajectory"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As defined by a parabolic trajectory, $e = 1$. Objects that are very far from the Sun and have nearly zero velocity, but are captured by the Sun and swing around. Therefore, for $e = 1$, $r \\rightarrow \\infty$, and $v \\rightarrow 0$. "
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [],
"source": [
"v_inf = 0\n",
"v_D = v_inf"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Specific Impulse"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Specific impulse is defined as $$I_{\\text{sp}} = \\frac{\\text{thrust}}{\\text{Sea-level weight rate of fuel consumption}}$$\n",
"\n",
"The type of propellant used in the rocket engine will vary the value of the specific impulse. In the Mars Reconnaissance Orbiter, the spacecraft used monopropellant hydrazine which has an $I_{sp}$ value of 230 seconds. On the spacecraft, there were six large thrusters, six medium thrusters, and eight small thrusters. Each large thruster was capable of producing 170 N of thrust [1]. Even using the large thruster, this propellant would not produce the necessary thrust. \n",
"\n",
"A more practical propellant for the rocket engine might be liquid oxygen/liquid hydrogen. Aerojet Rocketdyne has a spacecraft, RL-10C-1, that produces 101.82 kN of thrust and has a specific impulse value of 450 seconds [2][3]. \n",
"\n",
"The cargo ship is equipped with an ion propulsion drive. The ion propulsion drive produces small amounts of thrust. In this specific case, the ion propulsion drive is capable of producing 5 N. The specific impulse for an ion propulsion drive is > 3000 seconds [4]. For this project, it will be assumed that it is exactly equal to 3000 s."
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [],
"source": [
"m_ship = 25000 # kg\n",
"g = 9.81E-3 # km/s\n",
"\n",
"#specific impulse\n",
"isp_ipd = 3000 # s\n",
"isp_re = 450 # s\n",
"\n",
"#thrust\n",
"thrust_ipd = 5.0E-3 # kN\n",
"thrust_re = 100 # kN"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# References"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"[1] https://mars.nasa.gov/mro/mission/spacecraft/parts/propulsion/#:~:text=Mars%20Reconnaissance%20Orbiter%20fed%20pressurized,the%20hydrazine%20propellant%20under%20pressure.\n",
"\n",
"[2] https://www.rocket.com/space/liquid-engines/rl10-engine\n",
"\n",
"[3] https://en.wikipedia.org/wiki/Comparison_of_orbital_rocket_engines\n",
"\n",
"[4] Curtis, Howard D. Orbital Mechanics for Engineering Students, Fourth Edition."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.3"
}
},
"nbformat": 4,
"nbformat_minor": 4
}