LESM - Linear Elements Structure Model

This is the main driver file of LESM. This is a MATLAB program for linear-elastic, displacement-based, static analysis of two-dimensional and three-dimensional linear elements structure models, using the direct stiffness method. For each structural analysis, the program assembles a system of equilibrium equations, solves the system and displays the analysis results.

The program handles five different types of analysis models of reticulated structures: 2D (plane) Truss, 2D (plane) Frame, Grillage, 3D (spatial) Truss, and 3D (spatial) Frame.

In addition, two types of flexural behavior for linear elements are considered: Euler-Bernoulli (Navier theory) elements and Timoshenko elements.

The Object-Oriented Programming (OOP) paradigm is adopted in the implementation of the analysis process. The use of OOP is justified by the clarity, organization and generality that this programming paradigm provides to the code.

The program may be used in a non-graphical version or in a GUI (Graphical User Interface) version. The non-graphical version reads a structural model from a neutral format file and prints model information and analysis results in the the default output (MATLAB command window). In the GUI version, a user may create a structural model with attributes through the program graphical interface. The program can save and read a structural model data stored in a neutral format file. The standalone executable of the GUI version can be downloaded from the LESM website: https://web.tecgraf.puc-rio.br/lesm/

Contents

Authors

Pontifical Catholic University of Rio de Janeiro - PUC-Rio

Department of Civil and Environmental Engineering and Tecgraf Institute of Technical-Scientific Software Development of PUC-Rio (Tecgraf/PUC-Rio)

History

@version 1.1

Initial version: August 2017

Initially prepared for the course ENG 1240 - Analise de Estruturas III, 2016, second term, Department of Civil Engineering, PUC-Rio. Developed in the undergraduate thesis "Development of a Graphic Program for Structural Analysis of Linear Element Models", by Rafael Lopez Rangel, advised by Professor Luiz Fernando Martha, Department of Civil Engineering, PUC-Rio, December, 2016. Extended in the undergraduate thesis "Extensao de Programa Grafico para Analise de Trelicas e Porticos Espaciais via MATLAB e GUI", by Murilo Felix Filho, advised by Professor Luiz Fernando Martha, Department of Civil Engineering, PUC-Rio, July, 2017.

This version of the program is an accompanying software for the book "Analise Matricial de Estruturas com Orientacao a Objetos", Elsevier, 2018, by Luiz Fernando Martha.

Linear Elements Models

Linear element models can be trusses, frames or grillages, which are made up of uniaxial members with one dimension much larger than the others, such as bars (members with axial behavior) or beams (members with flexural behavior). In the present context, members of any type are generically referred to as elements.

The analysis process of this type of model is based on a nodal dicretization, where a node is a joint between two or more elements, or any element end.

The final analysis result is composed by a the results from a global analysis and a local analysis. The result from the global analysis is computed with nodal displacements and rotations, and the result of a local analysis is computed with the effect of distributed loads over elements. These analyzes use analytical expressions of linear element behavior. Therefore, the sum of the two analysis provides the analytical solution of the problem.

Coordinate Systems

Two types of coordinate systems are used to locate points or define directions in space. Both of these systems are cartesian, orthogonal and right-handed.

Global system

The global system XYZ is an absolute reference. Its origin is fixed and it gives unique coordinates to each point in space. In the present context, the global system is referenced by uppercase letters.

Local system

The local system xyz is a relative reference. Its origin is located at the beginning of each element (initial node) and the local x-axis is always in the same direction of the element longitudinal axis. Local y-axis and z-axis are in the principal moment of inertia directions of the element cross-section. The local system is referenced by lowercase letters.

Analysis Model Types

The LESM program considers only static linear-elastic structural analysis of 2D (plane) linear elements models and 3D (spatial) linear elements models, which can be of the following types:

Truss analysis

A truss model is a common form of analysis model, with the following assumptions:

Frame analysis

These are the basic assumptions of a frame model:

Grillage analysis

A grillage model is a common form of analysis model for building stories and bridge decks. Its key features are:

Structural Element Types

For frame or grillage models, whose elements have bending effects, two types of beam elements are considered:

In Euler-Bernoulli flexural behavior, it is assumed that there is no shear deformation. As a consequence, bending of a linear structure element is such that its cross-section remains plane and normal to the element longitudinal axis.

In Timoshenko flexural behavior, shear deformation is considered in an approximated manner. Bending of a linear structure element is such that its cross-section remains plane but it is not normal to the element longitudinal axis.

In truss models, the two types of elements may be used indistinguishably, since there is no bending behavior of a truss element, and Euler-Bernoulli elements and Timoshenko elements are equivalent for the axial behavior.

Local Axes of an Element

In 2D models of LESM, the local axes of an element are defined uniquely in the following manner:

In 3D models of LESM, the local y-axis and z-axis are defined by an auxiliary vector vz = (vzx,vzy,vzz), which is an element property and should be specified as an input data of each element:

In 2D models, the auxiliary vector vz is automatically set to (0,0,1). In 3D models, it is important that the auxiliary vector is not parallel to the local x-axis; otherwise, the cross-product (vz * x-axis) is zero and local y-axis and z-axis will not be defined.

Load Types

There are four types of loads considered in the LESM program:

In addition, nodal prescribed displacements and rotations may be specified.

It is assumed that there is a single load case.

Components of Concentrated Nodal Loads

Components of Distributed Loads on Elements

Components of Thermal Loads on Elements

The temperature gradient relative to an element local axis is the difference between the temperature variation on its bottom face (face on the negative side of local axis) and its upper face (face on the positive side of local axis).

Materials

All materials in LESM are considered to have linear elastic bahavior. In adition, homogeneous and isotropic properties are also considered, that is, all materials have the same properties at every point and in all directions.

Cross-Sections

All cross-sections in LESM are considered to be of a generic type, which means that particular shapes are not specified, only their geometric properties are provided, such as area, moment of inertia and height.

Object Oriented Classes

This program adopts an Object Oriented Programming (OOP) paradigm, in which the following OOP classes are implemented:

Auxiliary Functions and Files

Non-graphical version

clc;
clear;
close all;

% Specify file name (edit only this line to change file name for target model)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
fileName = 'Models/Frame2D/Frame2D_1.lsm';
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Initialize analysis driver object
drv = Drv();

% Open input file with model information
fid = fopen(fileName,'rt');

% Check for valid input file
if fid > 0
    % Read model information
    fprintf(1,'Pre-processing...\n');
    [vs,print] = readFile(fid,drv);

    % Check input file version compatibility
    if vs == 1
        % Process provided data according to the direct stiffness method
        drv.fictRotConstraint(1); % Create ficticious rotation constraints
        status = drv.process();   % Process data
        drv.fictRotConstraint(0); % Remove ficticious rotation constraints

        % Print analysis results
        if status == 1
            print.results();
        end
    else
        fprintf(1,'This file version is not compatible with the program version!\n');
    end
else
    fprintf(1,'Error opening input file!\n');
end