1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
/// GMT primary mirror
pub mod gmt_m1 {
    use gmt_dos_actors::UID;
    /// M1 Rigid Body Motions
    #[derive(UID)]
    pub enum M1RigidBodyMotions {}
    /// M1 Mode Shapes
    #[derive(UID)]
    pub enum M1ModeShapes {}
    /// M1 Hardpoints Forces
    #[derive(UID)]
    pub enum M1HardpointForces {}
    /// M1 Hardpoints Nodes
    #[derive(UID)]
    pub enum M1HardpointNodes {}
    /// M1 Segment Actuator Forces
    #[derive(UID)]
    pub enum M1SActuatorForces {}
    /// Segment IO
    pub mod segment {
        use gmt_dos_actors::{UniqueIdentifier, UID};
        /// Force andf moment at center of gravity
        pub enum BarycentricForce<const ID: u8> {}
        impl<const ID: u8> UniqueIdentifier for BarycentricForce<ID> {
            type DataType = Vec<f64>;
        }
        /// Rigid body motion (Tx,Ty,Tz,Rx,Ry,Rz)
        pub enum RBM<const ID: u8> {}
        impl<const ID: u8> UniqueIdentifier for RBM<ID> {
            type DataType = Vec<f64>;
        }
        /// Hardpoints displacements [cell,mirror]
        pub enum HardpointsMotion<const ID: u8> {}
        impl<const ID: u8> UniqueIdentifier for HardpointsMotion<ID> {
            type DataType = Vec<f64>;
        }
        /// Hardpoints forces
        pub enum HardpointsForces<const ID: u8> {}
        impl<const ID: u8> UniqueIdentifier for HardpointsForces<ID> {
            type DataType = Vec<f64>;
        }
        /// Actuators applied forces
        pub enum ActuatorAppliedForces<const ID: u8> {}
        impl<const ID: u8> UniqueIdentifier for ActuatorAppliedForces<ID> {
            type DataType = Vec<f64>;
        }
        /// Actuators command forces
        pub enum ActuatorCommandForces<const ID: u8> {}
        impl<const ID: u8> UniqueIdentifier for ActuatorCommandForces<ID> {
            type DataType = Vec<f64>;
        }
    }
}
/// GMT secondary mirror
pub mod gmt_m2 {
    use gmt_dos_actors::UID;
    /// M2 Rigid Body Motions
    #[derive(UID)]
    pub enum M2RigidBodyMotions {}
    /// M2 Mode Shapes
    #[derive(UID)]
    pub enum M2ModeShape {}
    /// M2 Positioner Forces
    #[derive(UID)]
    pub enum M2PositionerForces {}
    /// M2 Positioner Nodes Displacements
    #[derive(UID)]
    pub enum M2PositionerNodes {}
    pub mod fsm {
        use gmt_dos_actors::UID;
        /// M2 FSM Piezo-Stack Actuators Forces
        #[derive(UID)]
        pub enum M2FSMPiezoForces {}
        /// M2 FSM Piezo-Stack Actuators Node Displacements
        #[derive(UID)]
        pub enum M2FSMPiezoNodes {}
        /// M2 FSM Tip-Tilt Modes
        #[derive(UID)]
        pub enum M2FSMTipTilt {}
    }
    pub mod asm {
        use gmt_dos_actors::UID;
        /// M2 ASM Rigid Body Forces
        #[derive(UID)]
        pub enum M2ASMRigidBodyForces {}
        /// M2 ASM Cold Plate Forces
        #[derive(UID)]
        pub enum M2ASMColdPlateForces {}
        /// M2 ASM Face Sheet Forces
        #[derive(UID)]
        pub enum M2ASMFaceSheetForces {}
        /// M2 ASM Rigid Body Nodes
        #[derive(UID)]
        pub enum M2ASMRigidBodyNodes {}
        /// M2 ASM Cold Plate Nodes
        #[derive(UID)]
        pub enum M2ASMColdPlateNodes {}
        /// M2 ASM Face Sheet Nodes
        #[derive(UID)]
        pub enum M2ASMFaceSheetNodes {}
    }
}
/// Mount
pub mod mount {
    use gmt_dos_actors::UID;
    /// Mount Encoders
    #[derive(UID)]
    pub enum MountEncoders {}
    /// Mount Torques
    #[derive(UID)]
    pub enum MountTorques {}
    /// Mount set point
    #[derive(UID)]
    pub enum MountSetPoint {}
}
/// CFD wind loads
pub mod cfd_wind_loads {
    use gmt_dos_actors::UID;
    /// CFD Mount Wind Loads
    #[derive(UID)]
    pub enum CFDMountWindLoads {}
    /// CFD M1 Loads
    #[derive(UID)]
    pub enum CFDM1WindLoads {}
    /// CFD M2 Wind Loads
    #[derive(UID)]
    pub enum CFDM2WindLoads {}
}