- You can define the initial positions and speeds of the joints that connect the flexible beams.
- You can save the final state of a previous simulation and start a new simulation from that final state.
Is it possible to analyze the flexible multibody with hard initial position?
2 views (last 30 days)
Show older comments
Makoto Yoshioka
on 4 Nov 2021
Commented: Makoto Yoshioka
on 8 Nov 2021
I defined the 3 beams (all dimensions and materials are the same) with "Reduced Order Flexible Solid" , and connect them with revolute joints like Fig.1.
For one of the 3 revolute joints, I set the initial angle as follows.
Z revolute primitive
-> state targets
-> specify position target ✓
-> priority: high (desired), value=135[deg]
However, the definition of the coodinate system is set so that value = 0[deg] when the 2 connected beams are aligned in a straight line.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/789395/image.jpeg)
Fig.1 truss structure with flexible beams
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/789400/image.jpeg)
Fig.2 time history of the rotation angle (vertical: rotation angle [rad], horizontal: time [s])
Finally, just in case, I've shown the code for defining the flexible beam.
% flexible multibody dynamics
close all;
%% step.1 import STL file
stlFile = 'beam.STL';
figure
trisurf(stlread(stlFile));
axis equal
%% step.2 set interface coordinates
origins = [5 5 100
5 5 0];
%origins = origins / 1000; % 単位系: m
%% step.3 make meshes
% set parameters
% reference: https://kayo-corp.co.jp/common/pdf/pla_propertylist01.pdf
E = 3626*10e3;
nu = 0.3;
rho = 1.380*0.001;
feModel = createpde('structural', 'modal-solid');
importGeometry(feModel, stlFile);
structuralProperties(feModel, ...
'YoungsModulus',E, ...
'PoissonsRatio',nu, ...
'MassDensity',rho);
generateMesh(feModel, 'GeometricOrder','quadratic');
%% step.4 set mutlipoint constraints for interface coordinate systems
figure
pdegplot(feModel,'FaceLabels','on','FaceAlpha',0.5)
faceIDs = [5, 6];
numFrames = 2;
% emphasize the selected faces (faceIDs)
figure
pdemesh(feModel,'FaceAlpha',0.5)
hold on
colors = ['rgb' repmat('k',1,numFrames-3)];
assert(numel(faceIDs) == numFrames);
for k = 1:numFrames
nodeIdxs = findNodes(feModel.Mesh,'region','Face',faceIDs(k));
scatter3( ...
feModel.Mesh.Nodes(1,nodeIdxs), ...
feModel.Mesh.Nodes(2,nodeIdxs), ...
feModel.Mesh.Nodes(3,nodeIdxs), ...
'ok','MarkerFaceColor',colors(k))
scatter3( ...
origins(k,1), ...
origins(k,2), ...
origins(k,3), ...
80,colors(k),'filled','s')
end
hold off
for k = 1:numFrames
structuralBC(feModel, ...
'Face',faceIDs(k), ...
'Constraint','multipoint', ...
'Reference',origins(k,:));
end
%% step.5 make reduced order model
rom = reduce(feModel, 'FrequencyRange', [0 1e3]);
beam.P = rom.ReferenceLocations'; % Interface frame locations (n x 3 matrix)
beam.K = rom.K; % Reduced stiffness matrix
beam.M = rom.M; % Reduced mass matrix
dampingRatio = 0.05;
beam.C = computeModalDampingMatrix(dampingRatio,rom.K,rom.M);
frmPerm = zeros(numFrames,1); % Frame permutation vector
dofPerm = 1:size(beam.K,1); % DOF permutation vector
assert(size(beam.P,1) == numFrames);
for i = 1:numFrames
for j = 1:numFrames
if isequal(beam.P(j,:),origins(i,:))
frmPerm(i) = j;
dofPerm(6*(i-1)+(1:6)) = 6*(j-1)+(1:6);
continue;
end
end
end
assert(numel(frmPerm) == numFrames);
assert(numel(dofPerm) == size(beam.K,1));
beam.P = beam.P(frmPerm,:);
beam.K = beam.K(dofPerm,:);
beam.K = beam.K(:,dofPerm);
beam.M = beam.M(dofPerm,:);
beam.M = beam.M(:,dofPerm);
beam.C = beam.C(dofPerm,:);
beam.C = beam.C(:,dofPerm);
0 Comments
Accepted Answer
Steve Miller
on 6 Nov 2021
Hi Makoto,
There are some options:
One thing you cannot do is use joint targets to specify an initial position of the beam in a deflected position.
Looking at your model, I suspect you have connected the ends of beam 1 and beam 3 to World blocks. This is the exact same x-y-z location, so you will end up with the triangle as shown in the visualization.
--Steve
3 Comments
Steve Miller
on 8 Nov 2021
Joint targets cannot be used to start the beam in a deformed position. If you simulate the system until it reaches the deformed position, save that state, and then start the simulation from that state you can start with a deformed position. The Configuration Panel has options for save final state and specify initial state which can be used for this purpose.
--Steve
More Answers (0)
See Also
Categories
Find more on Bodies in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!