Is it possible to analyze the flexible multibody with hard initial position?

2 次查看(过去 30 天)
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.
Fig.1 truss structure with flexible beams
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);

采纳的回答

Steve Miller
Steve Miller 2021-11-6
Hi Makoto,
There are some options:
  1. You can define the initial positions and speeds of the joints that connect the flexible beams.
  2. You can save the final state of a previous simulation and start a new simulation from that final state.
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 个评论
Steve Miller
Steve Miller 2021-11-8
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

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Bodies 的更多信息

产品


版本

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by