This program is a free and open access simulator for model rocketry. With this software, the user will be able to simulate their rocket as a rigid body, obtaining important data about it, such as drag force, different drag coefficient types, the position of center of pression, trajectory expected, stress data and so much more. By reading this document, you are going to be able to understand how to use this simulator, as well as what it calculates, what inputs it needs and what outputs it returns. Thus, this document is divided in the following topics, defined according to the folders and archives of the project:
- Data
- Utils
- Physics
- Aerodynamic
- Propulsion
- Recovery
- Structure
- Simulation
The data folder contains some primordial information for the project, with files in JSON format. It is subdivided in folders with the type of data of the following table:
Folder | Content |
---|---|
Cables | Types of cables |
Materials | Several materials for the model and its properties, such as aluminum, carbon fiber, etc. |
Parachutes | Different kinds of parachute, depending on its geometry, with the info of its drag coefficient |
Propellants | Three distinct propellant types with their tecnical features |
Example of data in 'materials' folder
Example of data in 'propellants' folder
In 'utils', we have important content simulation, like archives which contain classes for grouping related data, like parachute, nose type, rocket parts data. We also have codes with fundamental constants needed and wind information for simulation.
Parachute class code
Wind direction class code
The Structure folder holds codes for the calculus of diverse tension and stress types, as well as of information got from the input dimensions of the rocket and safety margin. Next, we will describe each code archive of this folder, its inputs and outputs.
Inputs:
- 'external_radius' +'internal_radius' +'vessel_maximum_pressure' +'von_Mises_stress'
Outputs:
- 'parameter_a': the relation between motor external and internal radius.
This property of the motor can be calculated by different ways using different combinations of the inputs. Therefore, not all inputs are necessary. The manners to calculate the 'parameter a' are shown below:
Code for calculus of parameter a.
Inputs:
- 'external_radius' +'internal_radius'
Outputs: +'thickness': difference between external radius and internal radius
This technical feature will be important for some following calculus and is determined this way:
Inputs:
- 'parameter_a': the relation between motor external and internal radius.
- 'vessel_maximum_pressure': maximum pressure inside motor due to ignition of fuel grain.
Outputs:
- 'circumferential_tension'
This code calculates the circumferetial tension expected to act on motor thin walls.
Inputs:
- 'parameter_a'
- 'internal_radius'
Outputs:
- 'external_radius'
As you might imagine, this code returns the external radius for the motor of the rocket.
Inputs:
- 'parameter_a'
- 'vessel_maximum_pressure'
Outputs:
- 'longitudinal_tension': the longitudinal tension that will act on motor thin walls.
This parameter is important to know if the motor walls will resist the tension applied to it, and it is calculated with the following expression:
VMP: 'Vessel Maximum Pressure'
Inputs:
- 'parameter_a'
- 'vessel_maximum_pressure'
Outputs:
- 0: radial tension in motor considered to have thin walls is always zero.
With a thin walls motor, this function always returns 0.
Inputs:
- 'parameter_a' +'vessel_maximum_pressure' +'safety_margin' +'material': material used to build the motor
Output:
- 'von_Mises_stress': von Mises stress calculated in it's own method
For this calculus, the safety margin is not a necessary input. Once the safety margin depends on Von Mises stress for being calculated, the Von Mises Stress will be recalculated after obtaining the safety margin. Said that, this parameter is acquired this way:
Von Mises stress calculus
Inputs:
- 'von_Mises_stress'
- 'material'
Outputs:
- safety_margin of the built motor
The safety margin is important to ensure that the motor will resist the Von Mises stress. It is calculated as in the next picture:
Safety margin calculus
Inputs:
- 'external_radius' +'internal_radius'
With all these methods, we're able to determine a lot of important things for simulation and for checking rocket properties.
This folder is responsible for creating objects and abstract classes indispensable for the simulation and for making the simulations itself. Its activities are accomplished by the codes that will be described next.
This file creates a superclass for the other ambients needed. It receives a list of forces for the construction of the ambient.
It generates a subclass of AbstractAmbient which comprehends an environment of an airless earth and uses the 'physics' codes.
Airless earth code
Just as the other classes, this is a subclass of AbstractAmbient. It is similar to the previous file, but this Earth has a 'little' difference: it has atmosphere.
Airfull Earth code
This is the most extensive code of this folder and is responsible for the simulation itself. in the 'simulation' class, it coordinates the physics simulation. This class has a lot of especial functions that will be briefly described in the ensuing table:
Method | What it does |
---|---|
setupForces() | adds the forces involved in the simulation |
tryEjection() | verifies periodically if the parachute must be ejected in that moment and tries to do so |
__correctParachuteOrientation() | after ejection, it corrects rocket's orientation to (0,0,1) |
simulate() | runs the simulation for a specified range time and using a defined time interval |
__applyResultantForce() | applies the resultant force on the body |
__applyResultantTorque() | calculates and applies the resultant torque on the body |
With this part of the code, we're able to simulate properly, as we wanted.
[1] Samuel Renan Costa Morais. Metodologia Para C ́alculo Estrutural de Motor de Foguete de Propelente S ́olido. Belo Horizonte/MG, 2021.
[2] J. Barrowman. The practical calculation of the aerodynamic characteristics of slender finned vehicles. M.Sc. thesis, The Catholic University of America, 1967.
[3] Sampo Niskanen. Openrocket technical documentation. Available at https://openrocket.info/ documentation.html (2021/11/10), 2013.
[4] Ma ́ıra Fernanda Oliveira de Miranda. DESENVOLVIMENTO DE UM SISTEMA DE RECUPERAC ̧AO ̃ PARA UM MINIFOGUETE, Uberlˆandia 2021.
[5] Gary Peek Jean Potvin. OSCALC: Opening Shock Calculator, julho 2006.