use cometsfactory::physics::gravity;
use cometsfactory::physics::sublimation;
use cometsfactory::types::ShortPeriod;
fn main() {
let comet = ShortPeriod::new(1000.0, 3.5, 0.7)
.with_density(500.0)
.with_albedo(0.04)
.with_active_fraction(0.05);
let mass = comet.mass();
assert!(mass > 0.0);
let be = gravity::binding_energy(mass, comet.nucleus_radius);
assert!(be > 0.0);
let tidal = gravity::solar_tidal_acceleration(comet.nucleus_radius, comet.perihelion());
assert!(tidal > 0.0);
let hill = gravity::hill_radius(comet.semi_major_axis, mass);
assert!(hill > 0.0);
let roche = gravity::roche_limit_solar(comet.density);
assert!(roche > 1.0e9);
let v_orb = gravity::orbital_velocity(comet.perihelion());
assert!(v_orb > 20000.0);
let energy = gravity::specific_orbital_energy(comet.semi_major_axis);
assert!(energy < 0.0);
let z = sublimation::sublimation_rate(comet.perihelion(), comet.albedo);
assert!(z > 0.0);
let q = sublimation::gas_production_rate(
comet.nucleus_radius,
comet.active_fraction,
comet.perihelion(),
comet.albedo,
);
assert!(q > 1.0e20);
let dm = sublimation::mass_loss_rate(
comet.nucleus_radius,
comet.active_fraction,
comet.perihelion(),
comet.albedo,
);
assert!(dm > 0.0);
let a_ng = sublimation::nongrav_acceleration(
comet.nucleus_radius,
comet.density,
comet.active_fraction,
comet.perihelion(),
comet.albedo,
);
assert!(a_ng > 0.0);
let v_gas = sublimation::thermal_gas_velocity(comet.perihelion(), comet.albedo);
assert!(v_gas > 100.0);
let tau = sublimation::sublimation_lifetime(
comet.nucleus_radius,
comet.density,
comet.active_fraction,
comet.perihelion(),
comet.albedo,
);
assert!(tau > 0.0);
assert!(tau.is_finite());
let t_surf = sublimation::surface_temperature(comet.perihelion(), comet.albedo);
assert!(t_surf > 100.0);
}