#67 in #telescope
60 downloads per month
Giant Magellan Telescope Dynamic Optical Simulation Actor Model
GMT Dynamic Optics Simulation Actors
The GMT DOS [Actor]s are the building blocks of the GMT DOS integrated model. Each [Actor] has 3 properties:
- input objects
- output objects
input objects are a collection of inputs and output objects are a collection of outputs. An actor must have at least either 1 input or 1 output. A pair of input/output is linked with a channel where the input is the receiver and the output is the sender. The same output may be linked to several inputs. channels are used to synchronize the [Actor]s.
Each [Actor] performs the same task, within an infinite loop, consisting of 3 operations:
- receiving the inputs if any
- updating the client state
- sending the outputs if any
All the inputs of an [Actor] are collected are the same rate
NI, and all the outputs are distributed at the same rate
NO, however both inputs and outputs rates may be different.
The inputs rate
NI is inherited from the rate
NO of outputs that the data is collected from i.e.
(next actor)::NI=(current actor)::NO.
NO are defined as the ratio between the simulation sampling frequency
[Hz] and the actor inputs or outputs sampling frequency
[Hz], it must be an integer ≥ 1.
NI>NO, outputs are upsampled with a simple sample-and-hold for
NO>NI, outputs are decimated by a factor
For a 1000Hz simulation sampling frequency, the following table gives some examples of inputs/outputs sampling frequencies and rate:
A client must be assigned to an [Actor] and the client must implement some of the following traits:
- write if the actor has some outputs,
- read if the actor has some inputs,
- update, this trait must always be implemented (but the default empty implementation is acceptable)
An integrated model is build as follows:
- select and instanciate the [clients]
- assign [clients] to [actor]s
- add outputs to the [Actor]s and connect them to inputs of other [Actor]s
- build a [model]
- Check, run and wait for the Model completion
For more detailed explanations and examples, check the [actor] and [model] modules.
The crates provides a minimal set of default functionalities that can be augmented by selecting appropriate features at compile time:
- windloads : enables the CFD loads [Actor] client
- fem : enables the GMT FEM [Actor] client
- mount-ctrl : enables the GMT mount controller [Actor] client
- m1-ctrl : enables the [Actor]s for the GMT M1 control system
- fsm : enables the [Actor]]s for the GMT M2 control system
- apache-arrow : enables the Arrow [Actor] for saving data into the Parquet data file format
- noise : enables the rand and rand_distr crates
- lom : enables the Linear Optical Model crate gmt-lom client
- ceo : enables the CEO binder/wrapper crate crseo client