LIBRARY
Continuous.Tests.DerivativeIntegratorTerminator ​
Test component that demonstrates the chained behavior of differentiation and integration of a sine signal.
This component connects a sine source through a derivative block to an integrator and finally to a terminator, demonstrating that differentiating and then integrating a signal approximately recovers the original signal. The derivative block approximates the mathematical operation d/dt, while the integrator performs the operation ∫dt. When applied in sequence to a sine wave, the output should theoretically match the input with some phase shift.
Usage ​
BlockComponents.Continuous.Tests.DerivativeIntegratorTerminator()
Behavior ​
Source ​
dyad
"""
Test component that demonstrates the chained behavior of differentiation and integration of a sine signal.
This component connects a sine source through a derivative block to an integrator and finally to a terminator,
demonstrating that differentiating and then integrating a signal approximately recovers the original signal.
The derivative block approximates the mathematical operation d/dt, while the integrator performs the operation ∫dt.
When applied in sequence to a sine wave, the output should theoretically match the input with some phase shift.
"""
test component DerivativeIntegratorTerminator
"Approximates the derivative of the input signal with configured gain and time constant"
derivative = BlockComponents.Continuous.Derivative(k = 1, T = 0.001) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 150, "y1": 20, "x2": 250, "y2": 120, "rot": 0}
}
}
}
"Integrates the input signal with specified gain"
integrator = BlockComponents.Continuous.Integrator(k = 1) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 280, "y1": 20, "x2": 380, "y2": 120, "rot": 0}
}
}
}
"Terminates the signal path, consuming the input without producing an output"
terminator = BlockComponents.Routing.Terminator() {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 410, "y1": 20, "x2": 510, "y2": 120, "rot": 0}
}
}
}
"Generates a sinusoidal signal with 1 Hz frequency and unit amplitude"
source = BlockComponents.Sources.Sine(amplitude = 1, frequency = 1) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 20, "y1": 20, "x2": 120, "y2": 120, "rot": 0}
}
}
}
relations
"Connects the sine wave output to the derivative block input"
connect(source.y, derivative.u) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
"Connects the derivative output to the integrator input"
connect(derivative.y, integrator.u) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
"Connects the integrator output to the terminator input"
connect(integrator.y, terminator.u) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
metadata {
"Dyad": {
"icons": {"default": "dyad://BlockComponents/Example.svg"},
"experiments": {},
"tests": {
"case1": {
"stop": 10,
"atol": {"integrator.y": 0.01, "terminator.u": 0.01},
"expect": {
"final": {"integrator.y": 0, "terminator.u": 0},
"signals": ["integrator.y", "terminator.u"]
}
}
}
}
}
endFlattened Source
dyad
"""
Test component that demonstrates the chained behavior of differentiation and integration of a sine signal.
This component connects a sine source through a derivative block to an integrator and finally to a terminator,
demonstrating that differentiating and then integrating a signal approximately recovers the original signal.
The derivative block approximates the mathematical operation d/dt, while the integrator performs the operation ∫dt.
When applied in sequence to a sine wave, the output should theoretically match the input with some phase shift.
"""
test component DerivativeIntegratorTerminator
"Approximates the derivative of the input signal with configured gain and time constant"
derivative = BlockComponents.Continuous.Derivative(k = 1, T = 0.001) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 150, "y1": 20, "x2": 250, "y2": 120, "rot": 0}
}
}
}
"Integrates the input signal with specified gain"
integrator = BlockComponents.Continuous.Integrator(k = 1) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 280, "y1": 20, "x2": 380, "y2": 120, "rot": 0}
}
}
}
"Terminates the signal path, consuming the input without producing an output"
terminator = BlockComponents.Routing.Terminator() {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 410, "y1": 20, "x2": 510, "y2": 120, "rot": 0}
}
}
}
"Generates a sinusoidal signal with 1 Hz frequency and unit amplitude"
source = BlockComponents.Sources.Sine(amplitude = 1, frequency = 1) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 20, "y1": 20, "x2": 120, "y2": 120, "rot": 0}
}
}
}
relations
"Connects the sine wave output to the derivative block input"
connect(source.y, derivative.u) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
"Connects the derivative output to the integrator input"
connect(derivative.y, integrator.u) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
"Connects the integrator output to the terminator input"
connect(integrator.y, terminator.u) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
metadata {
"Dyad": {
"icons": {"default": "dyad://BlockComponents/Example.svg"},
"experiments": {},
"tests": {
"case1": {
"stop": 10,
"atol": {"integrator.y": 0.01, "terminator.u": 0.01},
"expect": {
"final": {"integrator.y": 0, "terminator.u": 0},
"signals": ["integrator.y", "terminator.u"]
}
}
}
}
}
endTest Cases ​
Test Case case1 ​
julia
pltjulia
pltRelated ​
Examples
Experiments
Analyses
Tests