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
dt–0.1

Behavior

11-element Vector{Symbolics.Equation}:
 connect(sine.y(t), sampler.u(t))
 connect(sampler.y(t), acc_syntactic.u(t), acc_graphical.u(t), clock.y(t))
 sine₊y(t) ~ ifelse(sine₊continuous, ifelse(t >= sine₊start_time, sin(sine₊phase + 6.283185307179586sine₊frequency*(-sine₊shift_time + t)), sin(sine₊phase + 6.283185307179586sine₊frequency*(-sine₊shift_time + sine₊start_time)))*sine₊amplitude, ifelse(t >= sine₊start_time, sin(sine₊phase + 6.283185307179586sine₊frequency*(-sine₊shift_time + t))*sine₊amplitude, 0.0)) + sine₊offset
 sampler₊y(t) ~ Sample(InferredClock.InferredDiscrete(0))(sampler₊u(t))
 acc_syntactic₊y(t) ~ Shift(t, -1)(acc_syntactic₊y(t)) + acc_syntactic₊u(t)
 connect(y(t), unitdelay.u(t))
 connect(unitdelay.y(t), add.u1(t))
 connect(u(t), add.u2(t))
 connect(add.y(t), y(t))
 acc_graphical₊unitdelay₊y(t) ~ Shift(t, -1)(acc_graphical₊unitdelay₊u(t))
 acc_graphical₊add₊y(t) ~ acc_graphical₊add₊k1*acc_graphical₊add₊u1(t) + acc_graphical₊add₊k2*acc_graphical₊add₊u2(t)

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.Sources.Sine(frequency = 1.0, amplitude = 1.0)
  "Samples the sine wave at each clock tick"
  sampler = DiscreteComponents.Sampler()
  "Periodic clock controlling the sampling rate"
  clock = DiscreteComponents.PeriodicClock(dt = 0.1)
  "Accumulator using clock syntax"
  acc_syntactic = AccumulatorSyntactic()
  "Accumulator using block diagram"
  acc_graphical = AccumulatorGraphical()
  structural parameter dt::Real = 0.1
relations
  connect(sine.y, sampler.u)
  connect(sampler.y, acc_syntactic.u, acc_graphical.u, clock.y)
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.Sources.Sine(frequency = 1.0, amplitude = 1.0)
  "Samples the sine wave at each clock tick"
  sampler = DiscreteComponents.Sampler()
  "Periodic clock controlling the sampling rate"
  clock = DiscreteComponents.PeriodicClock(dt = 0.1)
  "Accumulator using clock syntax"
  acc_syntactic = AccumulatorSyntactic()
  "Accumulator using block diagram"
  acc_graphical = AccumulatorGraphical()
  structural parameter dt::Real = 0.1
relations
  connect(sine.y, sampler.u)
  connect(sampler.y, acc_syntactic.u, acc_graphical.u, clock.y)
metadata {}
end


Test Cases

No test cases defined.

  • Examples
  • Experiments
  • Analyses