npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

accrete-wasm

v0.2.3

Published

Rust port of Accrete, planetary system generation algorithm. Based on 'Formation of Planetary Systems by Aggregation: A Computer Simulation' by Stephen H. Dole. Improved and extended by many talented people during past ~50 years.

Downloads

24

Readme

Accrete.rs

License: MIT Build Status Doc Crate npm version

Rust port of Accrete, planetary system generation algorithm. Based on 'Formation of Planetary Systems by Aggregation: A Computer Simulation' by Stephen H. Dole. Improved and extended by many talented people during past ~50 years (good overview here, also brief history below). This version of Accrete can be used for procedural generation of plausible planetary system.

Features

  • Planetary system generation from original Accrete.
  • Planet environment generation from Starform / Stargen.
  • Moons and rings generation.
  • Extended stellar and planetary data.
  • Stand-alone planet generation.
  • Rust crate
  • NPM package

Generate planetary system

import init, { planetary_system } from 'accrete-wasm';
async function run() {
    await init();
    const seed = 1;
    const stellar_mass = 1;
    const output = planetary_system(BigInt(seed), stellar_mass);
}
run();

Simple way to variate output is to change stellar mass. This accrete implementation is capable of generating planetary system for any stellar mass, but better (most realistic) results achieved for main sequence star class with primary star mass of 0.6 - 1.3 solar masses. Approximate stellar masses:

| Spectral class | W | O | B | A | F | G | K | M | |----------------|----|----|----|---|-----|---|-----|-----| | Stellar mass | 40 | 30 | 10 | 3 | 1.5 | 1 | 0.7 | 0.4 |

Configuration:

stellar_mass - Primary star mass in solar masses. Default: random f64 in a range of 0.6-1.3 (corresponds main sequence spectral classes of F-G-K)

dust_density_coeff - "A" in Dole's paper, recommended range according to Dole's paper is 0.00125-0.0015, aslo noted that binary stars produced by increasing coeff of dust density in cloud (Formation of Planetary Systems by Aggregation: A Computer Simulation by Stephen H. Dole). Default: 0.0015

k - The dust-to-gas ratio 50-100 (dust/gas = K), gas = hydrogen and helium, dust = other. Recommended range: 50.0-100.0 Default: 50.0

cloud_eccentricity - Initial dust cloud cloud_eccentricity. Recommended range: 0.15-0.25. Default: 0.20

b - Crit_mass coeff is used as threshold for planet to become gas giant. Recommended range: 1.0e-5 - 1.2e-5 Default: 1.2e-5

post_accretion_intensity - Amount of random planetesimals that will bomb planets of created system after accretion. Default: 1000

Generate planet

import init, { planet } from 'accrete-wasm';
async function run() {
    await init();
    const seed = 1;
    const stellar_mass = 1;
    const output = planet(BigInt(seed), stellar_mass);
}
run();

Configuration:

stellar_luminosity - Primary star luminosity. Default: 1.0

stellar_mass - Primary star mass in solar masses. Default: 1.0

a - Planet orbital radius in AU. Default: random f64 in a range of 0.3-50.0

e - Planet eccentricity Default: f64 from random_eccentricity function

mass - Planet mass in Earth masses. Default: Random f64 in a range 3.3467202125167E-10 - 500.0

post_accretion_intensity - Amount of random planetesimals that will bomb planet after accretion. Default: 100

Check full examples

Brief history

Accrete's origin dates back to the late 60's when Stephen H. Dole published "Formation of Planetary Systems by Aggregation: A Computer Simulation". Almost a decade later Carl Sagan and Richard Isaacson refined Dole's model -- which shortly thereafter was also implemented in FORTRAN, and again elaborately and academically published by Martin Fogg in his paper "Extra-Solar Planetary Systems". The late 80's came and Matt Burdick brought this priceless program to the masses (via Turbo Pascal and C). Since then, many versions of Accrete have popped up around the internet, adding varying degrees of planetary specifics – the most notable (and ingenious) being Jim Burrow's implementation StarGen.(c)

Papers

Acknowledgements