19 releases (10 stable)
2.4.0 | Apr 29, 2024 |
---|---|
2.3.0 | Jan 5, 2024 |
2.2.1 | Dec 23, 2023 |
2.1.0 | Jul 1, 2023 |
0.1.2 | Dec 19, 2021 |
#674 in Science
Used in 8 crates
(6 directly)
71KB
1.5K
SLoC
GMT Linear Optical Model
lib.rs
:
Giant Magellan Telescope Linear Optical Model
Optical linear transformations applied to the rigid body motions of the primary and secondary segmented mirrors of the GMT
The optical sensitivities can be downloaded from here,
or they can be recomputed with the makesens binary compiled with the crseo
features
and run on a computer with a NVIDIA GPU.
Example
use std::iter::once;
use skyangle::Conversion;
use gmt_lom::LOM;
let m1_rbm = vec![vec![0f64; 6]; 7];
let mut m2_rbm = vec![vec![0f64; 6]; 7];
m2_rbm
.iter_mut()
.step_by(2)
.for_each(|str| {
str[3] = 1f64.from_arcsec();
str[4] = 1f64.from_arcsec();
});
m2_rbm[6][3] = 1f64.from_arcsec();
m2_rbm[6][4] = 1f64.from_arcsec();
let lom = LOM::builder()
.into_iter_rigid_body_motions(once((m1_rbm, m2_rbm)))
.build()
.unwrap();
let tt = lom.tiptilt();
println!(" Tiptilt: {:.0?}mas", tt);
let stt = lom.segment_tiptilt();
println!("Segment tiptilt:");
println!(" - x: {:.0?}mas", &stt[..7]);
println!(" - y: {:.0?}mas", &stt[7..]);
let sp = lom.segment_piston();
println!("Segment piston:");
sp.chunks(7).enumerate().for_each(|(k, sp)| println!(" - S{}: {:.0?}nm", k + 1, sp) );
Dependencies
~7–23MB
~340K SLoC