Celestia Writer: A humble tool for creating Celestia systems
Posted: 22.03.2020, 17:55
Over about the past year I have been developing a programme to create an updated catalogue of extrasolar planets, here. I have been continuously improving over the past year, but its structure was very limited and cumbersome, like a cathedral built without a plan, and only as a result of continuous expansions on a modest house. It was not designed to handle multi-stellar systems, and while I finally managed to get it to handle binary systems, it still left dozens of 3+ stellar systems needing to be done manually, leaving them vulnerable to having heterogeneous treatment and parameter determination, much to my own ire. In an effort to simplify and streamline this effort, I have re-written the programme in a more generalized way that now handles arbitrarily high number of stars, with planets around any of the stars or barycenters. With this new programme now generalized, I feel like it is at a point where it can be made public for all to use for whatever fictional or real stellar/planetary systems you wish.
This programme automatically determines system hierarchies and orbits where possible. If no orbit is defined for a pair of stars, it will construct an orbit from the RA and Dec of those stars. System parameters (both orbital and rotational) are converted from sky-plane to Celestia's internal reference plane through the formulae given in Grant Hutchison's starorbs.xls spreadsheet. However, all discussion about these parameters in this post will be with respect to the plane of the sky. Stellar oblateness has been estimated from v sin i (or calculated values for it if the rotation period is known) through the methods given in this document (pdf).
Missing stellar information is taken from Mamajek's star relations. In multi-stellar systems, star mass ratios are used to set the respective semi-major axes, of course, but it also incorporates the masses of the stellar component's planets. This is true of circum-multiple planets as well. For "normal" planetary systems this won't really matter, but in binary systems where there's a high-mass companion to a low-mass star -- HD 41004 being an example -- it provides the opportunity to increase the accuracy.
Stellar rotation axes follow the following prioritization logic:
1) The inclination of the star's rotation axis is stated explicitly in the input. Barring that,
2) If the star is part of a tight binary system with an orbit inclination defined, then the stars are set as tidally locked into (pseudo-)synchronous rotation, solving for the rotation axis. Barring that,
3) The inclination of the star's rotation axis is set to the inclination of the innermost transiting planet's orbit. If there is no transiting planets,
4) The inclination of the star's rotation axis is set to the average inclination of all planets with measured orbital inclinations.
5) If there are no such planets (as will often be the case for radial-velocity systems). No attempt to determine the rotation axis of the star is made.
For many planets, especially those discovered with Doppler spectroscopy, the inclination and ascending node (the "3D parameters") of these planets are not known. Planet 3D parameters follow the following prioritization logic:
1) If the planet's full 3D orbit is specified, these values are taken.
2) If a planet is specified as a transiting planet through one of several options, the inclination is set to 90.
3) In multi-planet systems, a "average system plane" is calculated from the planets with 3D orbit parameters. This is assigned to the planets without them to maintain coplanarity.
Because this script was written with the purpose of creating extrasolar planet systems from literature, it is centered around that task. Certain considerations have not been taken into account such as spacecraft, specular maps, bump maps, custom night-textures for planets, etc. Because the number of known extrasolar moons is somewhat restricted, there has been very little testing beyond "Well it works for Kepler-1625b-i." It is a programme I wrote myself in Visual Studio, so your anti-virus software will likely note that it's an unrecognized programme.
Added after 4 minutes 32 seconds:
To start, information goes into the leftmost pane, and STC and SSC file is produced in the middle and right panes.
You can write custom information into the left to produce whatever you want, or to get started, you may invoke example systems from "Load Examples"
You will need to update (File -> Update) to produced the .ssc or .stc text. This is done automatically when loading examples. You may also turn Auto-Update on (Options -> Auto-Update) and it will try to create .ssc and .stc information whenever you make a change. This can be kind of cool to play with but because it processes a lot of bad information while writing in the left pane, there's a chance it could throw an error that I haven't accounted for, causing it to crash. I think I've accounted for just about everything though and so the auto-update should run smoothly.
Once you are satisfied, you may copy the text from the .stc and .ssc panes or export them as their own .stc and .ssc files (File -> Export Celestia Files). They will appear in the directory you have the CelestiaWriter.bat file in with the file format
"CelestiaWriter_YYYYMMDDHHMMSS_Stars.stc" or "..._Planets.ssc".
This programme automatically determines system hierarchies and orbits where possible. If no orbit is defined for a pair of stars, it will construct an orbit from the RA and Dec of those stars. System parameters (both orbital and rotational) are converted from sky-plane to Celestia's internal reference plane through the formulae given in Grant Hutchison's starorbs.xls spreadsheet. However, all discussion about these parameters in this post will be with respect to the plane of the sky. Stellar oblateness has been estimated from v sin i (or calculated values for it if the rotation period is known) through the methods given in this document (pdf).
Missing stellar information is taken from Mamajek's star relations. In multi-stellar systems, star mass ratios are used to set the respective semi-major axes, of course, but it also incorporates the masses of the stellar component's planets. This is true of circum-multiple planets as well. For "normal" planetary systems this won't really matter, but in binary systems where there's a high-mass companion to a low-mass star -- HD 41004 being an example -- it provides the opportunity to increase the accuracy.
Stellar rotation axes follow the following prioritization logic:
1) The inclination of the star's rotation axis is stated explicitly in the input. Barring that,
2) If the star is part of a tight binary system with an orbit inclination defined, then the stars are set as tidally locked into (pseudo-)synchronous rotation, solving for the rotation axis. Barring that,
3) The inclination of the star's rotation axis is set to the inclination of the innermost transiting planet's orbit. If there is no transiting planets,
4) The inclination of the star's rotation axis is set to the average inclination of all planets with measured orbital inclinations.
5) If there are no such planets (as will often be the case for radial-velocity systems). No attempt to determine the rotation axis of the star is made.
For many planets, especially those discovered with Doppler spectroscopy, the inclination and ascending node (the "3D parameters") of these planets are not known. Planet 3D parameters follow the following prioritization logic:
1) If the planet's full 3D orbit is specified, these values are taken.
2) If a planet is specified as a transiting planet through one of several options, the inclination is set to 90.
3) In multi-planet systems, a "average system plane" is calculated from the planets with 3D orbit parameters. This is assigned to the planets without them to maintain coplanarity.
Because this script was written with the purpose of creating extrasolar planet systems from literature, it is centered around that task. Certain considerations have not been taken into account such as spacecraft, specular maps, bump maps, custom night-textures for planets, etc. Because the number of known extrasolar moons is somewhat restricted, there has been very little testing beyond "Well it works for Kepler-1625b-i." It is a programme I wrote myself in Visual Studio, so your anti-virus software will likely note that it's an unrecognized programme.
Added after 4 minutes 32 seconds:
To start, information goes into the leftmost pane, and STC and SSC file is produced in the middle and right panes.
You can write custom information into the left to produce whatever you want, or to get started, you may invoke example systems from "Load Examples"
You will need to update (File -> Update) to produced the .ssc or .stc text. This is done automatically when loading examples. You may also turn Auto-Update on (Options -> Auto-Update) and it will try to create .ssc and .stc information whenever you make a change. This can be kind of cool to play with but because it processes a lot of bad information while writing in the left pane, there's a chance it could throw an error that I haven't accounted for, causing it to crash. I think I've accounted for just about everything though and so the auto-update should run smoothly.
Once you are satisfied, you may copy the text from the .stc and .ssc panes or export them as their own .stc and .ssc files (File -> Export Celestia Files). They will appear in the directory you have the CelestiaWriter.bat file in with the file format
"CelestiaWriter_YYYYMMDDHHMMSS_Stars.stc" or "..._Planets.ssc".