TestNDelay Icon
Examples.TestNDelay
Test component that validates the NDelay component.
This component validates that a single NDelay block is equivalent to a chain of UnitDelay blocks.
Usage
DiscreteComponents.Examples.TestNDelay()
Variables
| Name | Description | Units |
|---|---|---|
ud1equalsnd | – | |
ud2equalsnd1 | – |
Behavior
13-element Vector{Symbolics.Equation}:
ud1equalsnd(t) ~ unitdelay₊y(t) == ndelay₊y(t)
ud2equalsnd1(t) ~ unitdelay1₊y(t) == ndelay1₊y(t)
connect(ramp.y(t), sampler.u(t))
connect(sampler.y(t), ndelay.u(t), ndelay1.u(t), unitdelay.u(t), periodicclock.y(t))
connect(unitdelay.y(t), unitdelay1.u(t))
connect(unitdelay1.y(t), unitdelay2.u(t))
ramp₊y(t) ~ ifelse(ramp₊start_time < t, ifelse(t < (ramp₊duration + ramp₊start_time), ramp₊offset + (ramp₊height*(-ramp₊start_time + t)) / ramp₊duration, ramp₊height + ramp₊offset), ramp₊offset)
sampler₊y(t) ~ Sample(InferredClock.InferredDiscrete(0))(sampler₊u(t))
unitdelay₊y(t) ~ Shift(t, -1)(unitdelay₊u(t))
unitdelay1₊y(t) ~ Shift(t, -1)(unitdelay1₊u(t))
unitdelay2₊y(t) ~ Shift(t, -1)(unitdelay2₊u(t))
ndelay₊y(t) ~ Shift(t, -2)(ndelay₊u(t))
ndelay1₊y(t) ~ Shift(t, -3)(ndelay1₊u(t))Source
"""
Test component that validates the NDelay component.
This component validates that a single `NDelay` block is equivalent to a chain of `UnitDelay` blocks.
"""
test component TestNDelay
ramp = BlockComponents.Sources.Ramp(duration = 10, height = 10) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": -50, "y1": 450, "x2": 50, "y2": 550, "rot": 0}
},
"tags": []
}
}
sampler = DiscreteComponents.Sampler() {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 90, "y1": 450, "x2": 190, "y2": 550, "rot": 0}
},
"tags": []
}
}
periodicclock = DiscreteComponents.PeriodicClock(dt = 1) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 90, "y1": 600, "x2": 190, "y2": 700, "rot": 0}
},
"tags": []
}
}
unitdelay = DiscreteComponents.UnitDelay() {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 250, "y1": 340, "x2": 350, "y2": 440, "rot": 0}
},
"tags": []
}
}
unitdelay1 = DiscreteComponents.UnitDelay() {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 380, "y1": 340, "x2": 480, "y2": 440, "rot": 0}
},
"tags": []
}
}
unitdelay2 = DiscreteComponents.UnitDelay() {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 510, "y1": 340, "x2": 610, "y2": 440, "rot": 0}
},
"tags": []
}
}
ndelay = DiscreteComponents.NDelay(n = 2) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 250, "y1": 530, "x2": 350, "y2": 630, "rot": 0}
},
"tags": []
}
}
ndelay1 = DiscreteComponents.NDelay(n = 3) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 250, "y1": 670, "x2": 350, "y2": 770, "rot": 0}
},
"tags": []
}
}
variable ud1equalsnd::Boolean
variable ud2equalsnd1::Boolean
relations
ud1equalsnd = unitdelay.y == ndelay.y
ud2equalsnd1 = unitdelay1.y == ndelay1.y
connect(ramp.y, sampler.u) {"Dyad": {"renderStyle": "standard", "edges": [{"S": 1, "E": 2, "M": []}]}}
connect(sampler.y, ndelay.u, ndelay1.u, unitdelay.u, periodicclock.y) {
"Dyad": {
"renderStyle": "standard",
"edges": [{"S": 1, "M": [{"x": 221, "y": 500}, {"x": 221, "y": 580}], "E": 2}]
}
}
connect(unitdelay.y, unitdelay1.u) {"Dyad": {"renderStyle": "standard", "edges": [{"S": 1, "E": 2, "M": []}]}}
connect(unitdelay1.y, unitdelay2.u) {"Dyad": {"renderStyle": "standard", "edges": [{"S": 1, "E": 2, "M": []}]}}
metadata {
"Dyad": {
"experiments": {},
"tests": {
"case1": {
"solver": "Auto",
"start": 0,
"stop": 10,
"params": {},
"initial": {},
"atol": {},
"rtol": {},
"abstol": 0.000001,
"reltol": 0.000001,
"expect": {
"initial": {},
"final": {},
"signals": ["ramp.y", "ndelay.y", "ndelay1.y", "unitdelay1.y", "unitdelay2.y"]
}
}
},
"labels": [
{
"label": "This chain of unit delays approximates the n-delay blocks",
"x": 430,
"y": 240,
"rot": 0,
"layer": "diagram",
"attrs": {
"fill": "black",
"font-size": "20",
"dominant-baseline": "central",
"text-anchor": "middle"
}
},
{
"label": "== ndelay",
"x": 430,
"y": 320,
"rot": 0,
"layer": "diagram",
"attrs": {
"fill": "black",
"font-size": "20",
"dominant-baseline": "central",
"text-anchor": "middle"
}
},
{
"label": "== ndelay1",
"x": 560,
"y": 320,
"rot": 0,
"layer": "diagram",
"attrs": {
"fill": "black",
"font-size": "20",
"dominant-baseline": "central",
"text-anchor": "middle"
}
}
],
"icons": {"default": "dyad://Dyad/Default.svg"},
"path": {},
"doc": {"behavior": true}
}
}
end
Flattened Source
"""
Test component that validates the NDelay component.
This component validates that a single `NDelay` block is equivalent to a chain of `UnitDelay` blocks.
"""
test component TestNDelay
ramp = BlockComponents.Sources.Ramp(duration = 10, height = 10) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": -50, "y1": 450, "x2": 50, "y2": 550, "rot": 0}
},
"tags": []
}
}
sampler = DiscreteComponents.Sampler() {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 90, "y1": 450, "x2": 190, "y2": 550, "rot": 0}
},
"tags": []
}
}
periodicclock = DiscreteComponents.PeriodicClock(dt = 1) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 90, "y1": 600, "x2": 190, "y2": 700, "rot": 0}
},
"tags": []
}
}
unitdelay = DiscreteComponents.UnitDelay() {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 250, "y1": 340, "x2": 350, "y2": 440, "rot": 0}
},
"tags": []
}
}
unitdelay1 = DiscreteComponents.UnitDelay() {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 380, "y1": 340, "x2": 480, "y2": 440, "rot": 0}
},
"tags": []
}
}
unitdelay2 = DiscreteComponents.UnitDelay() {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 510, "y1": 340, "x2": 610, "y2": 440, "rot": 0}
},
"tags": []
}
}
ndelay = DiscreteComponents.NDelay(n = 2) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 250, "y1": 530, "x2": 350, "y2": 630, "rot": 0}
},
"tags": []
}
}
ndelay1 = DiscreteComponents.NDelay(n = 3) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 250, "y1": 670, "x2": 350, "y2": 770, "rot": 0}
},
"tags": []
}
}
variable ud1equalsnd::Boolean
variable ud2equalsnd1::Boolean
relations
ud1equalsnd = unitdelay.y == ndelay.y
ud2equalsnd1 = unitdelay1.y == ndelay1.y
connect(ramp.y, sampler.u) {"Dyad": {"renderStyle": "standard", "edges": [{"S": 1, "E": 2, "M": []}]}}
connect(sampler.y, ndelay.u, ndelay1.u, unitdelay.u, periodicclock.y) {
"Dyad": {
"renderStyle": "standard",
"edges": [{"S": 1, "M": [{"x": 221, "y": 500}, {"x": 221, "y": 580}], "E": 2}]
}
}
connect(unitdelay.y, unitdelay1.u) {"Dyad": {"renderStyle": "standard", "edges": [{"S": 1, "E": 2, "M": []}]}}
connect(unitdelay1.y, unitdelay2.u) {"Dyad": {"renderStyle": "standard", "edges": [{"S": 1, "E": 2, "M": []}]}}
metadata {
"Dyad": {
"experiments": {},
"tests": {
"case1": {
"solver": "Auto",
"start": 0,
"stop": 10,
"params": {},
"initial": {},
"atol": {},
"rtol": {},
"abstol": 0.000001,
"reltol": 0.000001,
"expect": {
"initial": {},
"final": {},
"signals": ["ramp.y", "ndelay.y", "ndelay1.y", "unitdelay1.y", "unitdelay2.y"]
}
}
},
"labels": [
{
"label": "This chain of unit delays approximates the n-delay blocks",
"x": 430,
"y": 240,
"rot": 0,
"layer": "diagram",
"attrs": {
"fill": "black",
"font-size": "20",
"dominant-baseline": "central",
"text-anchor": "middle"
}
},
{
"label": "== ndelay",
"x": 430,
"y": 320,
"rot": 0,
"layer": "diagram",
"attrs": {
"fill": "black",
"font-size": "20",
"dominant-baseline": "central",
"text-anchor": "middle"
}
},
{
"label": "== ndelay1",
"x": 560,
"y": 320,
"rot": 0,
"layer": "diagram",
"attrs": {
"fill": "black",
"font-size": "20",
"dominant-baseline": "central",
"text-anchor": "middle"
}
}
],
"icons": {"default": "dyad://Dyad/Default.svg"},
"path": {},
"doc": {"behavior": true}
}
}
endTest Cases
Test Case case1
pltpltpltpltpltRelated
- Examples
- Experiments
- Analyses
- Tests