Non linear stiffness with a curve

Davide_21943
Davide_21943 Altair Community Member
edited November 2021 in Community Q&A

Hi,

I'm trying to create a non linear spring by setting a curve for k variation.

I just want that k is not constant and goes from 50 to 100 N/m, but the simulation doesn't work. The displacement of the ball is not real. 

 

Answers

  • Praful
    Praful
    Altair Employee
    edited November 2021

    Hi Davide - When the spring type is changed from Linear to any other forms such as curve/Spline3D/Expression, the spring is represented as an action-reaction force. So, the curve data should represent a Force-Deflection curve and not a Stiffness-Deflection curve.

    I have modified your model (attached here) to define a non-linear curve. You could use a different profile as needed. I have also added outputs to measure the force and the deflection that can be plotted in HyperGraph.

    Hope this helps. Kindly let know if you have further questions.

    Regards

    praful

     

  • Davide_21943
    Davide_21943 Altair Community Member
    edited November 2021

    Hi ppraf, thanks for the reply and the example file. 

    So you defined two vectors where y vector contains the Force values (ex. -5000 N) and x vector contains the deflections (ex. -10 m). Your k curve has these values: 500 N/m, 450, 400,.., 50, 0, 50, 100,.. and so on. 

    In the properties of the spring damper element the independent variable is

    l0 - l(x) = deflection

    where l0 is the free length of the spring and l(x) is the length that the spring will assume during the simulation. Is that right?

    In the output requests what is I marker? The Force or the displacement isn't evaluated in the Global reference frame ? I don't understand this detail. 

    If I want to plot the stiffness - time curve how should I proceed? I thought to create an output request with an expression. In F2 I would write "force/displacement". 
    I tried this: `o_non_linear_spring_force.idstring/o_spring_deflection.idstring` but It doesn't work. 

  • Praful
    Praful
    Altair Employee
    edited November 2021

    Hi ppraf, thanks for the reply and the example file. 

    So you defined two vectors where y vector contains the Force values (ex. -5000 N) and x vector contains the deflections (ex. -10 m). Your k curve has these values: 500 N/m, 450, 400,.., 50, 0, 50, 100,.. and so on. 

    In the properties of the spring damper element the independent variable is

    l0 - l(x) = deflection

    where l0 is the free length of the spring and l(x) is the length that the spring will assume during the simulation. Is that right?

    In the output requests what is I marker? The Force or the displacement isn't evaluated in the Global reference frame ? I don't understand this detail. 

    If I want to plot the stiffness - time curve how should I proceed? I thought to create an output request with an expression. In F2 I would write "force/displacement". 
    I tried this: `o_non_linear_spring_force.idstring/o_spring_deflection.idstring` but It doesn't work. 

    Hi Davide - Your understanding is right.

    I Marker - In MotionSolve parlance, when an action reaction element (Joint/Bushing/Force etc..) is involved, it is common to refer the action body as I body and reaction body as J body. For these elements, a marker (coordinate system) exists at the point of application. So the marker corresponding to I body is referred as I Marker.

    In is case of spring damper, the Body 1 in the spring damper panel becomes the I body and Body 2 becomes J Body. These terminologies are rather used interchangeably.

    So, the choice of I marker in the Output panel creates an output related to that spring damper for the I marker portion only. the output in this case represents force acting on Body 1/I Body. There is a choice to request output on J marker or both. The output is measured in the reference marker chosen. In this case Global Frame.

    image

     

    Plotting Stiffness

    You can create an output request of type expression by using the MotionSolve Force and deflection functions.

    image

    In the above image, what you see FM() and DM() are MotionSolve functions measuring force and displacements respectively between 2 markers at run time.

    MotionView provides a convenience of defining these functions using the entity itself as shown above as {sd_0.FM} and {sd_0.DM}.

    Note that this force/deflection provides a static stiffness based on absolute force and deformation. It does not represent the dynamic stiffness (instantaneous stiffness) dF/dX

    One way you could plot this is to first plot the Force v/s deflection in HyperGraph and then create another curve using the derivative function

    image

    image

    c1 in the above expression refers to first curve created in the plot window.

    Regards

    Praful