26 stable releases (5 major)
Uses new Rust 2024
| 5.3.1 | Apr 25, 2026 |
|---|---|
| 5.3.0 | Jan 8, 2026 |
| 5.2.0 | Oct 10, 2025 |
| 5.1.1 | May 19, 2025 |
| 0.1.0 | Mar 10, 2023 |
#829 in Simulation
Used in 7 crates
755KB
10K
SLoC
This module is used to build the state space model of the telescope structure
A state space model is represented by the structure [DiscreteModalSolver] that is created using the builder DiscreteStateSpace.
The transformation of the FEM continuous 2nd order differential equation
into a discrete state space model is performed by the [Exponential] structure
(for the details of the transformation see the exponential module ).
Example
The following example loads a FEM model and converts it into a state space model setting the sampling rate and the damping coefficients and truncating the eigen frequencies. A single input and a single output are selected.
use gmt_fem::FEM;
use gmt_dos_clients_fem::{DiscreteStateSpace, DiscreteModalSolver,
fem_io::{actors_inputs::OSSM1Lcl6F, actors_outputs::OSSM1Lcl}};
#[cfg(not(feature = "cuda"))]
use gmt_dos_clients_fem::solvers::Exponential;
#[cfg(feature = "cuda")]
use gmt_dos_clients_fem::solvers::{CuStateSpace, Exponential};
let sampling_rate = 1e3; // Hz
let fem = FEM::from_env()?;
#[cfg(not(feature = "cuda"))]
let mut fem_ss: DiscreteModalSolver<Exponential> = DiscreteStateSpace::from(fem)
.sampling(sampling_rate)
.proportional_damping(2. / 100.)
.ins::<OSSM1Lcl6F>()
.outs::<OSSM1Lcl>()
.build()?;
#[cfg(feature = "cuda")]
let mut fem_ss: DiscreteModalSolver<CuStateSpace> = DiscreteStateSpace::<Exponential>::from(fem)
.sampling(sampling_rate)
.proportional_damping(2. / 100.)
.ins::<OSSM1Lcl6F>()
.outs::<OSSM1Lcl>()
.build()?;
gmt_dos-clients_fem
A client for the GMT FEM crate gmt-fem.
Dependencies
~58MB
~1.5M SLoC