Advertisement
Guest User

DoNodeT.txt

a guest
Sep 25th, 2014
300
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.29 KB | None | 0 0
  1. // Known issue: Fails to do any burn if engine is very powerful and maneuver is very tiny.
  2. // Workaround: Use thrust-limiters on powerful engines for small fine-tuned maneuvers.
  3. // Sources: http://forum.kerbalspaceprogram.com/threads/40053-Estimate-the-duration-of-a-burn
  4.  
  5. clearscreen.
  6. print "- - - - - - - - - - - - - - - - - - - -". // line 1
  7. print "Script: DoNodeT.txt". // line 2
  8.  
  9. // Get average ISP of all engines.
  10. // http://wiki.kerbalspaceprogram.com/wiki/Tutorial:Advanced_Rocket_Design
  11. set ispsum to 0.
  12. set maxthrustlimited to 0.
  13. LIST ENGINES in MyEngines.
  14. for engine in MyEngines {
  15. if engine:ISP > 0 {
  16. set ispsum to ispsum + (engine:MAXTHRUST / engine:ISP).
  17. set maxthrustlimited to maxthrustlimited + (engine:MAXTHRUST * (engine:THRUSTLIMIT / 100) ).
  18. }
  19. }
  20. set ispavg to ( maxthrustlimited / ispsum ).
  21. set g0 to 9.82.
  22. set ve to ispavg * g0.
  23. set dv to NEXTNODE:DELTAV:MAG.
  24. set m0 to SHIP:MASS.
  25. set Th to maxthrustlimited.
  26. set e to CONSTANT():E.
  27. set burnlength to (m0 * ve / Th) * (1 - e^(-dv/ve)).
  28.  
  29. print "Total burn time for maneuver: " + ROUND(burnlength,2) + " s". // line 3
  30. print "Steering". // line 4
  31. SAS off.
  32. lock steering to NEXTNODE.
  33.  
  34. print "Waiting for node". // line 5
  35. set rt to NEXTNODE:ETA - (burnlength/2). // remaining time
  36. until rt <= 0 {
  37. set rt to NEXTNODE:ETA - (burnlength/2). // remaining time
  38. //set maxwarp to 0.
  39. if rt < 100000 { set maxwarp to 7. }
  40. if rt < 10000 { set maxwarp to 6. }
  41. if rt < 1000 { set maxwarp to 5. }
  42. if rt < 100 { set maxwarp to 4. }
  43. if rt < 60 { set maxwarp to 3. }
  44. if rt < 50 { set maxwarp to 2. }
  45. if rt < 25 { set maxwarp to 1. }
  46. if rt < 8 { set maxwarp to 0. }
  47. print " Remaining time: " + rt at (0,5). // line 6
  48. print " Warp factor: " + WARP at (0,6). // line 7
  49. if WARP > maxwarp {
  50. set WARP to maxwarp.
  51. }
  52. }
  53. print " ".
  54. print " ".
  55.  
  56.  
  57.  
  58.  
  59. set burntimestart to time:seconds.
  60. until time:seconds >= burntimestart + burnlength {
  61. lock throttle to 1.
  62. }
  63. lock throttle to 0.
  64.  
  65.  
  66.  
  67. unlock all.
  68. print "Stabilizing".
  69. SAS on.
  70.  
  71. print " ".
  72. print "Orbit:".
  73. print " Ap: " + round(SHIP:OBT:APOAPSIS).
  74. print " Pe: " + round(SHIP:OBT:PERIAPSIS).
  75. print "- - - - - - - - - - - - - - - - - - - -".
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement