- 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 次查看(过去 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);
0 个评论
采纳的回答
Steve Miller
2021-11-6
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 个评论
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 Center 和 File Exchange 中查找有关 Bodies 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!