Table of Contents

SPACAR Light FAQ

1. Number of beams per flexible element

For accurate results, it may be necessary to model flexible elements using more than one beam. Whether multiple beams are needed depends on the particular load case and the deformations involved.

Additional beams bring additional degrees of freedom, so that e.g.

This means that there’s no general answer to the number of beams that are needed per element. The approach to deciding on the number is to investigate if the quantity of interest (displacement, eigenfrequency, stress, stiffness, etc.) changes with an increasing number of beams. By increasing the number of beams until the quantity of interest doesn’t change anymore, it’s likely that the solution has converged.

The number of beams that are used per element can be set using the eprops(i).nbeams field. See the full syntax list.

For an entirely rigid element, there is no benefit to using more than one beam.

Specifics for the ME module 8 mechatronics project

2. Overconstraints could not be solved automatically

It is most likely that this error occurs because the model contains loops of elements that are completely rigid. See the figure below for an example.

Here, we tried extending the frame by adding a fifth node and two extra rigid elements (B and C). We did this so that we can attach some mass and apply a force on node 5. When running the model, an error now occurs: “Overconstraints could not be solved automatically; partial release information is provided in the output”.

The program is unable to deal with the loop that is created by the rigid elements A, B, and C. With flexible elements, it’s fine to create loops — it’s only rigid loops that should be avoided.

Solution

Remove one of the elements that make up the rigid loop. In the case of this example, we could remove either element B or C — and it would not change the model! Element A still provides the rigid connection between the leaf springs, and we only need B or C to extend the frame towards node 5 in a rigid manner. Visually, it may look a bit different, but structurally, the model is the same. Note that if you’re specifying a density for these rigid elements, the elements also contribute some mass and inertia, so, then, leaving out an element would change the model. In our example, we chose to have rigid elements with zero density (so, massless); we’re placing the relevant mass of the frame in node 5 (using node properties) instead.

Notes

Ground loop: In this example we created a loop using three rigid elements. Note that the fixed world could also be a part of the loop. For instance, modeling just a single rigid element with both nodes fixed would lead to the same error.

Automatic detection: If you’re running MATLAB R2021a (or higher), an extra feature will be available that tries to detect if rigid loops are present. If detected, the nodes involved in this loop will be listed, so that it should be easier to identify the loop.

Manual releases: An alternative solution is to provide appropriate releases for the deformations in the opt.rls field. This way, you can have loops of rigid elements. A future article may detail how to do that exactly …

3. Changing units

When the system parameters are expressed with very small numbers, you may receive the warning “Mass coefficients turn out to be very small” or the related error “Singular mass matrix”. Changing the units of the parameters involving the length dimension may help.

The example file that comes with SPACAR Light assumes meters as the default unit for length. To change to other units, your script should be adjusted in several places, depending on how each physical quantity scales with the length L:

In other words, if your script assumes meters as the unit for length, and you want to go to millimeters, the nodes matrix should be multiplied by 10^3. Likewise, the forces should be multiplied by 10^3, the moments by 10^6, the elasticity and shear modulus by 10^(-3), and all other quantities according to the list above.

Note that output values, so numbers you see in the out structure and in Spavisual, are affected similarly.

4. Bode plots

When making Bode plots of the system, in particular with a lot degrees of freedom (e.g. when eprops(i).nbeams is greater than 1), the default phase plot after doing bode(out.statespace) can be hard to interpret:

It can be helpful to go to Properties (after right-clicking) and the Options tab, and:

This way, multiples of 360 degrees are subtracted from the phase such that the phase at zero frequency is closest to 0 degrees. After zooming in on the phase:

Also see the example on producing transfer functions for tips on making Bode plots that look nicer.

5. Animated GIFs of mode shapes

For presentation purposes, it can be helpful to create an animated GIF of a visualization in Spavisual. You can make a GIF for a particular mode shape or for the general motion of the system. In the Spavisual window, deselect the 'Auto' checkbox for 'Movie name' in the left bottom corner. Select the 'Record movie' checkbox and enter a filename with the extension '.gif'. Then, after clicking the play button for the relevant slider, the animated GIF will be created in the current folder.

Depending on the purpose, you may want to change the appearance of the Spavisual axis in which the model is animated. Sometimes, it could be nice to disable the grid lines or disable the coordinate frame altogether. To do so, add some of the following lines:

% ... model definition ...
 
out = spacarlight(nodes, elements, nprops, eprops, opt);
ah = out.fighandle.Children(1); %get the handle of the Spavisual axis
axis(ah,'off'); %disable axis (the background in the GIF should become transparent!)
%grid(ah,'off'); %disable just the grid lines