Circular Hohemann dV
by mLuby
HTML
<body>
<h1>Circular Hohemann</h1>
<h2>initial r (in km above earth)</h2>
<input id="r_initial" type="text" value="300" />
<button id="leo">LEO</button>
<h2>final r (in km above earth)</h2>
<input id="r_final" type="text" value="35785.9" />
<button id="geosync">Geosync</button>
<br />
<button id="calculate">calculate delta V</button>
<label id="delta_v">?</label>
</body>
JavaScript
$(document).ready(function(){
$("#leo").click(function(){$("#r_initial").val(340);});
$("#geosync").click(function(){$("#r_final").val(35785.9);});
$("#calculate").click(function(){
// i=initial t=transfer p=periapsis a=apoapsis f=final
var g = 6.67e-11;
var m = 5.97e24;
var r_earth = 6.3781e6;
var mu = g*m;
var r_i = parseFloat($("#r_initial").val())*1e3+r_earth;
var r_f = parseFloat($("#r_final").val())*1e3+r_earth;
var a_i = (r_i+r_i)/2;
var v_i = Math.sqrt(mu*(2/r_i-1/a_i));
console.log("v_i="+v_i);
var a_t = (r_f+r_i)/2;
var v_tp = Math.sqrt(mu*(2/r_i-1/a_t));
var dVtp = v_tp-v_i; //always use final periapsis
console.log("dV1="+dVtp);
var v_ta = Math.sqrt(mu*(2/r_f-1/a_t));
var a_f = (r_f+r_f)/2;
var v_f = Math.sqrt(mu*(2/r_f-1/a_f));
var dVta = v_f-v_ta; //always use final periapsis
console.log("dV2="+dVta);
console.log("total dV="+(dVtp+dVta))
$("#delta_v").text(Math.round(dVtp+dVta,0)+" m/s");
v_escape = Math.sqrt(2*mu/r_f);
dV_escape = v_escape - v_f;
console.log("dV_escape="+dV_escape);
dV_to_mars = 3e3;
dV_escape_to_mars = Math.sqrt(dV_escape*dV_escape + dV_to_mars*dV_to_mars);
console.log("dV_escape_to_mars="+dV_escape_to_mars);
});
});