ParameterizedInterpolationExtrapolationTest
Tests parameterized interpolation with extrapolation on a mass-spring-damper system.
This component simulates a mass-spring-damper system where the applied force is obtained from time-series data using parameterized interpolation with constant extrapolation. The simulation runs beyond the data range (0 to 1) to verify that extrapolation correctly extends the boundary values for inputs outside the dataset range.
Usage
BlockComponents.ParameterizedInterpolationExtrapolationTest(m=1.0, c=10.0, d=2.0)
Parameters:
| Name | Description | Units | Default value |
|---|---|---|---|
input_file | – | "dyad://BlockComponents/data/interp_square_data.csv" | |
force_dataset | – | DyadData.DyadTimeseries(input_file, independent_var="ts", dependent_vars=["data"]) | |
m | kg | 1 | |
c | N/m | 10 | |
d | N.s/m | 2 |
Variables
| Name | Description | Units |
|---|---|---|
x | m | |
v | m/s | |
F_applied | N |
Behavior
Behavior of this component cannot be rendered because it includes path variables.
Source
dyad
"""
Tests parameterized interpolation with extrapolation on a mass-spring-damper system.
This component simulates a mass-spring-damper system where the applied force is obtained from
time-series data using parameterized interpolation with constant extrapolation. The simulation
runs beyond the data range (0 to 1) to verify that extrapolation correctly extends the boundary
values for inputs outside the dataset range.
"""
component ParameterizedInterpolationExtrapolationTest
# Create interpolation block with constant extrapolation
force_interp = BlockComponents.ParameterizedInterpolation(interpolation_type = BlockComponents.InterpolationType.LinearInterpolation(), extrapolation_type = BlockComponents.ExtrapolationType.Constant(), dataset = force_dataset)
# Parameters
parameter m::Mass = 1.0
parameter c::TranslationalSpringConstant = 10.0
parameter d::TranslationalDampingConstant = 2.0
# State variables
variable x::Position # Position of mass
variable v::Velocity # Velocity of mass
# Load force vs time data from file (data range: 0 to 1)
structural parameter input_file::String = "dyad://BlockComponents/data/interp_square_data.csv"
structural parameter force_dataset::DyadData.DyadTimeseries = DyadData.DyadTimeseries(input_file, independent_var = "ts", dependent_vars = ["data"])
variable F_applied::Force
relations
initial x = 0.0
initial v = 0.0
F_applied = force_interp.y
force_interp.u = time
# Kinematics
v = der(x)
# Dynamics: m*a = F_applied - c*x - d*v
# (spring force opposes displacement, damping opposes velocity)
m * der(v) = F_applied - c * x - d * v
metadata {
"Dyad": {
"icons": {"default": "dyad://BlockComponents/Example.svg"},
"tests": {"case1": {"stop": 1.5, "expect": {"signals": ["x"]}}},
"doc": {"behavior": false}
}
}
endFlattened Source
dyad
"""
Tests parameterized interpolation with extrapolation on a mass-spring-damper system.
This component simulates a mass-spring-damper system where the applied force is obtained from
time-series data using parameterized interpolation with constant extrapolation. The simulation
runs beyond the data range (0 to 1) to verify that extrapolation correctly extends the boundary
values for inputs outside the dataset range.
"""
component ParameterizedInterpolationExtrapolationTest
# Create interpolation block with constant extrapolation
force_interp = BlockComponents.ParameterizedInterpolation(interpolation_type = BlockComponents.InterpolationType.LinearInterpolation(), extrapolation_type = BlockComponents.ExtrapolationType.Constant(), dataset = force_dataset)
# Parameters
parameter m::Mass = 1.0
parameter c::TranslationalSpringConstant = 10.0
parameter d::TranslationalDampingConstant = 2.0
# State variables
variable x::Position # Position of mass
variable v::Velocity # Velocity of mass
# Load force vs time data from file (data range: 0 to 1)
structural parameter input_file::String = "dyad://BlockComponents/data/interp_square_data.csv"
structural parameter force_dataset::DyadData.DyadTimeseries = DyadData.DyadTimeseries(input_file, independent_var = "ts", dependent_vars = ["data"])
variable F_applied::Force
relations
initial x = 0.0
initial v = 0.0
F_applied = force_interp.y
force_interp.u = time
# Kinematics
v = der(x)
# Dynamics: m*a = F_applied - c*x - d*v
# (spring force opposes displacement, damping opposes velocity)
m * der(v) = F_applied - c * x - d * v
metadata {
"Dyad": {
"icons": {"default": "dyad://BlockComponents/Example.svg"},
"tests": {"case1": {"stop": 1.5, "expect": {"signals": ["x"]}}},
"doc": {"behavior": false}
}
}
endTest Cases
Test Case case1
julia
pltRelated
Examples
Experiments
Analyses