Você está em: Tópicos em Simulações Físicas > Lançamento Vertical com FreeCad e Python
Nesta simulação vamos utilizar dois objetos muitos simples e fáceis de modelar no FreeCad.
O primeiro é apenas um piso que está fixo na Terra.
Passo a Passo para criar o piso:
Para criar o piso, iremos abrir o FreeCad e pedir para criar um novo arquivo, logo depois selecionamos “Part Design” na janela que fica na barra de ferramentas acima, logo após clicar em Part Design ele irá habilitar uma outra barra de ferramentas abaixo na qual iremos usar o comando “criar um novo esboço” que ira nos dar a opção de escolher o plano em que vamos desenhar, escolheremos o plano xy, iremos desenhar neste plano um retângulo, podemos clicar no comando na barra de ferramentas ou digitar a letra “r” como atalho, habilitado o comando clicamos em dois pontos da tela para criar o retângulo, sem acrescentar medidas por enquanto. Para deixar o retângulo centrado na origem, primeiro centralizaremos ele no eixo y, para isto clicaremos em dois vértices do retângulo na horizontal na mesma linha e depois no eixo y, selecionado então estes três, digite “s” ou vá ate a barra de ferramentas e clique no ícone de “criar uma restrição de simetria” agora repetiremos os mesmos passos para centralizar o retângulo no eixo x. Agora podemos notar que o retângulo sempre ficara centralizado na origem, podemos mexê-lo o quanto quisermos, como ainda não adicionamos nenhuma medida pra ele, ele irá se mover livre tanto na horizontal como na vertical, para inserir medidas a ele iremos clicar em dois vértices de uma mesma linha como fizemos anteriormente porem agora clicaremos na restrição “fixar a distância horizontal entre dois pontos” na barra de ferramentas acima ou apenas clicar em “Shift+H” insira a distancia 100, feito isso repetiremos os mesmos passos mas agora para inserir restrição vertical e adicionar distância, clique no ícone ao lado “fixar a distância vertical entre dois pontos” ou “Shift+V” clique em fechar para finalizar o esboço.
Agora clique em “definir como vista axonométrica” que é um ícone que fica na barra de ferramentas representado por um cubo, ou aperte o número zero do teclado , agora iremos usar o comando “Preencher um esboço selecionado” que também fica na barra de ferramentas do Part design, com essa ferramenta iremos dar uma espessura para o retângulo selecionado, na arvore ao lado digite a espessura desejada, em nosso exemplo colocamos 10 milímetros, ao fim de todos estes passos o nosso modelo ficará assim:
O outro uma esfera de massa nas proximidades da terra.
Passo a Passo para criar a esfera:
Para criar a esfera iremos alterar o ambiente para “Part” na mesma janela onde selecionamos o “Part Design”, na barra de ferramentas que ira abrir usaremos o comando “Criar uma esfera sólida”, ao clicarmos iremos notar que a esfera foi criada, mas que esta sobreposta pelo piso, para colocarmos a esfera em cima do piso, na arvore de tarefas que fica ao lado selecionaremos a esfera, apenas clicando em cima dela, abaixo alternaremos para a aba de dados, em placement, clique na seta para baixo, em “z” coloque a 18mm a esfera se moverá para cima do piso, mude o raio da esfera para 8mm, ao fim destes passo finalizaremos o solido e estaremos prontos para o próximo passo, ao fim o solido ficara conforme a imagem abaixo:
Como estamos próximos a Terra, a força gravitacional será .
Dado uma velocidade inicial , iremos integrar as equações de movimento,
, (1)
. (2)
Considerando uma aproximação de primeira ondem em , podemos aproximar as equações (1) e (2) por,
(3)
(4)
considerando teremos uma aproximação razoável para resolver as equações de Newton para o movimento de uma esfera sem atrito com o ar na presença de um campo gravitacional constante.
Na equação (2), representa a força de interação entre a esfera e a superfície.
Iremos considerar uma força que faz com que a colisão seja inelástica. De forma que ao se choca com o piso a velocidade imediatamente após a colisão está relacionada com a velocidade imediatamente antes da colisão pela equação,
(5).
Essa estratégia faz a esfera quicar, retornando novamente ao movimento até parar. O coeficiente de restituição para colisões parcialmente elásticas será , sendo que
faz com que a energia cinética tenha a máxima dissipação. E uma colisão completamente inelástica
, a energia cinética é completamente conservada sendo classificada como uma colisão completamente elástica. Algumas das possíveis causas da dissipação da energia cinética é na forma de ondas sonoras e eletromagnéticas, calor ou deformação.
O coeficiente de restituição é definido mais precisamente por,
A fins didáticos, e simplificando nosso código adotamos o valor de como pode ser visto na linha 23 do código.
Podemos notar que em nosso programa nas linhas 53 e 54, são comandos para salvar imagens, a cada repetição da função pela variável ‘i+’ é salva uma imagem no diretório FreeCadsimulation, para juntarmos todas essas fotos geradas na pasta e fazer um pequeno vídeo vamos utilizar o comando ‘Avconv’, lembrando que para isso temos que usar o terminal do Linux, é preciso estar instalados os programas avconv, gimp, gifcicle e ffmpeg. Usaremos estes dois comandos abaixo, o primeiro irá juntar as fotos e fazer um vídeo do gráfico, em nosso programa em python pedimos para fazer dois gráficos um na posição z(m) e o outro da velocidade (m/s), já o segundo comando irá fazer um vídeo das fotos do lançamento em si, o que foi executado no FreeCad.
avconv -start_number 1 -i “FigPlot%d.jpg” -r 25 -c:v libx264 -crf 20 -pix_fmt yuv420p grafico.mov
avconv -start_number 1 -i “Lancamentovertical%d.jpg” -r 25 -c:v libx264 -crf 20 -pix_fmt yuv420p lancamento.mov
Para inserir o código e iniciar o movimento, a janela ‘console python’ deve estar habilitada, para isso se o seu programa estiver em português vá na parte superior da interface e clique na aba ( Vistas -> Vistas -> Console Python ) se estiver em inglês ( View -> Panels -> Python Console Menu ), a janela abrirá na parte inferior do programa. Após terminado o lançamento utilize o comando timer.stop() para finalizar a execução.
Ao abrir o FreeCad na área “Console Python” copie e cole o programa acima para iniciar o movimento
Segue o código abaixo:
1 from PyQt4 import QtCore, QtGui
2 import Part
3 from FreeCAD import Base
4 import math as mt
5 import numpy as np
6 import matplotlib.pyplot as plt
7
8 plt.ion()
9 t1 = []
10 z1 = []
11 v1 = []
12
13
14 az=-10.0
15 z=0.0
16 vz=50.0
17 t=0.0
18 i=0
19 def evolucao():
20 global t,az,z,vz,i,t1,z1,v1
21 dt=0.1
22 t+=dt
23 e = 0.7
24 i+=1
25 App.getDocument(“Piso”).Sphere.Placement=App.Placement(App.Vector(0,0,8+z), App.Rotation(App.Vector(0,0,0),0), App.Vector(0,0,0))
26 z=z+vz*dt
27 vz=vz+az*dt
28 if (z<0):
29 vz = -vz * e
30
31 t1= np.insert(t1, len(t1), t)
32 z1= np.insert(z1, len(z1), z)
33 v1= np.insert(v1, len(v1), vz)
34
35 plt.figure(1)
36 plt.subplot(211)
37 plt.plot(t1, z1, ‘bo’)
38 plt.xlabel(‘tempo(s)’)
39 plt.ylabel(‘z(m)’)
40
41 plt.subplot(212)
42 plt.plot(t1, v1, ‘r–‘)
43 plt.xlabel(‘tempo(s)’)
44 plt.ylabel(‘vz(m/s)’)
45 namefig=’/home/coordenacaon/FreCADsimulation/FigPlot’+str(i)+’.jpg’
46 plt.savefig(namefig)
47 plt.show()
48
49 namefile=’/home/coordenacaon/FreCADsimulation/Lancamentovertical’+str(i)+’.jpg’
50 Gui.activeDocument().activeView().saveImage(namefile,978,436,’Current’)
51
52 timer=QtCore.QTimer()
53 timer.timeout.connect(evolucao)
54 timer.start(10)
* Logo após colar este código, você vai notar que a esfera não realizou movimento nenhum, isso acontece porque o arquivo que você criou não está vinculado com este código, para fazer isso vá ate a linha 25, este é o “endereço ” da esfera, apenas ela realiza o movimento. Este endereço pode ser achado dentro do próprio FreeCad, para isso basta clicar na esfera na árvore de tarefas, logo abaixo em modelo, clique nos três pontos na frente de placement, dê apenas ok, agora olhe para o console python lá aparecerá o endereço procurado, copie e cole no código, observe que no endereço em ” … (App.Vector(0,0,8) … ” some “z” no oito ” … (App.Vector(0,0,8+z) … ”