Para criar simulações específicas por meio da configuração de parâmetros, construa um arquivo .txt seguindo as orientações a seguir.
Utilize a opção (20) do menu inicial e, em seguida, a opção (2) para que o software leia os parâmetros presentes no arquivo .txt.
Para gravar um arquivo de modelo, utilize a opção (20) e depois (3). Em seguida, altere o modelo para criar a simulação desejada.
I) Instruções para criar o arquivo "Parameters.txt":
Há duas opções para criar o arquivo de parâmetros:
1ª) Construir um arquivo "Parameters.txt" para programar os parâmetros da simulação. Você pode criar esse arquivo seguindo as instruções abaixo.
2ª) Criar e salvar automaticamente um "Parameters.txt" padrão, pronto para a simulação "Three balls. (default)". Use a opção (3) do menu anterior. Edite esse arquivo e altere os valores das variáveis para criar a sua simulação personalizada.
----
Use qualquer editor de texto, mas salve sempre como texto simples “.txt”. Você pode escolher outro nome para o arquivo e criar arquivos com nomes diferentes para cada simulação que fizer.
Depois que o arquivo for criado, carregue-o selecionando a opção (1) do menu anterior para executar suas simulações específicas.
----
O arquivo deve conter todas as variáveis (total de 40). Cada variável deve ficar em uma única linha no formato [a variável, um ou mais espaços e o valor], conforme o modelo:
VARIABLE valor
Exemplo:
NBALLS 2
Significa que estamos definindo o parâmetro "NBALLS", o número de bolas na simulação, com o valor “2”.
Observação: o número máximo de bolas dependerá da capacidade do seu computador, mas, internamente, é limitado ao tamanho do tipo inteiro (32767). Não testamos nem programamos para essas condições extremas.
Exemplo:
BALL_MASS 1.0
Significa que estamos definindo o parâmetro "BALL_MASS", que é a massa das bolas na simulação, com o valor “1.0”.
A seguir, um exemplo completo de todos os parâmetros com a configuração para inicializar a simulação "Three balls. (default)" (opção 1 do menu):
(Início do arquivo)
GAS_MODE 0
NBALLS 3
BALL_RADIUS 20
BALL_SPEED 60
BALL_MASS 0.1
BALL_GRAVITY 0
BALL_G 0
PUSH_PULL 1
NEGATIVE_FORCE 0
COEF_RESTITUTION 1.0
IS_TESTING 0
IS_INFO_SIMULATION 0
INTER_PERIOD 7.0
BALL0_SPEED 0.0
BALL0_VEL_ANGLE 90
BALL0_X 0
BALL0_Y 0
BALL0_RADIUS 12
BALL0_MASS 1e-6
BALL0_TIME 0
BALL0_DELTA_SPEED 0.0
BALL0_DELTA_ANGLE 0
BALL1_SPEED 0
BALL1_VEL_ANGLE 0
BALL1_X 1000
BALL1_Y 1000
BALL1_RADIUS 200
BALL1_MASS 0.0
PISTON_MASS 10
PISTON_GRAVITY 0.0
BOTTOM_TEMP_MIN 0.0
BOTTOM_TEMP_MAX 100.0
BACKGROUND 1
ECHOES 0
SCREEN_WIDTH 480
PERCENT_WIDTH 0.50
SCREEN_HEIGHT 480
PERCENT_HEIGHT 0.80
WALL_WIDTH 20
ZOOM_FACTOR 1.0
(Fim do arquivo)
Não escreva “(Início do arquivo)” e “(Fim do arquivo)”. Escreva apenas os nomes e valores de todas as 40 variáveis e algumas linhas em branco entre elas.
O arquivo possui algumas linhas em branco entre grupos de parâmetros relacionados.
Essas linhas são opcionais. Você pode fazer o arquivo sem elas ou inserir outras para deixar os blocos mais claros.
Dica: 1) Selecione toda a área acima com o mouse. 2) Clique com o botão direito e “Copiar”. 3) Vá ao editor de texto e escolha “Colar”. O arquivo será corretamente entendido mesmo que apareçam espaços antes de cada variável. 4) Salve o arquivo no formato “.txt”.
----
Na seção a seguir, vamos explicar cada grupo e variável.
O primeiro grupo é:
GAS_MODE 0
NBALLS 3
BALL_RADIUS 20
BALL_SPEED 60
BALL_MASS 0.1
BALL_GRAVITY 0
BALL_G 0
PUSH_PULL 1
NEGATIVE_FORCE 0
COEF_RESTITUTION 1.0
Ele contém o modo da simulação (GAS_MODE x), o número de bolas (NBALLS x), o raio das bolas (BALL_RADIUS x), a velocidade inicial das bolas (BALL_SPEED x), a massa de cada bola (BALL_MASS x.x), a gravidade que atuará nas bolas (BALL_GRAVITY x), a constante gravitacional em caso de simulações gravitacionais (BALL_G x), o modo do algoritmo de colisão (PUSH_PULL x) e o coeficiente de restituição para simulações parcialmente inelásticas (COEF_RESTITUTION x.x). O PUSH_PULL é uma configuração interna no algoritmo (você pode testar para ver as diferenças), que pode ser “0” ou “1”; o padrão é “1”.
O NEGATIVE_FORCE ativa uma força negativa entre duas bolas que estejam colidindo durante simulações gravitacionais. Se “0” (padrão), não há forças negativas.
O próximo grupo tem três blocos e começa com IS_TESTING:
IS_TESTING 0
IS_INFO_SIMULATION 0
INTER_PERIOD 7.0
BALL0_SPEED 0.0
BALL0_VEL_ANGLE 90
BALL0_X 0
BALL0_Y 0
BALL0_RADIUS 12
BALL0_MASS 1e-6
BALL0_TIME 0
BALL0_DELTA_SPEED 0.0
BALL0_DELTA_ANGLE 0
BALL1_SPEED 0
BALL1_VEL_ANGLE 0
BALL1_X 1000
BALL1_Y 1000
BALL1_RADIUS 200
BALL1_MASS 0.0
Quando estiver “IS_TESTING 1”, a simulação lerá os parâmetros relacionados às bolas 0 e 1 (as duas primeiras). Os parâmetros que começam em BALL0_SPEED e terminam em BALL1_MASS controlam as duas primeiras bolas (bola 0 e bola 1). Eles controlam suas posições, tamanhos, massas e velocidade inicial (módulo e ângulo). Isso é útil para realizar testes e simular o lançamento de um satélite.
No caso da bola 0, também é possível controlar a sua “segunda velocidade”, ou “delta speed”, que é uma velocidade adicionada em um instante especificado para alterar sua trajetória, usando BALL0_TIME (o instante), BALL0_DELTA_SPEED (a velocidade adicionada) e BALL0_DELTA_ANGLE (o ângulo dessa velocidade).
No caso da simulação "Three balls. (default)", IS_TESTING está em “0”, então podemos ignorar esses parâmetros. Mas há outros casos em que essa opção pode ser utilizada. Veja os detalhes, com exemplo, do “Satellite launching” que explicamos abaixo.
IS_INFO_SIMULATION ativa a simulação de propagação de informação. A bola que possui a informação começa em vermelho, permanece nessa fase e vai propagá-la. Quando colide com outra bola, essa outra bola fica vermelha. Ao fim dessa fase, a bola fica verde. INTER_PERIOD regula a duração dessa fase.
Voltando à explicação: após esses três blocos, o próximo grupo é:
PISTON_MASS 10
PISTON_GRAVITY 0.0
Temos a massa do pistão (PISTON_MASS x) e a gravidade que atuará sobre o pistão (PISTON_GRAVITY x.x).
O próximo grupo é:
BOTTOM_TEMP_MIN 0.0
BOTTOM_TEMP_MAX 100.0
Há uma simulação de injeção de “energia” (uma aproximação) que pode atuar a partir da base. Ela controla quanto de energia pode ser inserido usando as teclas → e ←.
O grupo final é:
BACKGROUND 1
ECHOES 0
SCREEN_WIDTH 480
PERCENT_WIDTH 0.50
SCREEN_HEIGHT 480
PERCENT_HEIGHT 0.80
WALL_WIDTH 20
ZOOM_FACTOR 1.0
Ele mostra as opções de renderização, como o tamanho da área de desenho em pontos/pixels (SCREEN_WIDTH, SCREEN_HEIGHT) e a cor (BACKGROUND), que possui opções ‘0’ e ‘1’. PERCENT_WIDTH é a quantidade de espaço que o cilindro utiliza, assim como PERCENT_HEIGHT. ZOOM_FACTOR cria um efeito de zoom, permitindo escolher uma área grande e aplicar um fator de zoom menor para caber na tela.
ECHOES regula o número de ecos no “efeito de eco” das simulações. Se “0” (padrão), não haverá efeito.
----
II) Simulação elementar de “Satellite launching” (lançamento de satélite):
Como desafio, você pode encontrar os parâmetros para um lançamento elementar de satélite. Será preciso definir NBALLS 2 e IS_TESTING 1 para programar as duas primeiras bolas. Uma será o planeta e a outra, o satélite.
Você precisará definir os tamanhos do satélite (BALL0_RADIUS) e do planeta (BALL1_RADIUS), suas massas (BALL1_MASS, BALL0_MASS) e suas posições (BALL0_X, BALL0_Y) e (BALL1_X, BALL1_Y).
Também será necessário definir BALL0_SPEED (a velocidade de lançamento), BALL0_VEL_ANGLE (o ângulo de lançamento; defina em 90 graus), BALL0_TIME (o instante de entrada em órbita, quando devemos acionar a velocidade orbital), BALL0_DELTA_SPEED (a velocidade orbital) e BALL0_DELTA_ANGLE (o ângulo da velocidade orbital inicial; defina em 0 graus).
Exemplo de “Satellite launching” (omitimos três valores com xxx):
(Início do arquivo)
GAS_MODE 0
NBALLS 2
BALL_RADIUS 8
BALL_SPEED 0
BALL_MASS 1.0
BALL_GRAVITY 0
BALL_G 100000.0
PUSH_PULL 1
NEGATIVE_FORCE 0
COEF_RESTITUTION 1.0
IS_TESTING 1
IS_INFO_SIMULATION 0
INTER_PERIOD 7.0
BALL0_SPEED xxx
BALL0_VEL_ANGLE 90
BALL0_X 1000
BALL0_Y 788
BALL0_RADIUS 12
BALL0_MASS 1e-6
BALL0_TIME xxx
BALL0_DELTA_SPEED xxx
BALL0_DELTA_ANGLE 0
BALL1_SPEED 0
BALL1_VEL_ANGLE 0
BALL1_X 1000
BALL1_Y 1000
BALL1_RADIUS 200
BALL1_MASS 50.0
PISTON_MASS 1e10
PISTON_GRAVITY 0.0
BOTTOM_TEMP_MIN 0.0
BOTTOM_TEMP_MAX 100.0
BACKGROUND 1
ECHOES 0
SCREEN_WIDTH 2000
PERCENT_WIDTH 0.90
SCREEN_HEIGHT 2000
PERCENT_HEIGHT 0.90
WALL_WIDTH 20
ZOOM_FACTOR 0.40
(Fim do arquivo)
Diante dos parâmetros acima, você precisará programar BALL0_SPEED (a velocidade inicial no lançamento do satélite), BALL0_TIME (quando será acionada a velocidade de órbita) e BALL0_DELTA_SPEED (a segunda velocidade, isto é, a velocidade orbital inicial). Observe que o ângulo inicial de lançamento é BALL0_VEL_ANGLE 90 e o ângulo da segunda velocidade (delta speed) é BALL0_DELTA_ANGLE 0.
Dica: defina BALL0_DELTA_SPEED como zero, mas BALL0_TIME para um instante suficiente para a bola inverter a velocidade. Preste atenção aos dados que o programa imprime. Você descobrirá a que altitude esses valores podem chegar.
----
III) Colisão parcialmente inelástica de duas bolas:
A programação com “IS_TESTING 1” também é útil para simular a colisão de duas bolas e estudar o efeito do coeficiente de restituição em uma colisão parcialmente inelástica. Basta definir NBALLS 2 e ajustar os demais parâmetros. Abaixo, um exemplo:
(Início do arquivo)
GAS_MODE 0
NBALLS 2
BALL_RADIUS 8
BALL_SPEED 60
BALL_MASS 0.1
BALL_GRAVITY 0
BALL_G 0
PUSH_PULL 1
NEGATIVE_FORCE 0
COEF_RESTITUTION 0.8
IS_TESTING 1
IS_INFO_SIMULATION 0
INTER_PERIOD 7.0
BALL0_SPEED 40.0
BALL0_VEL_ANGLE 0
BALL0_X 200
BALL0_Y 200
BALL0_RADIUS 20
BALL0_MASS 10
BALL0_TIME 0
BALL0_DELTA_SPEED 0.0
BALL0_DELTA_ANGLE 0
BALL1_SPEED 0
BALL1_VEL_ANGLE 0
BALL1_X 280
BALL1_Y 200
BALL1_RADIUS 20
BALL1_MASS 10
PISTON_MASS 1e6
PISTON_GRAVITY 0.0
BOTTOM_TEMP_MIN 0.0
BOTTOM_TEMP_MAX 100.0
BACKGROUND 1
ECHOES 0
SCREEN_WIDTH 480
PERCENT_WIDTH 0.50
SCREEN_HEIGHT 480
PERCENT_HEIGHT 0.80
WALL_WIDTH 20
ZOOM_FACTOR 1.0
(Fim do arquivo)
Observe o coeficiente de restituição e como os parâmetros após IS_TESTING 1 foram configurados. A bola 0 está programada para colidir com a bola 1.
Boas simulações!