Skip to content

Commit 3fe4183

Browse files
Merge pull request #369 from nyx-space/feat/serde-bis
Additional fixes for version 0.5.2
2 parents 1af2fe6 + a38aaf4 commit 3fe4183

File tree

10 files changed

+185
-124
lines changed

10 files changed

+185
-124
lines changed

anise/Cargo.toml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ ndarray = { workspace = true, optional = true }
3232
url = { version = "2.5.0", optional = true }
3333
serde = "1"
3434
serde_derive = "1"
35-
serde_dhall = { version = "0.12", optional = true }
35+
serde_dhall = { version = "0.12", optional = true, default-features = false }
3636
reqwest = { version = "0.12.0", optional = true, features = ["blocking"] }
3737
platform-dirs = { version = "0.3.0", optional = true }
3838
tabled = { workspace = true }
@@ -53,10 +53,12 @@ rstest = { workspace = true }
5353
approx = "0.5.1"
5454
polars = { version = "0.45.1", features = ["lazy", "parquet"] }
5555
rayon = "1.7"
56-
serde_yaml = "0.9.30"
56+
serde_yml = "0.0.12"
5757

5858
[build-dependencies]
59-
reqwest = { version = "0.12", features = ["blocking"], optional = true }
59+
reqwest = { version = "0.12", features = [
60+
"blocking",
61+
], optional = true, default-features = false }
6062

6163
[features]
6264
default = ["metaload"]

anise/README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,3 +207,7 @@ ANISE is heavily inspired by the NAIF SPICE toolkit and its excellent documentat
207207
## Contact
208208

209209
For any inquiries, feedback, or discussions, please [open an issue here](https://github.com/nyx-space/anise/issues) or contact the maintainer at christopher.rabotin@gmail.com.
210+
211+
## Versioning
212+
213+
ANISE abides by the Rust versioning rules for dependencies but not necessarily for dev-dependencies. Please open a ticket if this causes an issue.

anise/src/math/cartesian.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -660,8 +660,8 @@ mod cartesian_state_ut {
660660
let frame = EARTH_J2000;
661661
let state = CartesianState::new(10.0, 20.0, 30.0, 1.0, 2.0, 2.0, e, frame);
662662

663-
let serialized = serde_yaml::to_string(&state).unwrap();
664-
let rtn: CartesianState = serde_yaml::from_str(&serialized).unwrap();
663+
let serialized = serde_yml::to_string(&state).unwrap();
664+
let rtn: CartesianState = serde_yml::from_str(&serialized).unwrap();
665665

666666
assert_eq!(rtn, state);
667667
}

anise/src/orientations/rotate_to_parent.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -106,9 +106,7 @@ impl Almanac {
106106
// Not available as a BPC, so let's see if there's planetary data for it.
107107
match self.planetary_data.get_by_id(source.orientation_id) {
108108
Ok(planetary_data) => {
109-
println!(
110-
"query {source} wrt to its parent @ {epoch:E} using planetary data"
111-
);
109+
trace!("query {source} wrt to its parent @ {epoch:E} using planetary data");
112110
// Fetch the parent info
113111
let system_data =
114112
match self.planetary_data.get_by_id(planetary_data.parent_id) {
@@ -121,7 +119,7 @@ impl Almanac {
121119
.context(OrientationPhysicsSnafu)
122120
}
123121
Err(_) => {
124-
println!("query {source} wrt to its parent @ {epoch:E} using Euler parameter data");
122+
trace!("query {source} wrt to its parent @ {epoch:E} using Euler parameter data");
125123
// Finally, let's see if it's in the loaded Euler Parameters.
126124
// We can call `into` because EPs can be converted directly into DCMs.
127125
Ok(self

anise/src/structure/dataset/mod.rs

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -551,14 +551,14 @@ mod dataset_ut {
551551
}),
552552
inertia: Some(Inertia {
553553
orientation_id: -20,
554-
i_11_kgm2: 120.0,
555-
i_22_kgm2: 180.0,
556-
i_33_kgm2: 220.0,
557-
i_12_kgm2: 20.0,
558-
i_13_kgm2: -15.0,
559-
i_23_kgm2: 30.0,
554+
i_xx_kgm2: 120.0,
555+
i_yy_kgm2: 180.0,
556+
i_zz_kgm2: 220.0,
557+
i_xy_kgm2: 20.0,
558+
i_xz_kgm2: -15.0,
559+
i_yz_kgm2: 30.0,
560560
}),
561-
mass_kg: Some(Mass::from_dry_and_fuel_masses(150.0, 50.6)),
561+
mass: Some(Mass::from_dry_and_prop_masses(150.0, 50.6)),
562562
drag_data: Some(DragData::default()),
563563
};
564564
let srp_sc = SpacecraftData {
@@ -598,10 +598,10 @@ mod dataset_ut {
598598

599599
// Build the lookup table
600600
dataset
601-
.push(srp_sc.clone(), Some(-20), Some("SRP spacecraft"))
601+
.push(srp_sc, Some(-20), Some("SRP spacecraft"))
602602
.unwrap();
603603
dataset
604-
.push(full_sc.clone(), Some(-50), Some("Full spacecraft"))
604+
.push(full_sc, Some(-50), Some("Full spacecraft"))
605605
.unwrap();
606606

607607
dataset.set_crc32();
@@ -633,7 +633,7 @@ mod dataset_ut {
633633
// Grab a copy of the original data
634634
let mut sc = dataset.get_by_name("SRP spacecraft").unwrap();
635635
sc.srp_data.as_mut().unwrap().coeff_reflectivity = 1.1;
636-
dataset.set_by_name("SRP spacecraft", sc.clone()).unwrap();
636+
dataset.set_by_name("SRP spacecraft", sc).unwrap();
637637
// Ensure that we've modified only that entry
638638
assert_eq!(
639639
dataset.get_by_name("Full spacecraft").unwrap(),
@@ -651,7 +651,7 @@ mod dataset_ut {
651651
1.1,
652652
"value was not modified"
653653
);
654-
assert!(dataset.set_by_name("Unavailable SC", sc.clone()).is_err());
654+
assert!(dataset.set_by_name("Unavailable SC", sc).is_err());
655655

656656
// Test renaming by name
657657
dataset
@@ -694,14 +694,14 @@ mod dataset_ut {
694694
}),
695695
inertia: Some(Inertia {
696696
orientation_id: -20,
697-
i_11_kgm2: 120.0,
698-
i_22_kgm2: 180.0,
699-
i_33_kgm2: 220.0,
700-
i_12_kgm2: 20.0,
701-
i_13_kgm2: -15.0,
702-
i_23_kgm2: 30.0,
697+
i_xx_kgm2: 120.0,
698+
i_yy_kgm2: 180.0,
699+
i_zz_kgm2: 220.0,
700+
i_xy_kgm2: 20.0,
701+
i_xz_kgm2: -15.0,
702+
i_yz_kgm2: 30.0,
703703
}),
704-
mass_kg: Some(Mass::from_dry_and_fuel_masses(150.0, 50.6)),
704+
mass: Some(Mass::from_dry_and_prop_masses(150.0, 50.6)),
705705
drag_data: Some(DragData::default()),
706706
};
707707
let srp_sc = SpacecraftData {
@@ -713,19 +713,19 @@ mod dataset_ut {
713713

714714
let mut dataset = DataSet::<SpacecraftData, 16>::default();
715715
dataset
716-
.push(srp_sc.clone(), Some(-20), Some("SRP spacecraft"))
716+
.push(srp_sc, Some(-20), Some("SRP spacecraft"))
717717
.unwrap();
718718

719719
dataset
720-
.push(full_sc.clone(), Some(-50), Some("Full spacecraft"))
720+
.push(full_sc, Some(-50), Some("Full spacecraft"))
721721
.unwrap();
722722

723723
// Pushing without name as ID -51
724-
dataset.push(full_sc.clone(), Some(-51), None).unwrap();
724+
dataset.push(full_sc, Some(-51), None).unwrap();
725725

726726
// Pushing without ID
727727
dataset
728-
.push(srp_sc.clone(), None, Some("ID less SRP spacecraft"))
728+
.push(srp_sc, None, Some("ID less SRP spacecraft"))
729729
.unwrap();
730730

731731
// Make sure to set the CRC32.
@@ -756,14 +756,14 @@ mod dataset_ut {
756756

757757
// Check that we can set by ID
758758
let mut repr = dataset.get_by_id(-50).unwrap();
759-
repr.mass_kg.as_mut().unwrap().dry_mass_kg = 100.5;
760-
dataset.set_by_id(-50, repr.clone()).unwrap();
759+
repr.mass.as_mut().unwrap().dry_mass_kg = 100.5;
760+
dataset.set_by_id(-50, repr).unwrap();
761761
assert_eq!(
762-
dataset.get_by_id(-50).unwrap().mass_kg.unwrap().dry_mass_kg,
762+
dataset.get_by_id(-50).unwrap().mass.unwrap().dry_mass_kg,
763763
100.5,
764764
"value was not modified"
765765
);
766-
assert!(dataset.set_by_id(111, repr.clone()).is_err());
766+
assert!(dataset.set_by_id(111, repr).is_err());
767767
// Test renaming by ID
768768
dataset.lut.reid(-50, -52).unwrap();
769769
// Calling this a second time will lead to an error
@@ -772,7 +772,7 @@ mod dataset_ut {
772772
assert!(dataset.get_by_id(-50).is_err());
773773
// Check that we can fetch that data as we modified it.
774774
assert_eq!(
775-
dataset.get_by_id(-52).unwrap().mass_kg.unwrap().dry_mass_kg,
775+
dataset.get_by_id(-52).unwrap().mass.unwrap().dry_mass_kg,
776776
100.5,
777777
"value not reachable after reid"
778778
);

anise/src/structure/spacecraft/drag.rs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,21 @@ use serde_derive::{Deserialize, Serialize};
1212

1313
#[derive(Copy, Clone, Debug, PartialEq, Serialize, Deserialize)]
1414
pub struct DragData {
15-
/// Atmospheric drag area in m^2
15+
/// Atmospheric drag area in m^2 -- default 0.0
1616
pub area_m2: f64,
17-
/// Drag coefficient (C_d)
17+
/// Drag coefficient (C_d) -- default 2.2
1818
pub coeff_drag: f64,
1919
}
2020

21+
impl DragData {
22+
pub fn from_area(area_m2: f64) -> Self {
23+
Self {
24+
area_m2,
25+
..Default::default()
26+
}
27+
}
28+
}
29+
2130
impl Default for DragData {
2231
fn default() -> Self {
2332
Self {

anise/src/structure/spacecraft/inertia.rs

Lines changed: 45 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -18,68 +18,68 @@ use crate::NaifId;
1818
pub struct Inertia {
1919
/// Inertia tensor reference frame hash
2020
pub orientation_id: NaifId,
21-
/// Moment of inertia about the 1-axis
22-
pub i_11_kgm2: f64,
23-
/// Moment of inertia about the 2-axis
24-
pub i_22_kgm2: f64,
25-
/// Moment of inertia about the 3-axis
26-
pub i_33_kgm2: f64,
27-
/// Inertia cross product of the 1 and 2 axes
28-
pub i_12_kgm2: f64,
29-
/// Inertia cross product of the 1 and 2 axes
30-
pub i_13_kgm2: f64,
31-
/// Inertia cross product of the 2 and 3 axes
32-
pub i_23_kgm2: f64,
21+
/// Moment of inertia about the X axis, in kg \cdot m^2
22+
pub i_xx_kgm2: f64,
23+
/// Moment of inertia about the Y axis, in kg \cdot m^2
24+
pub i_yy_kgm2: f64,
25+
/// Moment of inertia about the Z axis, in kg \cdot m^2
26+
pub i_zz_kgm2: f64,
27+
/// Inertia cross product of the X and Y axes, in kg \cdot m^2
28+
pub i_xy_kgm2: f64,
29+
/// Inertia cross product of the X and Y axes, in kg \cdot m^2
30+
pub i_xz_kgm2: f64,
31+
/// Inertia cross product of the Y and Z axes, in kg \cdot m^2
32+
pub i_yz_kgm2: f64,
3333
}
3434

3535
impl Inertia {
3636
pub fn tensor_kgm2(&self) -> Matrix3<f64> {
3737
Matrix3::new(
38-
self.i_11_kgm2,
39-
self.i_12_kgm2,
40-
self.i_13_kgm2,
41-
self.i_12_kgm2,
42-
self.i_22_kgm2,
43-
self.i_23_kgm2,
44-
self.i_13_kgm2,
45-
self.i_23_kgm2,
46-
self.i_33_kgm2,
38+
self.i_xx_kgm2,
39+
self.i_xy_kgm2,
40+
self.i_xz_kgm2,
41+
self.i_xy_kgm2,
42+
self.i_yy_kgm2,
43+
self.i_yz_kgm2,
44+
self.i_xz_kgm2,
45+
self.i_yz_kgm2,
46+
self.i_zz_kgm2,
4747
)
4848
}
4949
}
5050

5151
impl Encode for Inertia {
5252
fn encoded_len(&self) -> der::Result<der::Length> {
5353
self.orientation_id.encoded_len()?
54-
+ self.i_11_kgm2.encoded_len()?
55-
+ self.i_22_kgm2.encoded_len()?
56-
+ self.i_33_kgm2.encoded_len()?
57-
+ self.i_12_kgm2.encoded_len()?
58-
+ self.i_13_kgm2.encoded_len()?
59-
+ self.i_23_kgm2.encoded_len()?
54+
+ self.i_xx_kgm2.encoded_len()?
55+
+ self.i_yy_kgm2.encoded_len()?
56+
+ self.i_zz_kgm2.encoded_len()?
57+
+ self.i_xy_kgm2.encoded_len()?
58+
+ self.i_xz_kgm2.encoded_len()?
59+
+ self.i_yz_kgm2.encoded_len()?
6060
}
6161

6262
fn encode(&self, encoder: &mut impl Writer) -> der::Result<()> {
6363
self.orientation_id.encode(encoder)?;
64-
self.i_11_kgm2.encode(encoder)?;
65-
self.i_22_kgm2.encode(encoder)?;
66-
self.i_33_kgm2.encode(encoder)?;
67-
self.i_12_kgm2.encode(encoder)?;
68-
self.i_13_kgm2.encode(encoder)?;
69-
self.i_23_kgm2.encode(encoder)
64+
self.i_xx_kgm2.encode(encoder)?;
65+
self.i_yy_kgm2.encode(encoder)?;
66+
self.i_zz_kgm2.encode(encoder)?;
67+
self.i_xy_kgm2.encode(encoder)?;
68+
self.i_xz_kgm2.encode(encoder)?;
69+
self.i_yz_kgm2.encode(encoder)
7070
}
7171
}
7272

7373
impl<'a> Decode<'a> for Inertia {
7474
fn decode<R: Reader<'a>>(decoder: &mut R) -> der::Result<Self> {
7575
Ok(Self {
7676
orientation_id: decoder.decode()?,
77-
i_11_kgm2: decoder.decode()?,
78-
i_22_kgm2: decoder.decode()?,
79-
i_33_kgm2: decoder.decode()?,
80-
i_12_kgm2: decoder.decode()?,
81-
i_13_kgm2: decoder.decode()?,
82-
i_23_kgm2: decoder.decode()?,
77+
i_xx_kgm2: decoder.decode()?,
78+
i_yy_kgm2: decoder.decode()?,
79+
i_zz_kgm2: decoder.decode()?,
80+
i_xy_kgm2: decoder.decode()?,
81+
i_xz_kgm2: decoder.decode()?,
82+
i_yz_kgm2: decoder.decode()?,
8383
})
8484
}
8585
}
@@ -92,12 +92,12 @@ mod inertia_ut {
9292
let repr = Inertia {
9393
// Spacecraft IDs are typically negative
9494
orientation_id: -20,
95-
i_11_kgm2: 120.0,
96-
i_22_kgm2: 180.0,
97-
i_33_kgm2: 220.0,
98-
i_12_kgm2: 20.0,
99-
i_13_kgm2: -15.0,
100-
i_23_kgm2: 30.0,
95+
i_xx_kgm2: 120.0,
96+
i_yy_kgm2: 180.0,
97+
i_zz_kgm2: 220.0,
98+
i_xy_kgm2: 20.0,
99+
i_xz_kgm2: -15.0,
100+
i_yz_kgm2: 30.0,
101101
};
102102

103103
let mut buf = vec![];

0 commit comments

Comments
 (0)