Math for Mass Spring System

Problem Setup

  • Two nodes in 3D space
  • vector p1 = [x1, y1, z1]
  • vector p2 = [x2, y2, z2]
  • One spring
  • Stiffness ksk_s
  • Rest length L
  • Notation
  • p1p2||p1 - p2|| is the Euclidean norm 
  • VV is potential energy scalar
  • FF is the force vector
  • KK is the stiffness matrix

Spring Potential Energy

  • V=12ks(Δx)2V = \frac{1}{2}k_s (\Delta x)^2
  • where Δx=p1p2L\Delta x = ||p1 - p2|| - L

V=12ks(p1p2L)2V = \frac{1}{2}k_s(||p1 - p2|| - L)^2

  • Differentiate for forces:
  • V=212ks(p1p2L)(p1p2L)\nabla V = 2\frac{1}{2}k_s(||p1 - p2|| - L)*\nabla (||p1-p2|| -L)  by the chain rule

  • =V=212ks(p1p2L)(p1p20)= \nabla V = 2\frac{1}{2}k_s(||p1 - p2|| - L)*(\nabla||p1-p2|| - 0)

  • =ks(p1p2L)(p1p2)p1p2= k_s (||p1 - p2|| - L)\frac{(p1 - p2)}{||p1 - p2||} since v=vv\nabla ||v|| = \frac{v}{||v||}

Spring Force

F=V=ks(p1p2L)(p1p2)p1p2F = -\nabla V = k_s(||p1 - p2|| - L)\frac{(p1 - p2)}{||p1 - p2||}
  • where 
  • ks(p1p2L)k_s(||p1 - p2|| - L) is the magnitude of F
  • (p1p2)p1p2\frac{(p1 - p2)}{||p1 - p2||} is the direction of F
  • so 
  • F12=FF_{12} = -F force on p1p1 by p2p2
  • F21=FF_{21} = F force on p2p2 by p1p1

  • Differentiate for Stiffness
  • F=ks(p1p2L)(p1p2)p1p2\nabla F = \nabla k_s(||p1 - p2|| - L)\frac{(p1 - p2)}{||p1 - p2||} 

  • =ks((p1p2)L(p1p2)p1p2)= k_s(\nabla (p1 - p2) - L\nabla \frac{(p1 - p2)}{||p1 - p2||}) multiply and simplify

  • =ks(IL(p1p2(p1p2)(p1p2)p1p2p1p22))= k_s(I - L*(\frac{||p1 - p2||\nabla (p1 - p2) - (p1 - p2)\nabla||p1 - p2||}{||p1 - p2||^2}))  division rule

  • =ks(IL(Ip1p2(p1p2)(p1p2)Tp1p23))= k_s (I - L*(\frac{I}{||p1 - p2||} - \frac{(p1 - p2)(p1 - p2)^T}{||p1 - p2||^3}))  simplify

Stiffness: Jacobian of Forces

K=F=ks(IL(Ip1p2(p1p2)(p1p2)Tp1p23))K = \nabla F = k_s (I - L*(\frac{I}{||p1 - p2||} - \frac{(p1 - p2)(p1 - p2)^T}{||p1 - p2||^3}))

  • so
  • K11=KK_{11} = -K
  • K12=KK_{12} = K
  • K21=KK_{21} = K