Guest User

Untitled

a guest
Dec 7th, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.79 KB | None | 0 0
  1. print('Simulador da trajetória de uma órbita.')
  2.  
  3. '----------------Condições Iniciais----------------'
  4.  
  5. print('Temos as seguintes condições iniciais:')
  6. print('G = (6.67)*(10**-11) m^3.kg^-1.s^-2')
  7. print('Massa do sol = 1.98*(10**30) kg')
  8. print('Massa da terra = 5.972*(10**24) kg')
  9. print('Posição inicial no eixo x = 1.5*(10**11) m')
  10. print('Posição inicial no eixo y = 0 m')
  11. print('Velocidade inicial no eixo x = 0 m/s')
  12. print('Velocidade inicial no eixo y = 3.6340*(10**4) m/s')
  13. print('Tempo total da contagem = 3.1516*(10**7)s (um ano) ')
  14. print('Delta tempo = 0.001 s')
  15.  
  16.  
  17. '----------------Definindo Condições Iniciais----------------'
  18.  
  19. const_grav = 6.67*(10**-11) #constante gravitacional
  20. massa_sol = 1.98*(10**30) #massa do sol
  21. massa_terra = 5.972*(10**24) #massa da terra
  22. x0 = 1.5*(10**11) #posição inicial no eixo x
  23. y0 = 0 #posição inicial no eixo y
  24. vx0 = 0 #velocidade inicial no eixo x
  25. vy0 = 3.6340*(10**4) #velocidade inicial no eixo y
  26. t = 3.1516*(10**7) #tempo total = tempo de um ano
  27. cont_tempo = 0 #contador de tempo
  28. delta_t = 0.001 #delta t
  29.  
  30.  
  31. '----------------Listas com os valores----------------'
  32.  
  33. tn = [] # lista do tempo contabilizando cada instante
  34. x_coord = [] #lista com os valores da posição em relação ao eixo x
  35. y_coord = [] #lista com os valores da posição em relação ao eixo y
  36. vx_coord = [] # lista da velocidade em relação ao eixo x
  37. vy_coord = [] # lista da velocidade em relação ao eixo y
  38. v_coord = [] # lista da velocidade em módulo
  39. ax_coord = [] #lista da aceleração no eixo x
  40. ay_coord = [] #lista da aceleração no eixo y
  41. a_coord = [] # aceleração em módulo
  42. virial = [] #teorema do virial
  43.  
  44.  
  45. '----------------Loop do tempo----------------'
  46.  
  47. #Enquanto tempo total for maior ou igual ao contador de tempo, teremos o loop.
  48.  
  49. while (t >= cont_tempo):
  50.  
  51. cont_tempo = cont_tempo + delta_t
  52.  
  53. #Usando as equações obtidas através da segunda lei de Newton, podemos calcular os parâmetros
  54.  
  55. ax = (const_grav * massa_sol * x0)/((x0 ** 2 + y0 ** 2) ** 1.5)
  56. ay = (const_grav * massa_sol * y0)/((x0 ** 2 + y0 ** 2) ** 1.5)
  57. a = (ax**2 + ay**2)**0.5
  58.  
  59. vx = vx0 + (ax * delta_t)
  60. vy = vy0 + (ay * delta_t)
  61. v = (vx ** 2 + vy ** 2) ** 0.5
  62.  
  63. x = (ax * (delta_t ** 2)) / 2 + (vx0 * delta_t) + x0
  64. y = (ay * (delta_t ** 2)) / 2 + (vy0 * delta_t) + y0
  65.  
  66. energia_potencial = (- const_grav * massa_sol * massa_terra)/((x ** 2 + y ** 2) ** 0.5)
  67. energia_cinetica = (massa_terra * (v ** 2)) / 2
  68. teorema_virial = energia_potencial / energia_cinetica
  69.  
  70. # Por conta do LOOP, podemos preencher cada uma das listas usando a função .append
  71.  
  72. x_coord.append(x)
  73. y_coord.append(y)
  74. vx_coord.append(vx)
  75. vy_coord.append(vy)
  76. v_coord.append(v)
  77. tn.append(cont_tempo)
  78. ax_coord.append(ax)
  79. ay_coord.append(ay)
  80. a_coord.append(a)
  81. virial.append(teorema_virial)
  82.  
  83. # ----------------Atualizando as variáveis----------------
  84.  
  85. x0 = x
  86. y0 = y
  87. vy0 = vy
  88. vx0 = vx
  89.  
  90. '----------------Dados obtidos----------------'
  91.  
  92. #Criamos uma função que preenche as tabelas com os parâmetros que obtivemos acima
  93.  
  94. def tabela(nome,lista):
  95. arquivo = open(nome + '.txt', 'a')
  96. for i in range(len(lista)):
  97. arquivo.write(str(lista[i]) + 'n')
  98. arquivo.close
  99.  
  100.  
  101. tabela('Lista do tempo', tn)
  102. tabela('Lista da posição do eixo x', x_coord)
  103. tabela('Lista da posição do eixo y', y_coord)
  104. tabela('Lista da velocidade no eixo x', vx_coord)
  105. tabela('Lista da velocidade no eixo y', vy_coord)
  106. tabela('Lista da velocidade em módulo', v_coord)
  107. tabela('Lista da aceleração no eixo x', ax_coord)
  108. tabela('Lista da aceleração no eixo y', ay_coord)
  109. tabela('Lista da aceleração em módulo', a_coord)
  110. tabela('Lista do teorema do virial', virial)
Add Comment
Please, Sign In to add comment