2.1.1 |
|
---|---|
2.1.0 |
|
1.0.3 |
|
0.1.22 |
|
0.1.8 |
|
#13 in #optical
241 downloads per month
2MB
5K
SLoC
Giant Magellan Telescope Dynamic Optical Simulation Actor Model
lib.rs
:
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
- client
Input/Outputs
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
The loop exits when one of the following error happens: ActorError::NoData, ActorError::DropSend, ActorError::DropRecv.
Sampling rates
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
.
The rates NI
or 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.
If NI>NO
, outputs are upsampled with a simple sample-and-hold for NI/NO
samples.
If NO>NI
, outputs are decimated by a factor NO/NI
For a 1000Hz simulation sampling frequency, the following table gives some examples of inputs/outputs sampling frequencies and rate:
Inputs [Hz] |
Ouputs [Hz] |
NI | NO | Upsampling | Decimation |
---|---|---|---|---|---|
1000 | 1000 | 1 | 1 | - | 1 |
1000 | 100 | 1 | 10 | - | 10 |
100 | 1000 | 10 | 1 | 10 | - |
500 | 100 | 2 | 10 | - | 5 |
100 | 500 | 10 | 2 | 5 | - |
Client
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)
Model
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.
Features
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
Dependencies
~6–24MB
~337K SLoC