LIBRARY
Examples.Damper
Demonstrate the use of damper models.
Replicates the structure of Modelica.Mechanics.Translational.Examples.Damper.
Three parallel systems compare different damping configurations, all starting with the same initial conditions (s=3 m, v=10 m/s, m=1 kg) connected to a wall at s0=4.5 m:
System 1 (top): mass1 → damper1(d=25) → fixed1. Pure velocity-dependent damping, exponential decay of velocity.
System 2 (middle): mass2 → [damper2(d=25) ‖ spring2(c=1, s_rel0=1)] → fixed2. Damper and spring in parallel, damped oscillation.
System 3 (bottom): mass3 → springDamper3(d=25, c=1, s_rel0=1) → fixed3. Single SpringDamper component, equivalent to system 2.
Usage
TranslationalComponents.Examples.Damper()
Behavior
Source
dyad
"""
Demonstrate the use of damper models.
Replicates the structure of Modelica.Mechanics.Translational.Examples.Damper.
Three parallel systems compare different damping configurations, all starting
with the same initial conditions (s=3 m, v=10 m/s, m=1 kg) connected to a
wall at s0=4.5 m:
**System 1 (top):** mass1 → damper1(d=25) → fixed1. Pure velocity-dependent
damping, exponential decay of velocity.
**System 2 (middle):** mass2 → [damper2(d=25) ‖ spring2(c=1, s_rel0=1)]
→ fixed2. Damper and spring in parallel, damped oscillation.
**System 3 (bottom):** mass3 → springDamper3(d=25, c=1, s_rel0=1) → fixed3.
Single SpringDamper component, equivalent to system 2.
"""
example component Damper
"Mass for system 1"
mass1 = TranslationalComponents.Components.Mass(L = 1, m = 1, s = initial 3, v = initial 10) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 100, "y1": 20, "x2": 200, "y2": 120, "rot": 0}
},
"tags": []
}
}
"Pure damper"
damper1 = TranslationalComponents.Components.Damper(d = 25) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 440, "y1": 20, "x2": 540, "y2": 120, "rot": 0}
},
"tags": []
}
}
"Wall for system 1"
fixed1 = TranslationalComponents.Components.Fixed(s0 = 4.5) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 850, "y1": 170, "x2": 950, "y2": 270, "rot": 0}
},
"tags": []
}
}
"Mass for system 2"
mass2 = TranslationalComponents.Components.Mass(L = 1, m = 1, s = initial 3, v = initial 10) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 100, "y1": 300, "x2": 200, "y2": 400, "rot": 0}
},
"tags": []
}
}
"Damper in parallel with spring"
damper2 = TranslationalComponents.Components.Damper(d = 25) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 470, "y1": 300, "x2": 570, "y2": 400, "rot": 0}
},
"tags": []
}
}
"Spring in parallel with damper"
spring2 = TranslationalComponents.Components.Spring(s_rel0 = 1, c = 1) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 470, "y1": 450, "x2": 570, "y2": 550, "rot": 0}
},
"tags": []
}
}
"Wall for system 2"
fixed2 = TranslationalComponents.Components.Fixed(s0 = 4.5) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 850, "y1": 500, "x2": 950, "y2": 600, "rot": 0}
},
"tags": []
}
}
"Mass for system 3"
mass3 = TranslationalComponents.Components.Mass(L = 1, m = 1, s = initial 3, v = initial 10) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 120, "y1": 720, "x2": 220, "y2": 820, "rot": 0}
},
"tags": []
}
}
"Combined spring-damper"
spring_damper3 = TranslationalComponents.Components.SpringDamper(s_rel0 = 1, d = 25, c = 1) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 460, "y1": 720, "x2": 560, "y2": 820, "rot": 0}
},
"tags": []
}
}
"Wall for system 3"
fixed3 = TranslationalComponents.Components.Fixed(s0 = 4.5) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 860, "y1": 800, "x2": 960, "y2": 900, "rot": 0}
},
"tags": []
}
}
relations
# System 1: mass → damper → fixed
connect(mass1.flange_b, damper1.flange_a) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
connect(damper1.flange_b, fixed1.flange) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 900, "y": 70}], "E": 2}],
"renderStyle": "standard"
}
}
# System 2: mass → [damper ‖ spring] → fixed
connect(mass2.flange_b, damper2.flange_a) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
connect(damper2.flange_a, spring2.flange_a) {
"Dyad": {
"edges": [{"S": 1, "M": [], "E": -1}, {"S": -1, "M": [{"x": 270, "y": 500}], "E": 2}],
"junctions": [{"x": 270, "y": 350}],
"renderStyle": "standard"
}
}
connect(damper2.flange_b, spring2.flange_b) {
"Dyad": {
"edges": [
{"S": 1, "M": [], "E": -1},
{"S": -1, "M": [{"x": 740, "y": 350}, {"x": 740, "y": 500}], "E": 2}
],
"junctions": [{"x": 570, "y": 350}],
"renderStyle": "standard"
}
}
connect(damper2.flange_b, fixed2.flange) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 900, "y": 350}], "E": 2}],
"renderStyle": "standard"
}
}
# System 3: mass → springDamper → fixed
connect(mass3.flange_b, spring_damper3.flange_a) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
connect(spring_damper3.flange_b, fixed3.flange) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 910, "y": 770}], "E": 2}],
"renderStyle": "standard"
}
}
metadata {
"Dyad": {
"icons": {"default": "dyad://TranslationalComponents/Example.svg"},
"tests": {
"case1": {
"stop": 1,
"atol": {
"mass1.s": 0.001,
"mass1.v": 0.001,
"mass2.s": 0.001,
"mass2.v": 0.001,
"mass3.s": 0.001,
"mass3.v": 0.001
},
"expect": {
"final": {
"mass1.s": 3.4,
"mass1.v": 0,
"mass2.s": 3.38552676,
"mass2.v": -0.01544582,
"mass3.s": 3.38552676,
"mass3.v": -0.01544582
},
"signals": [
"mass1.s",
"mass1.v",
"mass2.s",
"mass2.v",
"mass3.s",
"mass3.v",
"damper1.s_rel",
"damper1.v_rel",
"damper2.s_rel",
"damper2.v_rel",
"spring_damper3.s_rel",
"spring_damper3.v_rel"
]
}
}
}
}
}
endFlattened Source
dyad
"""
Demonstrate the use of damper models.
Replicates the structure of Modelica.Mechanics.Translational.Examples.Damper.
Three parallel systems compare different damping configurations, all starting
with the same initial conditions (s=3 m, v=10 m/s, m=1 kg) connected to a
wall at s0=4.5 m:
**System 1 (top):** mass1 → damper1(d=25) → fixed1. Pure velocity-dependent
damping, exponential decay of velocity.
**System 2 (middle):** mass2 → [damper2(d=25) ‖ spring2(c=1, s_rel0=1)]
→ fixed2. Damper and spring in parallel, damped oscillation.
**System 3 (bottom):** mass3 → springDamper3(d=25, c=1, s_rel0=1) → fixed3.
Single SpringDamper component, equivalent to system 2.
"""
example component Damper
"Mass for system 1"
mass1 = TranslationalComponents.Components.Mass(L = 1, m = 1, s = initial 3, v = initial 10) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 100, "y1": 20, "x2": 200, "y2": 120, "rot": 0}
},
"tags": []
}
}
"Pure damper"
damper1 = TranslationalComponents.Components.Damper(d = 25) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 440, "y1": 20, "x2": 540, "y2": 120, "rot": 0}
},
"tags": []
}
}
"Wall for system 1"
fixed1 = TranslationalComponents.Components.Fixed(s0 = 4.5) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 850, "y1": 170, "x2": 950, "y2": 270, "rot": 0}
},
"tags": []
}
}
"Mass for system 2"
mass2 = TranslationalComponents.Components.Mass(L = 1, m = 1, s = initial 3, v = initial 10) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 100, "y1": 300, "x2": 200, "y2": 400, "rot": 0}
},
"tags": []
}
}
"Damper in parallel with spring"
damper2 = TranslationalComponents.Components.Damper(d = 25) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 470, "y1": 300, "x2": 570, "y2": 400, "rot": 0}
},
"tags": []
}
}
"Spring in parallel with damper"
spring2 = TranslationalComponents.Components.Spring(s_rel0 = 1, c = 1) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 470, "y1": 450, "x2": 570, "y2": 550, "rot": 0}
},
"tags": []
}
}
"Wall for system 2"
fixed2 = TranslationalComponents.Components.Fixed(s0 = 4.5) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 850, "y1": 500, "x2": 950, "y2": 600, "rot": 0}
},
"tags": []
}
}
"Mass for system 3"
mass3 = TranslationalComponents.Components.Mass(L = 1, m = 1, s = initial 3, v = initial 10) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 120, "y1": 720, "x2": 220, "y2": 820, "rot": 0}
},
"tags": []
}
}
"Combined spring-damper"
spring_damper3 = TranslationalComponents.Components.SpringDamper(s_rel0 = 1, d = 25, c = 1) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 460, "y1": 720, "x2": 560, "y2": 820, "rot": 0}
},
"tags": []
}
}
"Wall for system 3"
fixed3 = TranslationalComponents.Components.Fixed(s0 = 4.5) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 860, "y1": 800, "x2": 960, "y2": 900, "rot": 0}
},
"tags": []
}
}
relations
# System 1: mass → damper → fixed
connect(mass1.flange_b, damper1.flange_a) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
connect(damper1.flange_b, fixed1.flange) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 900, "y": 70}], "E": 2}],
"renderStyle": "standard"
}
}
# System 2: mass → [damper ‖ spring] → fixed
connect(mass2.flange_b, damper2.flange_a) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
connect(damper2.flange_a, spring2.flange_a) {
"Dyad": {
"edges": [{"S": 1, "M": [], "E": -1}, {"S": -1, "M": [{"x": 270, "y": 500}], "E": 2}],
"junctions": [{"x": 270, "y": 350}],
"renderStyle": "standard"
}
}
connect(damper2.flange_b, spring2.flange_b) {
"Dyad": {
"edges": [
{"S": 1, "M": [], "E": -1},
{"S": -1, "M": [{"x": 740, "y": 350}, {"x": 740, "y": 500}], "E": 2}
],
"junctions": [{"x": 570, "y": 350}],
"renderStyle": "standard"
}
}
connect(damper2.flange_b, fixed2.flange) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 900, "y": 350}], "E": 2}],
"renderStyle": "standard"
}
}
# System 3: mass → springDamper → fixed
connect(mass3.flange_b, spring_damper3.flange_a) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
connect(spring_damper3.flange_b, fixed3.flange) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 910, "y": 770}], "E": 2}],
"renderStyle": "standard"
}
}
metadata {
"Dyad": {
"icons": {"default": "dyad://TranslationalComponents/Example.svg"},
"tests": {
"case1": {
"stop": 1,
"atol": {
"mass1.s": 0.001,
"mass1.v": 0.001,
"mass2.s": 0.001,
"mass2.v": 0.001,
"mass3.s": 0.001,
"mass3.v": 0.001
},
"expect": {
"final": {
"mass1.s": 3.4,
"mass1.v": 0,
"mass2.s": 3.38552676,
"mass2.v": -0.01544582,
"mass3.s": 3.38552676,
"mass3.v": -0.01544582
},
"signals": [
"mass1.s",
"mass1.v",
"mass2.s",
"mass2.v",
"mass3.s",
"mass3.v",
"damper1.s_rel",
"damper1.v_rel",
"damper2.s_rel",
"damper2.v_rel",
"spring_damper3.s_rel",
"spring_damper3.v_rel"
]
}
}
}
}
}
endTest Cases
Test Case case1
julia
pltjulia
pltjulia
pltjulia
pltjulia
pltjulia
pltjulia
pltjulia
pltjulia
pltjulia
pltjulia
pltjulia
pltRelated
Examples
Experiments
Analyses
Tests