#telescope #transformation #optical #linear #giant #magellan #geometric

bin+lib gmt-lom

Giant Magellan Telescope Geometric Linear Optical Transformations

17 releases (8 stable)

2.3.0 Jan 5, 2024
2.2.1 Dec 23, 2023
2.1.0 Jul 1, 2023
1.1.0 Jan 13, 2023
0.1.2 Dec 19, 2021

#233 in Science

Download history 6/week @ 2023-12-18 13/week @ 2024-01-01 6/week @ 2024-01-15 3/week @ 2024-01-22 19/week @ 2024-02-19 59/week @ 2024-02-26 8/week @ 2024-03-04 44/week @ 2024-03-11 28/week @ 2024-03-18 88/week @ 2024-04-01

162 downloads per month
Used in 7 crates (6 directly)

MIT license

68KB
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

~6–25MB
~339K SLoC