[][src]Crate kalast

kalast

Thermophysical model for binary systems of asteroids.

Using kalast

You will need the last stable build of the rust compiler and the official package manager: cargo.

Simply add the following to your Cargo.toml file:

[dependencies]
kalast = "0.1.4"

Most useful functionalities of kalast are grouped in the root module kalast::.

However, the recommended way to use nalgebra is to import types and traits explicitly, and call free-functions using the na:: prefix:

use kalast::{Body, Properties, Time, World, ASTRONAUMICAL_UNIT, HOUR, TAU, V3};
use std::path::Path;

fn main() {
    // Instanciate a celestial body named 'Dimorphos', at a distance of 1.664 AU from
    // the Sun, from a 3D object shape model located at 'rsc/obj/dimorphos.obj',
    // with a complete set of ground physical properties.
    let mut body = Body::new(
        "Dimorphos",
        V3::new(0.0, 1.0, 0.0) * ASTRONAUMICAL_UNIT * 1.664,
        Path::new("rsc/obj/dimorphos.obj"),
        Properties::new(
            11.92 * HOUR,        // rotation period
            11.92 * HOUR,        // revolution period
            162.0 * TAU / 360.0, // obliquity
            500.0,               // thermal inertia
            2146.0,              // density
            600.0,               // heat capacity
            0.07,                // albedo
            0.9,                 // emissivity
        ),
    );
    body.set_faces_mask_equator(); // only computes temperatures for equator

    // Create a simulation time that lasts 50 revolution period of the body with 30 seconds steps.
    // The residual 0.75 period is for the last frame to be at noon (max temperature peek at
    // longitude=0°, according to this initial bodies setup).
    let time = Time::new(50.75 * body.properties.revolution_period(), 30.0);

    let mut world = World::new(time, body, None); // define the world of the simulation
    world.start(); // run the simulation
    world.save(Path::new("rsc/temperatures/dimorphos_equator.txt")); // save the temperatures to a file
}

Features

kalast is meant for binary system of asteroids surface thermophysical modelling. The physics of this engine includes these features:

  • custom shape model
  • celestial body revolution
  • compute surface temperatures from solar flux
  • ground 1D heat transfert conduction
  • celestial body mask view (example only equator)
  • TODO: mutual heating from primary/moon
  • TODO: self heating
  • TODO: mutual occultations
  • TODO: shadowing

Explore

If your want to explore the documentation, you can visite these pages:

  • Object3D: parse 3D object file and compute atributes of faces (centers, normals, ...)
  • Body: the representation for a celestial body
  • Properties: all the properties to characterise a body
  • World: the simulation manager

Re-exports

pub use crate::base::*;
pub use crate::toolbox::*;

Modules

base

Base features.

toolbox

Collection of generic functions for math, physics, matrix operations, or for the usage of other crates.

Traits

SuperScalar

Trait that extends Scalar to create integer matrices like float matrices. It aims to be the equivalent of [RealField] but for integer.

Type Definitions

Matrix10xX

Type alias for Object3D. The matrix has a fixed number of rows (10) and a dynamical number of columns.

MatrixSlice10x1

Type alias for Object3D. The slice matrix has a fixed number of rows (10) and a fixed number of columns (1).

MatrixSliceMut10x1

Type alias for Object3D. The mutable slice matrix has a fixed number of rows (10) and a fixed number of columns (1).

V3

Type alias for Matrix3x1. The matrix has a fixed number of rows (3) and a fixed number of columns (1).

V3X

Type alias for Matrix3xX. The matrix has a fixed number of rows (3) and a dynamical number of columns.

VX

Type alias for DVector. The matrix is a vector of X columns.