pub struct ConstantDrag {
pub rho: f64,
pub drag_frame: Frame,
pub estimate: bool,
}
Expand description
ConstantDrag
implements a constant drag model as defined in Vallado, 4th ed., page 551, with an important caveat.
WARNING: This basic model assumes that the velocity of the spacecraft is identical to the velocity of the upper atmosphere, This is a bad assumption and should not be used for high fidelity simulations. This will be resolved after https://gitlab.com/chrisrabotin/nyx/issues/93 is implemented.
Fields§
§rho: f64
atmospheric density in kg/m^3
drag_frame: Frame
Geoid causing the drag
estimate: bool
Set to true to estimate the coefficient of drag
Trait Implementations§
Source§impl Clone for ConstantDrag
impl Clone for ConstantDrag
Source§fn clone(&self) -> ConstantDrag
fn clone(&self) -> ConstantDrag
Returns a copy of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreSource§impl Display for ConstantDrag
impl Display for ConstantDrag
Source§impl ForceModel for ConstantDrag
impl ForceModel for ConstantDrag
Source§fn estimation_index(&self) -> Option<usize>
fn estimation_index(&self) -> Option<usize>
If a parameter of this force model is stored in the spacecraft state, then this function should return the index where this parameter is being affected
Source§fn eom(
&self,
ctx: &Spacecraft,
almanac: Arc<Almanac>,
) -> Result<Vector3<f64>, DynamicsError>
fn eom( &self, ctx: &Spacecraft, almanac: Arc<Almanac>, ) -> Result<Vector3<f64>, DynamicsError>
Defines the equations of motion for this force model from the provided osculating state.
Source§fn dual_eom(
&self,
_osc_ctx: &Spacecraft,
_almanac: Arc<Almanac>,
) -> Result<(Vector3<f64>, Matrix4x3<f64>), DynamicsError>
fn dual_eom( &self, _osc_ctx: &Spacecraft, _almanac: Arc<Almanac>, ) -> Result<(Vector3<f64>, Matrix4x3<f64>), DynamicsError>
Force models must implement their partials, although those will only be called if the propagation requires the
computation of the STM. The
osc_ctx
is the osculating context, i.e. it changes for each sub-step of the integrator.
The last row corresponds to the partials of the parameter of this force model wrt the position, i.e. this only applies to conservative forces.Auto Trait Implementations§
impl Freeze for ConstantDrag
impl RefUnwindSafe for ConstantDrag
impl Send for ConstantDrag
impl Sync for ConstantDrag
impl Unpin for ConstantDrag
impl UnwindSafe for ConstantDrag
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more§impl<T> Pointable for T
impl<T> Pointable for T
§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self
from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self
is actually part of its subset T
(and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset
but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self
to the equivalent element of its superset.