- 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?
4 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Makoto Yoshioka
am 4 Nov. 2021
Kommentiert: Makoto Yoshioka
am 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.

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 Kommentare
Akzeptierte Antwort
Steve Miller
am 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 Kommentare
Steve Miller
am 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
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Bodies finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!