コンテンツにスキップ

OrbitalSystem

このコンテンツはまだ日本語訳がありません。

Defined in: system.rs:16

pub struct OrbitalSystem\<F: [Eci](../../../../arika/api/traits/eci/) = [arika::frame::SimpleEci](../../../../arika/api/type-aliases/simpleeci/)\> {
pub mu: f64,
pub gravity: Box<dyn GravityField>,
pub models: Vec<Box<dyn Model<OrbitalState<F>, F>>>,
pub epoch_0: Option<arika::epoch::Epoch>,
pub body_radius: Option<f64>,
// ...
}

Orbital dynamics system combining a gravity field model with perturbation forces.

Parameterized by the inertial frame F (default SimpleEci). All models must produce ExternalLoads<F>(crate::model::ExternalLoads) in the same frame.

mu: f64


gravity: [Box<dyn GravityField>](https://doc.rust-lang.org/std/boxed/struct.Box.html)


models: [Vec<[Box<dyn [Model<OrbitalState<F>, F>](../../traits/model/)>](https://doc.rust-lang.org/std/boxed/struct.Box.html)>](https://doc.rust-lang.org/std/vec/struct.Vec.html)


epoch_0: [Option<arika::epoch::Epoch>](https://doc.rust-lang.org/std/option/enum.Option.html)

Initial epoch corresponding to integration time t=0. Used to compute absolute epoch for time-dependent perturbations (e.g., third-body).


body_radius: Option<f64>

Equatorial radius of the central body [km]. Used for collision detection.


fn new(mu: f64, gravity: [Box<dyn GravityField>](https://doc.rust-lang.org/std/boxed/struct.Box.html)) -> Self


fn with_model(self, model: impl [Model<OrbitalState<F>, F>](../../traits/model/) + ‘static) -> Self


fn with_epoch(self, epoch: Epoch) -> Self


fn with_body_radius(self, radius: f64) -> Self


fn acceleration_breakdown(&self, t: f64, state: &OrbitalState<F>) -> Vec<(&str, f64)>

Compute per-force acceleration magnitudes [km/s²].

Returns a vec of (name, magnitude) pairs: "gravity" first, then each model by its Model::name().


fn model_names(&self) -> Vec<&str>

Names of active models (excluding gravity).