Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- print('Simulador da trajetória de uma órbita.')
- '----------------Condições Iniciais----------------'
- print('Temos as seguintes condições iniciais:')
- print('G = (6.67)*(10**-11) m^3.kg^-1.s^-2')
- print('Massa do sol = 1.98*(10**30) kg')
- print('Massa da terra = 5.972*(10**24) kg')
- print('Posição inicial no eixo x = 1.5*(10**11) m')
- print('Posição inicial no eixo y = 0 m')
- print('Velocidade inicial no eixo x = 0 m/s')
- print('Velocidade inicial no eixo y = 3.6340*(10**4) m/s')
- print('Tempo total da contagem = 3.1516*(10**7)s (um ano) ')
- print('Delta tempo = 0.001 s')
- '----------------Definindo Condições Iniciais----------------'
- const_grav = 6.67*(10**-11) #constante gravitacional
- massa_sol = 1.98*(10**30) #massa do sol
- massa_terra = 5.972*(10**24) #massa da terra
- x0 = 1.5*(10**11) #posição inicial no eixo x
- y0 = 0 #posição inicial no eixo y
- vx0 = 0 #velocidade inicial no eixo x
- vy0 = 3.6340*(10**4) #velocidade inicial no eixo y
- t = 3.1516*(10**7) #tempo total = tempo de um ano
- cont_tempo = 0 #contador de tempo
- delta_t = 0.001 #delta t
- '----------------Listas com os valores----------------'
- tn = [] # lista do tempo contabilizando cada instante
- x_coord = [] #lista com os valores da posição em relação ao eixo x
- y_coord = [] #lista com os valores da posição em relação ao eixo y
- vx_coord = [] # lista da velocidade em relação ao eixo x
- vy_coord = [] # lista da velocidade em relação ao eixo y
- v_coord = [] # lista da velocidade em módulo
- ax_coord = [] #lista da aceleração no eixo x
- ay_coord = [] #lista da aceleração no eixo y
- a_coord = [] # aceleração em módulo
- virial = [] #teorema do virial
- '----------------Loop do tempo----------------'
- #Enquanto tempo total for maior ou igual ao contador de tempo, teremos o loop.
- while (t >= cont_tempo):
- cont_tempo = cont_tempo + delta_t
- #Usando as equações obtidas através da segunda lei de Newton, podemos calcular os parâmetros
- ax = (const_grav * massa_sol * x0)/((x0 ** 2 + y0 ** 2) ** 1.5)
- ay = (const_grav * massa_sol * y0)/((x0 ** 2 + y0 ** 2) ** 1.5)
- a = (ax**2 + ay**2)**0.5
- vx = vx0 + (ax * delta_t)
- vy = vy0 + (ay * delta_t)
- v = (vx ** 2 + vy ** 2) ** 0.5
- x = (ax * (delta_t ** 2)) / 2 + (vx0 * delta_t) + x0
- y = (ay * (delta_t ** 2)) / 2 + (vy0 * delta_t) + y0
- energia_potencial = (- const_grav * massa_sol * massa_terra)/((x ** 2 + y ** 2) ** 0.5)
- energia_cinetica = (massa_terra * (v ** 2)) / 2
- teorema_virial = energia_potencial / energia_cinetica
- # Por conta do LOOP, podemos preencher cada uma das listas usando a função .append
- x_coord.append(x)
- y_coord.append(y)
- vx_coord.append(vx)
- vy_coord.append(vy)
- v_coord.append(v)
- tn.append(cont_tempo)
- ax_coord.append(ax)
- ay_coord.append(ay)
- a_coord.append(a)
- virial.append(teorema_virial)
- # ----------------Atualizando as variáveis----------------
- x0 = x
- y0 = y
- vy0 = vy
- vx0 = vx
- '----------------Dados obtidos----------------'
- #Criamos uma função que preenche as tabelas com os parâmetros que obtivemos acima
- def tabela(nome,lista):
- arquivo = open(nome + '.txt', 'a')
- for i in range(len(lista)):
- arquivo.write(str(lista[i]) + 'n')
- arquivo.close
- tabela('Lista do tempo', tn)
- tabela('Lista da posição do eixo x', x_coord)
- tabela('Lista da posição do eixo y', y_coord)
- tabela('Lista da velocidade no eixo x', vx_coord)
- tabela('Lista da velocidade no eixo y', vy_coord)
- tabela('Lista da velocidade em módulo', v_coord)
- tabela('Lista da aceleração no eixo x', ax_coord)
- tabela('Lista da aceleração no eixo y', ay_coord)
- tabela('Lista da aceleração em módulo', a_coord)
- tabela('Lista do teorema do virial', virial)
Add Comment
Please, Sign In to add comment