I am doing API matlab-etabs and i want to know how can i get the displacements in a point for all de modal cases

25 views (last 30 days)
I am working in some API interaction with matlab and ETABS and i want to extract a modal matrix, and i have two problems. First, i have been using the function ModeShape for extracting the modal displacements of my interest points, but aparently i can only have the displacement for the first modal form and no for every modal form that etabs can show.
Here i put the part of the code where i extract the modal displacements for one point (i have to do it for multiple)
AnalysisResultsSetup.DeselectAllCasesAndCombosForOutput;
AnalysisResultsSetup.SetCaseSelectedForOutput('Modal');
formas = zeros(9,3);
PointName= 'C1-4';
ObjectElem = ETABSv1.eItemTypeElm.ObjectElm;
Obj = {''};
Elm = {''};
StepType = {''};
LoadCase = {''};
StepNum = 0;
NumberResults = 0;
U1 = 0;
U2 = 0;
U3 = 0;
R1 = 0;
R2 = 0;
R3 = 0;
[~,~,NumberResults,~,~,~,~,U1,U2,U3,~,~,~] = Results.ModeShape(PointName, ObjectElem, NumberResults,...
Obj, Elm, LoadCase, StepType,StepNum, U1, U2, U3, R1, R2, R3);

Answers (1)

Dolon Mandal
Dolon Mandal on 12 Sep 2023
To extract the modal displacements for all modal forms, you need to iterate through each mode and retrieve the displacements individually. Here's an example of how you can modify your code to extract the modal displacements for all modes.
AnalysisResultsSetup.DeselectAllCasesAndCombosForOutput;
AnalysisResultsSetup.SetCaseSelectedForOutput('Modal');
PointName = 'C1-4';
ObjectElem = ETABSv1.eItemTypeElm.ObjectElm;
Obj = {''};
Elm = {''};
StepType = {''};
LoadCase = {''};
StepNum = 0;
NumberResults = 0;
U1 = 0;
U2 = 0;
U3 = 0;
R1 = 0;
R2 = 0;
R3 = 0;
% Get the number of modes
numModes = Results.ModeCount;
% Initialize the modal displacements matrix
modalDisplacements = zeros(9, 3, numModes);
% Iterate through each mode
for modeIndex = 1:numModes
[~, ~, NumberResults, ~, ~, ~, ~, U1, U2, U3, ~, ~, ~] = Results.ModeShape(PointName, ObjectElem, NumberResults, ...
Obj, Elm, LoadCase, StepType, StepNum, U1, U2, U3, R1, R2, R3);
% Store the modal displacements for the current mode
modalDisplacements(:, :, modeIndex) = [U1, U2, U3];
end

Categories

Find more on Cardiology in Help Center and File Exchange

Products


Release

R2023a

Community Treasure Hunt

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

Start Hunting!