Is it possible to analyze the flexible multibody with hard initial position?
Afficher commentaires plus anciens
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);
Réponse acceptée
Plus de réponses (0)
Catégories
En savoir plus sur Assembly dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!