Eng-Tips is the largest engineering community on the Internet

Intelligent Work Forums for Engineering Professionals

  • Congratulations waross on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Error AreaStressShell MATLAB - SAP2000 API

Status
Not open for further replies.

lisandrojim

Civil/Environmental
Dec 10, 2015
5
0
0
NL
Hello!

I want to get the stresses of a shell element in SAP2000 from MATLAB. Using the API MATLAB-SAP2000 I managed to create the code below. However, I get the following error:

Code:
No method 'AreaStressShell' with matching signature found for class 'Interface.AE8687D5_D338_4322_B938_BD2A81649AFD'.

Error in example_api (line 140)
      [ret,NumberResultsS, ObjS, ElmS, PointElmS, LoadCaseS, StepTypeS, StepNumS, S11Top, S22Top, S12Top, SMaxTop, SMinTop, SAngleTop,
      SVMTop, S11Bot, S22Bot, S12Bot, SMaxBot, SMinBot, SAngleBot, SVMBot, S13Avg, S23Avg, SMaxAvg, SAngleAvg] =
      SapModel.Results.AreaStressShell('1','0', NumberResultsS, ObjS, ElmS, PointElmS, LoadCaseS, StepTypeS, StepNumS, S11Top, S22Top,
      S12Top, SMaxTop, SMinTop, SAngleTop, SVMTop, S11Bot, S22Bot, S12Bot, SMaxBot, SMinBot, SAngleBot, SVMBot, S13Avg, S23Avg, SMaxAvg,
      SAngleAvg)

Any suggestions? Thanks!

Code:
%% clean-up the workspace & command window
clear all, close all, clc,

%% pass data to Sap2000 as one-dimensional arrays
feature('COM_SafeArraySingleDim', 1);

%% pass non-scalar arrays to Sap2000 API by reference
feature('COM_PassSafeArrayByRef', 1);

%% create Sap2000 object
SapObject = actxserver('sap2000.SapObject');

%% start Sap2000 application
SapObject.ApplicationStart;

%% create SapModel object
SapModel = SapObject.SapModel;

%% initialize model
ret = SapModel.InitializeNewModel;

%% create new blank model
ret = SapModel.File.NewBlank;

%% define material property

% XMaterial (E=29500 MPa):
MATERIAL_STEEL = 1;
ret = SapModel.PropMaterial.SetMaterial('XMaterial',MATERIAL_STEEL);
ret = SapModel.PropMaterial.SetMPIsotropic('XMaterial',29500,0.25,6E-06);   %% assign isotropic mechanical properties to material
% YMaterial (E=28025 MPa):
ret = SapModel.PropMaterial.SetMaterial('YMaterial',MATERIAL_STEEL);
ret = SapModel.PropMaterial.SetMPIsotropic('YMaterial',28025,0.25,6E-06);   %% assign isotropic mechanical properties to material

%% add area object by coordinates

% Area 1:
x = [0 100 100 0]';
y = [0 0   100 100]';
z = zeros(1,length(x))';
[ret, FrameName1] = SapModel.AreaObj.AddByCoord(length(x), x, y, z,'Area 1')
ret = SapModel.AreaObj.SetMaterialOverwrite('1', 'XMaterial')

% Area 2:
x = 100+[0 100 100 0]';
y = [0 0   100 100]';
z = zeros(1,length(x))';
[ret, FrameName2] = SapModel.AreaObj.AddByCoord(length(x), x, y, z,'Area 2')
ret = SapModel.AreaObj.SetMaterialOverwrite('2', 'YMaterial')

ret = SapModel.View.RefreshView(0,'False')



%% Assign point object restraint at base:

Restraint = logical(zeros(6,1));
for i = 1 : 3
    Restraint(i,1) = true();
end
for i = 4 : 6
    Restraint(i,1) = false();
end
ret = SapModel.PointObj.SetRestraint('2',Restraint)
ret = SapModel.PointObj.SetRestraint('1',Restraint)
ret = SapModel.PointObj.SetRestraint('3',Restraint)
ret = SapModel.PointObj.SetRestraint('4',Restraint)

%% assign loading for load pattern 2

Value = zeros(6,1);
Value(3) = 1000;
ret = SapModel.PointObj.SetLoadForce('5','DEAD', Value)

%% save model
ret = SapModel.File.Save(strcat('',pwd,'\ExamplesAPISAP2000\API_1.sdb'));

%% run model (this will create the analysis model)
ret = SapModel.Analyze.RunAnalysis();


%% get Sap2000 results

% Getting displacements:
PointName2 = '6';
NumberResults = 0;
Obj = cellstr(' ');
Elm = cellstr(' ');
ACase = cellstr(' ');
StepType = cellstr(' ');
StepNum = zeros(1,1,'double');
U1 = zeros(1,1,'double');
U2 = zeros(1,1,'double');
U3 = zeros(1,1,'double');
R1 = zeros(1,1,'double');
R2 = zeros(1,1,'double');
R3 = zeros(1,1,'double');
ObjectElm = 0;
ret = SapModel.Results.Setup.DeselectAllCasesAndCombosForOutput;
ret = SapModel.Results.Setup.SetCaseSelectedForOutput('DEAD');

[ret, NumberResults, Obj, Elm, ACase, StepType, StepNum, U1, U2, U3, R1, R2, R3] = SapModel.Results.JointDispl(PointName2, ObjectElm, NumberResults, Obj, Elm, ACase, StepType, StepNum, U1, U2, U3, R1, R2, R3);
SapResult = U3(1);


% Getting stresses:
NumberResultsS = 0;
ObjS = cellstr(' ');
ElmS = cellstr(' ');
PointElmS = cellstr(' ');
LoadCaseS = cellstr(' ');
StepTypeS = cellstr(' ');
StepNumS = zeros(1,1,'double');
S11Top  = zeros(1,1,'double');
S22Top = zeros(1,1,'double');
S12Top = zeros(1,1,'double');
SMaxTop = zeros(1,1,'double');
SMinTop = zeros(1,1,'double');
SAngleTop = zeros(1,1,'double');
SVMTop = zeros(1,1,'double');
S11Bot = zeros(1,1,'double');
S22Bot = zeros(1,1,'double');
S12Bot = zeros(1,1,'double');
SMaxBot = zeros(1,1,'double');
SMinBot = zeros(1,1,'double');
SAngleBot = zeros(1,1,'double');
SVMBot = zeros(1,1,'double');
S13Avg = zeros(1,1,'double');
S23Avg = zeros(1,1,'double');
SMaxAvg = zeros(1,1,'double');
SAngleAvg  = zeros(1,1,'double');

% THE FOLLOWING LINE IS THE ONE THAT GIVES ME PROBLEMS
[ret,NumberResultsS, ObjS, ElmS, PointElmS, LoadCaseS, StepTypeS, StepNumS, S11Top, S22Top, S12Top, SMaxTop, SMinTop, SAngleTop, SVMTop, S11Bot, S22Bot, S12Bot, SMaxBot, SMinBot, SAngleBot, SVMBot, S13Avg, S23Avg, SMaxAvg, SAngleAvg] = SapModel.Results.AreaStressShell('1','0', NumberResultsS, ObjS, ElmS, PointElmS, LoadCaseS, StepTypeS, StepNumS, S11Top, S22Top, S12Top, SMaxTop, SMinTop, SAngleTop, SVMTop, S11Bot, S22Bot, S12Bot, SMaxBot, SMinBot, SAngleBot, SVMBot, S13Avg, S23Avg, SMaxAvg, SAngleAvg)


%% close Sap2000
ret = SapObject.ApplicationExit(false());
SapModel = 0;
SapObject = 0;
 
Status
Not open for further replies.
Back
Top