AccumulatorDemo AccumulatorDemo Icon

Examples.AccumulatorDemo

Test harness that samples a sine wave and accumulates it using both accumulator types.

This model demonstrates:

  • Generating a continuous sine wave
  • Sampling it at a fixed rate (10 Hz)
  • Accumulating the discrete samples using both syntactic and graphical approaches

Usage

DiscreteComponents.Examples.AccumulatorDemo()

Parameters:

NameDescriptionUnitsDefault value
dt0.1

Behavior

\[ \begin{equation} \left[ \begin{array}{c} \mathrm{connect}\left( sine_{+}y(t), sampler_{+}u(t) \right) \\ \mathrm{connect}\left( sampler_{+}y(t), acc_{syntactic_{+}u(t)} \right) \\ \mathrm{connect}\left( sampler_{+}y(t), acc_{graphical_{+}u(t)} \right) \\ \mathtt{sine.y}\left( t \right) = \mathtt{sine.offset} + \mathtt{sine.amplitude} ifelse\left( t \geq \mathtt{sine.start\_time}, \sin\left( \mathtt{sine.phase} + 6.2832 \mathtt{sine.frequency} \left( - \mathtt{sine.start\_time} + t \right) \right), \sin\left( \mathtt{sine.phase} \right) \right) \\ \mathrm{connect}\left( u(t), sampler_{+}u(t) \right) \\ \mathrm{connect}\left( sampler_{+}y(t), y(t), clock_{+}y(t) \right) \\ \frac{\mathrm{d} \mathtt{sampler.clock.dummy.dummy}\left( t \right)}{\mathrm{d}t} = 0 \\ \mathtt{sampler.sampler.y}\left( t \right) = Sample(ModelingToolkit.InferredClock.var"typeof(InferredClock)"(ModelingToolkit.InferredClock.var"##Storage#InferredDiscrete"(0)))\left( \mathtt{sampler.sampler.u}\left( t \right) \right) \\ \mathtt{acc\_syntactic.y}\left( t \right) = \mathtt{acc\_syntactic.u}\left( t \right) + Shift(t, -1)\left( \mathtt{acc\_syntactic.y}\left( t \right) \right) \\ \frac{\mathrm{d} \mathtt{acc\_syntactic.dummy.dummy}\left( t \right)}{\mathrm{d}t} = 0 \\ \mathrm{connect}\left( y(t), unitdelay_{+}u(t) \right) \\ \mathrm{connect}\left( unitdelay_{+}y(t), add_{+}u1(t) \right) \\ \mathrm{connect}\left( u(t), add_{+}u2(t) \right) \\ \mathrm{connect}\left( add_{+}y(t), y(t) \right) \\ \mathtt{acc\_graphical.unitdelay.y}\left( t \right) = Shift(t, -1)\left( \mathtt{acc\_graphical.unitdelay.u}\left( t \right) \right) \\ \frac{\mathrm{d} \mathtt{acc\_graphical.unitdelay.dummy.dummy}\left( t \right)}{\mathrm{d}t} = 0 \\ \mathtt{acc\_graphical.add.y}\left( t \right) = \mathtt{acc\_graphical.add.k1} \mathtt{acc\_graphical.add.u1}\left( t \right) + \mathtt{acc\_graphical.add.k2} \mathtt{acc\_graphical.add.u2}\left( t \right) \\ \end{array} \right] \end{equation} \]

Source

"""
Test harness that samples a sine wave and accumulates it using both accumulator types.

This model demonstrates:
- Generating a continuous sine wave
- Sampling it at a fixed rate (10 Hz)
- Accumulating the discrete samples using both syntactic and graphical approaches
"""
example component AccumulatorDemo
  "Continuous sine wave source at 1 Hz"
  sine = BlockComponents.Sine(frequency = 1.0, amplitude = 1.0)
  "Samples the sine wave at 0.1 second intervals"
  sampler = DiscreteComponents.PeriodicSampler(dt = 0.1)
  "Accumulator using clock syntax"
  acc_syntactic = AccumulatorSyntactic()
  "Accumulator using block diagram"
  acc_graphical = AccumulatorGraphical()
  structural dt::Real = 0.1
relations
  connect(sine.y, sampler.u)
  connect(sampler.y, acc_syntactic.u)
  connect(sampler.y, acc_graphical.u)
end
Flattened Source
"""
Test harness that samples a sine wave and accumulates it using both accumulator types.

This model demonstrates:
- Generating a continuous sine wave
- Sampling it at a fixed rate (10 Hz)
- Accumulating the discrete samples using both syntactic and graphical approaches
"""
example component AccumulatorDemo
  "Continuous sine wave source at 1 Hz"
  sine = BlockComponents.Sine(frequency = 1.0, amplitude = 1.0)
  "Samples the sine wave at 0.1 second intervals"
  sampler = DiscreteComponents.PeriodicSampler(dt = 0.1)
  "Accumulator using clock syntax"
  acc_syntactic = AccumulatorSyntactic()
  "Accumulator using block diagram"
  acc_graphical = AccumulatorGraphical()
  structural dt::Real = 0.1
relations
  connect(sine.y, sampler.u)
  connect(sampler.y, acc_syntactic.u)
  connect(sampler.y, acc_graphical.u)
metadata {}
end


Test Cases

No test cases defined.

  • Examples
  • Experiments
  • Analyses