This example shows the static simulation of a parallel flexure guide which moves from -20 mm deflection up to 20 mm deflection in x-direction (the degree of freedom of the parallel flexure guide). Goal is to evaluate the translational stiffness in the supporting directions (y- and z-direction) of the end-effector over the range of motion.
After a successful simulation, SPACAR Light returns the compliance matrix of each node (per loadstep) - see the Full Syntax List. For a compliance matrix C
, it holds that u = C*f
. Vector u = [ux;uy;uz;rx;ry;rz]
consists of displacement components ux
, uy
, uz
(in the x
-,y
- and z
-direction, resp.) and rotation components rx
, ry
, rz
(about the x
-,y
- and z
-axis, resp.). Vector f = [fx;fy;fz;mx;my;mz]
consists of force components fx
, fy
, fz
(in the x
-,y
- and z
-direction, resp.) and moment components mx
, my
, mz
(about the x
-,y
- and z
-axis, resp.). For the 'global' compliance matrix CMglob
, the components are resolved in the global coordinate frame. This is the fixed (inertial) frame (which is also the axes frame indicated in SpaVisual with labels x
, y
and z
). For the 'local' compliance matrix CMloc
, the components are resolved in the local frame of the node (meaning that the coordinate frame rotates with the node). The stiffness matrix K
, for which f = K*u
, is the inverse of the compliance matrix C
.
The figure bellow provides the stiffness values over the entire range. It can be clearly seen that with increasing deflection, support stiffness drops. Furthermore, the initial stiffness in y-direction is infinite as only the out-of-plane bending and torsion deformations are considered.
An example file for providing the input for SPACAR Light is provided below.
clear clc % addpath('spacar') %point this to the spacar folder %% NODE POSITIONS nodes = [-50e-3 0.0 0 %node 1 -50e-3 100e-3 0 %node 2 0 100e-3 0 %node 3 50e-3 100e-3 0 %node 4 50e-3 0 0]; %node 5 %node 3 is only added so that the system properties can be evaluated right there %% ELEMENT CONNECTIVITY elements = [1 2 %element 1: 1st leafspring 2 3 %element 2: 1st half of rigid body 3 4 %element 3: 2nd half of rigid body 4 5]; %element 4: 2nd leafspring %% NODE PROPERTIES nprops(1).fix = true; %fix begin 1st leafspring nprops(5).fix = true; %fix end 2nd leafspring nprops(3).force = [0 -10 0];%load of 10N on node 3 y-direction nprops(3).mass = 1; %1kg mass at node 3 nprops(3).displ_initial_x = -20e-3; %initial displacement, node 3 -20mm moved in x nprops(3).displ_x = 40e-3; %additional displacement, node 3 40mm moved in x %% ELEMENT PROPERTIES eprops(1).elems = [1 4]; %both leafsprings eprops(1).emod = 210e9; %steel eprops(1).smod = 70e9; %steel eprops(1).dens = 7800; %steel eprops(1).dim = [30e-3 0.5e-3]; eprops(1).cshape = 'rect'; eprops(1).flex = 1:6; eprops(1).orien = [0 0 1]; eprops(1).nbeams = 2; %2 beams per element eprops(1).color = [0.8549 0.8588 0.8667]; eprops(2).elems = [2 3]; %rigid body eprops(2).dens = 2700; %aluminium eprops(2).dim = [30e-3 10e-3]; eprops(2).cshape = 'rect'; eprops(2).orien = [0 0 1]; eprops(2).color = [0.1686 0.3922 0.6627]; %% OPTIONAL opt.gravity = [0 0 -9.81]; %gravity in z-direction opt.loadsteps = 50; %additional load steps (default 10) to get %higher resolution plots %% DO SIMULATION out = spacarlight(nodes,elements,nprops,eprops,opt); %% POST PROCESS RESULTS %plot stiffness values over the range of motion Ky(:) = 1./out.node(3).CMglob(2,2,:); %y stiffness evaluated at node 3 Kz(:) = 1./out.node(3).CMglob(3,3,:); %z stiffness evaluated at node 3 x = out.node(3).p(1,:).*1000; %position of the end-effector in mm (.*1000) fig1 = figure; hold on plot(x,Ky) plot(x,Kz) grid minor xlabel('x-position [mm]') ylabel('y-stiffness [N/m]') fig1.Children.YScale = 'log'; %plot with log yscale fig1.Children.YLim = [1e4 1e10];