Parametric Structural Mechanics Study with Imported CAD Geometry

Parametric Structural Mechanics Study with Imported CAD Geometry

This tutorial builds on and continues the previous CAD and Gmsh file import and mesh generation tutorial. A parametric deformation and stress analysis of the imported fixed wrench and spanner CAD model will be performed with a number of different load configuration cases. The following five steps are all that is required to set up and solve this structural mechanics deformation example in FEATool using both the MATLAB GUI as well as the command line interface (CLI).

1. New Model and Grid Import from External File

Having the previously generated Gmsh grid, the first step is to start a new 3D model with the Linear Elasticity physics mode selected. As an external grid will be imported it is not necessary to create a geometry (FEATool geometries are only used by the built-in gridgen function for meshing and grid generation).

Switch to Grid mode and import the spanner.msh Gmsh grid file (click on the link to download) into the FEATool GUI by selecting the Import Grid > Gmsh Format option found in the Grid menu.

FEATool and MATLAB Gmsh Mesh and Grid Import

2. Equation Settings

Switching to Equation mode automatically opens the Equation Settings dialog box. There the material parameters can be prescribed, in this case a Poisson ratio of 0.29, and modulus of elasticity of 190e3 N/mm is used, which corresponds to tool chromium-vanadium grade steel alloy (scaled to mm units since the geometry is given in millimeters, to convert to meter units one can scale the grid vertex coordinates as fea.grid.p = fea.grid.p*1e-3; ).

FEATool and MATLAB CAD Import Equation Settings

3. Boundary Conditions

Switch to Boundary mode to prescribe loads and displacements. First, select all boundaries in the Boundary Settings dialog box, prescribe zero Edge loads in all directions, and press Apply. This will set all boundaries free by default (the Ctrl+a key combination can be used to select all items in list selection boxes such as for geometry objects, boundaries, and subdomains).

For this model the flat surfaces at the front fork are assumed to be fixed (by wrapping around an fixed and immobile bolt). To do this select boundaries 11 and 14, and choose fixed displacement conditions in all directions.

Lastly, select boundary 1 and enter the force expression -1000/(6*80)*(y>140) for the Edge load, x-dir. to apply a pulling force of 1000 N over an area of 6*80 mm at the top half of the handle (y > 140 mm). Here the switch expression y>140 will evaluate to 1 if true and 0 if false, and in this way it is possible to localize and activate equation and boundary coefficients without having separate discrete boundaries or subdomains.

FEATool and MATLAB CAD Import Boundary Settings

4. Solution and Postprocessing

To solve the model change to Solve mode and press the = button. After the solution has been computed FEATool switches to Postprocessing mode and displays the default solution plot. Open the Postprocessing Settings dialog box and choose Surface Plot with the Total Displacement as surface expression. As can be seen below the maximum displacement in this case is about 2.5 mm towards the ring end of the wrench.

FEATool and MATLAB CAD Import Displacement Study

5. Parametric Study

In order to perform a parametric study, the model can be saved as a MATLAB m-file script using the Save As M-Script Model… option found in the File menu. The script can be opened and edited in a text editor.

In the following the model has been set up and changed to shift the load from the strong in-plane x-direction to the weaker lateral z-direction by introducing the parameter frac. For postprocessing a deformed grid will be computed and displayed.

% Fraction of lateral to inline force distribution 0..1
frac = linspace(0,1,200);

% Import Gmsh CAD grid.
fea.sdim = {'x','y','z'};
fea.grid = impexp_gmsh( 'spanner.msh', 'import' );

% Add 3D solid linear elasticity physics mode
% and define material parameters.
fea = addphys( fea, @linearelasticity );
fea.phys.el.eqn.coef{1,end} = { 0.29  };
fea.phys.el.eqn.coef{2,end} = { 190e3 };

% Set all boundaries to no load per default.
n_bdr  = max(fea.grid.b(3,:));
bc_sel = cell(3,n_bdr);
[bc_sel{:}] = deal(0);

% Fix all displacements on boundaries 11 and 14.
[bc_sel{:,[11 14]}] = deal(1);
fea.phys.el.bdr.coef{5} = bc_sel;


% Main loop.
fea = parsephys(fea);
fea = parseprob(fea);
for i=1:length(frac)

  % Split forces in x/z-directions according to frac.
  fea.bdr.n{1}{1} = ['-',num2str((1-frac(i))*1000/(6*80)),'*(y>140)'];
  fea.bdr.n{3}{4} = [    num2str(   frac(i) *1000/(6*80)),'*(y>140)'];

  % Solve problem.
  fea.sol.u = solvestat( fea );

  % Create fea struct with displaced grid.
  dp = zeros(size(fea.grid.p));
  for j=1:3
    dp(j,:) = 2*evalexpr( fea.dvar{j}, fea.grid.p, fea );
  end
  fea_disp = fea;
  fea_disp.grid.p = fea_disp.grid.p + dp;

  % Plot deformed object colored by the total displacement.
  clf
  postplot( fea_disp, 'surfexpr', 'sqrt(u^2+v^2+w^2)', ...
            'colorbar', false, 'linewidth', 0.1 )
  view( [-60 20] ), axis off

  pause
end

FEATool and MATLAB CAD Import Parametric Study

After running the parametric script and looking at the results one can see that the maximum deformation has increased from 2.5 mm with in-plane loading to almost 4 cm with lateral plane loading. Although, this large deformation most certainly violates the linear elastic deformation assumption, it is still a useful example showing how easy and fast it is to define and set up automated parametric studies with FEATool and MATLAB m-file scripts.


The complete parametric structural mechanics study of a fixed spanner, including advanced postprocessing, can be downloaded from the following link (while the actual wrench Gmsh grid file can be downloaded from the link above).


Parametric Spanner MATLAB Script Model Example