Spring
In
CindyLab a spring is very similar to a
Rubber Band. A spring is constructed by a press/drag/release sequence as in
Add a Line mode. If the endpoints of the spring segment are not already present in the drawing, free mass-objects will be added. A spring causes forces to act on its two endpoints. Unlike rubber bands, springs have a resting length at which the force is zero. If the distance between the two endpoints is smaller than the resting length, the force will be repulsive. If it is larger than the resting length, the force will be attractive. The force is calculated by the formula
force = springconstant · |length – restlength|
|
Here |
x| denotes the absolute value of
x,
springconstant is a characteristic constant of the spring that can be adjusted in the inspector,
restlength is the resting length of the spring, and
length is the distance between the two points. Springs are very powerful objects that admit many variations via the inspector. So we will first have a look at the inspector before we discuss the various possibilities for defining a spring.
Inspecting Springs
The spring inspector comes with a great variety of possibilities for modification. We will discuss these modifications one by one.
 |
The spring inspector |
Spring Strength
The spring strength slider helps in adjusting the value of
springconstant. No matter what kind of interaction is modeled by the spring, the
springconstant acts as a factor by which the final force is multiplied. Thus setting this slider to a value of zero is equivalent to removing the spring from the configuration.
Spring Type
In
CindyLab all interactions between pairs of points are internally modeled as springs. Thus it is simple to switch between the different types of interaction. This can be done by choosing the
springtype in the inspector. Currently, there are four different types of interaction implemented. Each of them comes with a specific behavior (and formula) for the spring.
The four types are defined as follows:
rubber band: For this spring type it is assumed that the spring has a rest length of zero. Thus the force between the two masses is always attractive. Its absolute value is calculated by the formula
force = springconstant ∗ length.
|
This type is the default spring type when a
Rubber Band is added.
Spring: For this spring type it is assumed that the spring has a positive resting length. Thus the force between the two masses will be attractive if the two masses are farther apart than the resting length. It will be repulsive if they are closer than the resting length. The absolute value of the force is calculated by the formula
force = springconstant ∗ (length – restlength)
|
This type is the default type when a spring is added.
Newton force: This spring type models the gravitational attraction between two bodies. This force depends on the masses of the bodies and the distance between them. It is always attractive. The absolute value of the force is calculated by the formula
force = springconstant ∗ mass1 ∗ mass2 / dist²
|
Coulomb force: This spring type models the interaction between electrically charged particles. This force depends on the charges of the particles and on the distance between them. It is attractive if the charges have opposite signs and repulsive otherwise. The absolute value of the force is calculated by the formula
force = springconstant * charge1 * charge2 / dist²
|
This type is the default spring type when a
Coulomb Force is added.
Restlength
The two items
Restlength from picture and
Length at rest are relevant only if the spring has a resting length.
If
Restlength from picture is checked, then the resting length of the spring is defined to be the length of the spring in the drawing when the simulation is started. Thus in this case, a single spring with two mass-objects not otherwise connected at the endpoints exerts no force on the masses.
If this box is not checked, the spring's resting length will be defined by the
Length at rest value in the inspector.
Spring Actuation
The two items
Amplitude and
Phase will be relevant only if the spring has a resting length. In this case,
CindyLab provides the possibility to vary the resting length periodically in time. The resting length is then modulated by a sine function, causing it to become periodically longer and shorter.
The amplitude of the resting length variation can be adjusted by the
Amplitude slider. The phase of the vibration with respect to the other springs can be adjusted by the
Phase slider. The speed of the oscillation is globally adjusted in the
environment inspector.
Examples
Due to their programmatic flexibility, springs can be used in many different circumstances. Here we will present just a few examples and pictures that exemplify the use of springs.
A Bridge
The first example shows a network of springs that simulates the behavior of a bridge. All springs in this example are used with the default physical setup. However, the appearance of the springs has been slightly altered. Usually, springs are rendered as wiggly objects. This feature can be turned off by the
render button in the inspector. Furthermore,
CindyScript code was added to change the color of the springs according to their interior tension.
 |
A bridge constructed with springs |
Double Pendulum
The next example shows the chaotic movement of a double pendulum. Here two springs are connected and one endpoint is fixed to the ground plane. The
springconstant is set to a relatively high value so that the springs behave nearly like rigid rods. The picture shows the movement of this double pendulum under the influence of gravity.
 |
The chaotic motion of a double pendulum |
Two-Body Movement
The next pictures show two mass particles with initial velocities and their behavior under gravitational forces. For this example, the type of the spring was set to
Newton's law. The two mass particles simulate a system of two stars that orbit each other.
 | |
 |
Two instances of two-body motion
|
Springs and CindyScript
Like any
CindyLab object, a spring provides several fields that can be read and very often set by
CindyScript. The following list shows the accessible fields for springs:
Name | Writeable | Type | Purpose
|
l | no | real | current length of the spring
|
lrest | yes | real | resting length of the spring
|
ldiff | no | real | current length difference to the resting length
|
potential | no | real | the potential energy of the spring
|
pe | no | real | the potential energy of the spring
|
strength | yes | real | the spring constant
|
amplitude | yes | real | the amplitude of actuation
|
phase | yes | real | the phase of actuation
|
simulate | yes | bool | turn on/off simulation for this spring
|