# Strength of the spring constant

I am trying to use kangaroo 2 to simulate tension of a real fabric. In the 2.42 Release Notes, it says that on the Length component, the strength parameter

…can be assigned real quantitative meaning, by setting the strength to the
spring constant in N/m, calculated as EA/L, where E is the Young’s modulus of the material in Pa,
A is the cross-sectional area in m 2 , and L is the rest length in m.

My question is on the Length component, there is a strength parameter and a length parameter. Am I correct in understanding that I am supplying the strength parameter with:

(Young’s Modulus of the material)x(Cross-sectional area)

and then using the length parameter with no input so that it takes every length of my mesh as my “rest length in m”, with Rhino units set to meters?

I guess I am wondering if the component itself does the division of EA/L to get the spring constant or if I am misreading something.

Thank you in advance for any help.

As far as I can remember you have to calculate EA/L yourtself.

1 Like

You should input the actual spring constant EA/L into the strength parameter input.
The ‘Length’ input parameter is for the rest length.

Note that for many form-finding applications it can be useful to be able to set this rest length to zero, which is one reason it wouldn’t make sense to have the division by length happen automatically inside the component.

1 Like

Thank you for the response.

So if the entire EA/L is input in to strength, I am wondering how to calculate the “rest length” of a member. If I have a completely flat triangular subdivided mesh that is as uniform as RemeshByColour will make it:

E = Young’s modulus - grab it from a material database

A = Thickness of material in m^2 - would I make this (the average size of all triangles)x(thickness of my material) all in meters

L = average length of all members

My confusion is coming from the fact I don’t know how to input every member’s cross-section and length all at once.

I know taking the average doesn’t make things completely accurate but I think the difference is small enough to get close. I know kangaroo isn’t completely accurate to real world and I understand that Hooke’s law doesn’t apply after the yield strength of a material.

The spring is a 1 dimensional line-like object, like a cable or a strut with pin connections at the ends. It acts purely axially (i.e. along the direction of the line). For this it is an exact implementation of a simple linear elastic finite element and will give accurate results with material values.

You can approximate the behaviour of a sheet material by taking a surface mesh and treating its edges as 1d springs (in the same way a triangulated net of rubber bands would approximate the behaviour of a continuous rubber sheet), but it is a bit harder to assign material properties to a mesh like this in a quantitatively accurate way.
It’s not as simple as taking the area of the triangles, because these are not the cross sections.

For an isotropic sheet material and using the edges of an isotropic mesh as 1d elements, I think this approximation can be pretty close. I’d have to think a bit about how to convert stiffness values to do this. You could also tune the parameter by physically testing the real material and adjusting to match the measurements.

Ideally though here we’d use an actual 2d triangular element. This means the shape and area of the triangle is taken into account when calculating the stresses, instead of just the lengths of the edges. At the moment the only 2d mesh element like this in Kangaroo2 is the SoapFilm triangle, but this is the area equivalent of a zero-length spring, suited to finding accurate minimal surfaces, but not simulating sheet materials with non-zero rest area and shear resistance.
I did actually have a 2d constant strain triangle element and 3d constant strain tetrahedron back in Kangaroo1. They still need a bit of work and updating for Kangaroo2, but at some point I’ll finish and release them.

1 Like

Thank you for the excellent explanation. This cleared up my confusion.

1 Like