Additional Bodies

For some purposes, for instance stability against gravitational perturbations or impact analyses, it is useful to have more than just the stars, a planet and a moon in the simulation. For this purpose, additional orbiting bodies can be defined. Basically these will be processed by the orbital solver and only by the orbital solver, i.e. they will not radiate, reflect light, acquire a temperature, simulate thermodynamics or even cause eclipses, but their gravity will affect everything else in the simulation and, if the collision finder is switched on, they can collide with other bodies in the simulation.

Hyperbolic orbits

Unlike the main objects which the simulation - at least conceptually - requires in stable 2-body orbits (which may still be destabilized by a third object), additional orbiting bodies can be on hyperbolic orbits.

In this case, an initial distance of the body must be specified, and, as is the usual convention for hyperbolic orbits, the semimajor axis needs to be negative and the eccentricity greater than unity.

The following section describes a comet on a hyperbolic trajectory that passes by Jupiter:

orbiting_body
name Comet
attach_to Jupiter
mass 0.000000001
radius 0.001
semimajor_au -0.005
distance_au 0.05
eccentricity 1.2
lan 0.0
apsis_angle 0.0
inclination 30

The parameters should otherwise be familiar from defining orbits. An orbiting body must have a name (because it is not definable otherwise) and can be attached to any other named object that has been declared before - all orbital parameters then ar interpreted relative to that object.

Rather than apoapsis for elliptic orbits, the code outputs hyperbolic excess velocity, initial velocity, escape velocity and flight path angle as orbital parameters of the defined object:

Hyp. excess v [km/s]: 13.0134
Initial v [km/s]: 14.2554
Escape v [km/s]: 5.81975
Theta path [deg]: 85.7469

Hyperbolic orbit of a comet swinging by Jupiter

Impact studies

The worldbuilder code comes with an impact detection that can be switched on using collision_finder true in the config block.

The impact simulation only works for small objects impacting large ones - for equal sized objects, the resulting physics is very complicated as energy is dissipated into heat and debris clouds are created and may re-form under their own gravitation. But if a small object impacts on a large one, it is simply removed from the simulation and the large body continues its orbit unaltered.

Using the collision detection, one can investigate questions like to what degree the presence of additional planets or moons shield a world of interest from asteroids or comets.

Running such studies requires generating a large number of different possible impactors and evolving the simulation for sufficiently long to see where they end up. To do so, it is possible to specify orbital elements such that they are randomized every time the simulation starts, for instance

orbiting_body
name Test1
attach_to Jupiter
mass 0.000000001
radius 0.001
semimajor_min_au 0.0089
semimajor_max_au 0.0095
eccentricity_min 0.75
eccentricity_max 0.9
apsis_angle_min 0.0
apsis_angle_max 360.0

generates a small comet with a short period around Jupiter that has a chance of impacting on one of the Galilean moons. If instead of e.g. eccentricity the pair eccentricity_min and eccentricity_max are specified, the object is initialized with a random value within these limits every time the simulation is started. In such a way, a large distribution of random impactor orbits can be generated.

The config file example30.cfg contains the four Galilean moons in addition to eight random test bodies to simulate where they ultimately impact.

Note at this point that the simulation also treats the (negligible) interaction among all test bodies correctly - which slows the simulation down when too many are added. For performance reasons it is generally better to run few test bodies sequentially (which removes the interactionsamong them) than to increase their number in a single run.

If the example config file is run several times, this is the distribution of impacts on the four moons:

Impacts ofrandom test bodies on the Galilean moons.

It turns out that for the sample specified, Io is the most likely moon to be hit, but also the other moons take a lot of impacts (which would ultimately hit Io if they were not there). With some patience in gathering enough data and adding/removing objects, one can in such way lean what role a particular body plays in protecting abother from cosmic debris.

Continue with Geology.


Back to main index     Back to science     Back to worldbuilder

Created by Thorsten Renk 2024 - see the disclaimer, privacy statement and contact information.