Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
Received: 25 July 2018 | Accepted: 18 November 2018
DOI: 10.1002/cae.22097
RESEARCH ARTICLE
LESM—An object-oriented MATLAB program for structuralanalysis of linear element models
Rafael Lopez Rangel | Luiz Fernando Martha
Department of Civil and EnvironmentalEngineering, Pontifical Catholic Universityof Rio de Janeiro, Rio de Janeiro, Brazil
CorrespondenceLuiz Fernando Martha, Department of Civiland Environmental Engineering, PontificalCatholic University of Rio de Janeiro, RuaMarquês de São Vicente 225–Gávea, Riode Janeiro, RJ, 22451-900, Brazil.Email: [email protected]
Funding informationNational Council for Scientific andTechnological Development (CNPq); thePontifical Catholic University of Rio deJaneiro (PUC-Rio); the PUC-Rio Technical-Scientific Software Development Institute(Tecgraf/PUC-Rio)
Abstract
This paper describes the implementation of aMATLABprogram based on theObject
Oriented Programming paradigm for linear-elastic analysis of one-dimensional
element models using a conventional displacement-based procedure. The main
objective is the development of an educational tool on matrix structural analysis with
a didactic and well-documented open source code, which allows any user to
implement new procedures with relative simplicity. The LESM (Linear Elements
Structure Model) program can handle different types of analysis models, such as 2D/
3D frames and trusses, and grillages. In addition, both Euler-Bernoulli and
Timoshenko theories for bending behavior of beam elements are considered. The
OOP class architecture was devised for generically handling these different types of
analyses models and element types. The MATLAB script codes of all classes and
methods of LESM, including its documentation, are available in its site (www.
tecgraf.puc-rio.br/lesm).
KEYWORDS
educational software, MATLAB program, matrix structural analysis, object-oriented-programming
1 | INTRODUCTION
One of the most important fields of study that must bemastered by every civil engineering student is the structuralanalysis. It consists of modeling a structure, evaluating itsbehavior and interpreting the analysis results. The advances incomputer science turned structural analysis into a process ofcomputational simulation of structures behavior. There aremany available structural analysis programs, some of themare intended for commercial use, while othershave educational or scientific purposes, suchas [1,3,16,17,19,21,29,30,33]. It is noticed that mostcommercial software works like a “black-box,” where allthe process of computing the results is hidden from users.
Usage of closed structural analysis programs is veryimportant in the design of structures and is also beneficial inthe educational process of engineering, since students canimprove their design skills and their sensibility to the response
of structures [3]. However, practicing with closed programs,without understanding how they are implemented, deprivesstudents of the implementation phase. This intermediatestage, between theory and the blind use of a program, is veryimportant for the assimilation of a computer-based method.Therefore, tools where students can work at the source codelevel, or allow students to be a part of the process of creatingthe apps that will be used to solve their problems [5], arenecessary to complement theoretical aspects.
Even though there are a number of educational programsthat share the approach of providing open source code, veryfew of them have adequate and didactic documentation. Thispaper presents an educational tool with transparent imple-mentation in order to meet this lack of appropriate tools forteaching matrix structural analysis.
The LESM (Linear Elements Structure Model) programwas developed at the Department of Civil and EnvironmentalEngineering of Pontifical Catholic University of Rio de
Comput Appl Eng Educ. 2019;1–19. wileyonlinelibrary.com/cae © 2019 Wiley Periodicals, Inc. | 1
Janeiro (PUC-Rio) and at the Institute of Technical-Scientific Software Development of PUC-Rio (Tecgraf/PUC-Rio). It performs linear-elastic analysis of two andthree-dimensional linear element models, such as frames,trusses, and grillages, using the direct stiffness method. Thetwo most common theories for the idealization of bendingbehavior of beam elements are considered: Euler-Bernoulliand Timoshenko. The program was designed as acomplementary tool for undergraduate and graduatestructural analysis courses at PUC-Rio, focusing on thedevelopment of simple and didactic algorithms to performeach step of the analysis.
Some features of the LESMprogram that provide studentsan efficient way to learn and practice aspects of computationalimplementation on structural analysis are:
� MATLAB programming language: The development ofprograms in MATLAB is done in a high-level program-ming language with an extensive library of predefinedfunctions, making it easy to understand even for those whoare not familiar with any programming language. Oper-ations and manipulation of matrices and vectors, which isvery frequent in a structural analysis programs, can beexecuted with simple commands [8].
� Object-Oriented Programming (OOP): This programmingparadigm is based on the idea of classes, data abstraction,encapsulation, polymorphism, and inheritance [6,9,24].These features are great facilitators for understandingthe code structure and has proven to be very beneficialto the development and maintenance of flexibleand extendable engineering programs as shownby [2,11,12,18,20,23,25,26,34].
� Documentation: Awell-documented code is the key tomakeit easier to understand, maintain, modify, and extend. Thesource code of LESM is fully commented with detailedexplanations of each file and function. In addition, it isrepresented by the UML pattern, whose diagrams graphi-cally show different aspects of the program design [7].
� Available source code and documentation: The MATLABscript codes of all classes and methods of LESM,including its documentation, are available in its site1;see Published Files2 and Methods Diagram3. Inaddition, a link to the URL address of each methodis provided.
The second section of this paper describes the consider-ations of the different analysis models supported by theLESM program. The third section aims to present the
organization and relationships of the OOP classes of LESM,and justify the advantages of the OOP approach in a structuralanalysis program. The fourth section brings themain conceptsinvolved in the idealization of linear elements behavior. Thefifth section shows how objects relate to perform thestructural analysis according to the steps of the directstiffness method. The sixth section demonstrates the use ofthe program and the benefits of adopting the OOP paradigm.The seventh section describes the educational methodologyadopted in relation to working in the source code level andgives some feedback from student experience. Finally, the lastsection gives some concluding remarks and points to futuredevelopments.
2 | ANALYSIS MODELS
This section describes the types of analysis models handled byLESM. These analysis models are frequently adopted asanalytical abstractions of the behavior of structural systems.In this work, members of any type of analysis model aregenerically referred to as elements.
Two coordinate systems are used to locate points anddefine directions in space. Both of them are Cartesian,orthogonal, and right-handed systems. Every structuralmodel is disposed in an absolute coordinate system calledglobal system (XYZ), and each of its elements has its owncoordinate system called local system (xyz). Two-dimensional models are always considered laid in theglobal XY-plane.
2.1 | Truss analysis model
� Truss elements are bars connected by frictionless pins(hinges), as shown in Figure 1. Therefore, a truss elementdoes not present any bending or torsionmoment induced byrotation continuity at nodes.
� A truss model is loaded only at nodes. Any load actionalong an element is statically transferred as concentratedforces to the element ends.
� There is only one type of internal force in a truss element:axial force.
� Each node of a truss model has only translational degrees-of-freedom (DOF): displacements in X and Y-axisdirections for 2D models and X, Y, and Z-axis directionsfor 3D models.
2.2 | Frame analysis model
� Frame elements may be rigidly connected at nodes, or havea hinge at one or both ends (see Figure 2).
� It is assumed that a hinge in a 2D frame element releasesrotation continuity about Z-axis direction, while a hinge in
1https://web.tecgraf.puc-rio.br/lesm2https://web.tecgraf.puc-rio.br/lesm/v1/publish/main.html3https://web.tecgraf.puc-rio.br/lesm/v1/methods/MethodsDiagram.pdf
2 | RANGEL AND MARTHA
a 3D frame element releases rotation continuity in alldirections.
� Internal forces of a 2D frame element are axial force (in x-axis direction), shear force (in y-axis direction), andbending moment (about z-axis direction).
� Internal forces of a 3D frame element are axial force (in x-axis direction), shear forces (in y-axis and z-axisdirections), bending moments (about y-axis and z-axisdirections), and torsion moment (about x-axis direction).
� Each node of a 2D frame model has three DOF:displacements in X and Y-axis directions, and rotationabout Z-axis direction.
� Each node of a 3D frame model has six DOF: displace-ments in X, Y, and Z-axis directions, and rotations about X,Y, and Z-axis directions.
2.3 | Grillage analysis model
� Beam elements are laid out in a grid pattern in theXY-plane,rigidly connected at nodes, or with a hinge at one or bothends (see Figure 3).
� It is assumed that a hinge in a grillage element releasescontinuity of both flexural and torsion rotations.
FIGURE 1 Positive directions of the degrees-of-freedom of truss elements
FIGURE 2 Positive directions of the degrees-of-freedom of frame elements
FIGURE 3 Positive directions of the degrees-of-freedom of a grillage element
RANGEL AND MARTHA | 3
� By assumption, there is only out-of-plane behavior, whichincludes displacements transversal to the grillage plane,and rotations about in-plane axes.
� Internal forces of a grillage element are shear force (in z-axis direction), bending moment (about y-axis direction)and torsion moment (about x-axis direction).
� Each node of a grillagemodel has three DOF: displacementin Z-axis direction, and rotations about X and Y-axisdirections.
3 | OBJECT ORIENTEDPROGRAMMING CLASSES
The development of computer programs with the OOPapproach consists in the construction of independentmodules, called objects, which can be easily reused, modified
and replaced. In this case, the program is a collection ofdistinct objects that relate to perform some type of activity.For further insight on the OOP paradigm concepts, the readeris referred to Refs. [6,9,24], and Refs. [7,15] for informationabout the UML pattern, which is used to graphically illustratethe structure of an object-oriented code.
3.1 | The OOP classes of the LESM program
The classes adopted in a program of linear-elastic analysis oflinear elements structures arise naturally. It is intuitive that theproblem demands the definition of classes associated withlinear elements, nodes, materials, cross-sections, etc. How-ever, the definition of some classes is not so obvious, such as aclass for handling specific aspects of different analysismodels. The classes implemented in the LESM program toperform the structural analysis (not including subclasses) are
FIGURE 4 UML class definitions of the LESM program
4 | RANGEL AND MARTHA
described below and illustrated in Figure 4, following theUML standard of software modeling.
� Drv4 (Driver): This class defines an object that drives thestructural analysis. The main global variables of a typicalstructural analysis program are properties of the Drv class.Its methods consist of general analysis steps that do notdepend on the analysis model or element type.
� Anm5 (Analysis Model): This is an abstract superclass thatdeclares abstract methods that define the generic behaviorof all types of analysis models. These methods areimplemented in the subclasses that deal with specifictypes of analysis: Anm_Truss2D6, Anm_Truss3D7, Anm_-Grillage8, Anm_Frame2D9, and Anm_Frame3D10.
� Elem11 (Element): This is an abstract superclass thatgenerically specifies a three-dimensional linear elementobject. This superclass implements methods related to thegeneric mechanical behavior of linear elements (methods foraxial and torsional behavior), anddeclares abstractmethods todeal with specific flexural behaviors, which are implementedin the subclasses Elem_Navier12 and Elem_Timoshenko13.
� Lelem14 (Load Element): This is an abstract superclass thatgenerically specifies an object that represents elementinternal loads (distributed loads and temperature varia-tions). Load values and directions are properties of thisclass, while activities related to the element behaviorsubjected to load actions are methods of this class. Thissuperclass implements methods related to the generic axialbehavior, and declares abstract methods related toparticular flexural behaviors of elements subjected tointernal loads, which are implemented in the subclassesLelem_Navier15 and Lelem_Timoshenko16.
� Node17: This class defines node objects. A node is a jointbetween two or more elements, or any element end, used todiscretize the model. It is always considered as a three-dimensional entity.
� Material18: This class defines material objects. Allmaterials are considered to have linear-elastic behavior,with homogeneous and isotropic properties.
� Section19 (Cross-Section): This class defines cross-sectionobjects of a generic type, which means that particularshapes are not specified; only their geometric properties areprovided.
As amatter of didactics, it was opted for a relaxation in thefidelity to data encapsulation in the implementation of LESM.Accessing the properties of an object through formal methodsmakes the code a little less clear and succinct than when directaccess is allowed. Because of that, all properties are public.
In the sequel of this work, a method of the LESM programis generally referenced by a tag name of the type Superclass.method.
3.2 | The relationships between classes
During the analysis process, only one object of the Drv andAnm classes is created. Meanwhile, multiple objects of theElem, Lelem, Node, Material, and Section classes can becreated depending on the number of entities related to theseclasses the model has.
The object of the Drv class can be interpreted as an objectthat represents the structural model as a whole. Therefore, thisobject needs to store all model information in its properties. Itmust have a handle to the object of the Anm class as well asvectors of handles to the objects of all elements, nodes,materials, and cross-sections.
An element in turn needs to have access to the material andcross-section that composes it, and to the two nodes that defineits beginning and its end. It is also necessary for an element tocheck which analysis model it belongs. In addition, there is amutual relationbetweenanobject of theElem class and anobjectof theLelem class, since each element has its own loadpropertiesand each load object must be associated to an element.
A graphicalway of representing these relationships betweenclasses is through the class diagram of the UML modelinglanguage, presented in Figure 5 for the LESM program.
4 | IDEALIZATION OF LINEARELEMENTS BEHAVIOR
In the current work, linear-elastic analysis of prismatic elements(constant cross-section) is assumed. As a consequence, axial,flexural, and torsional behaviors of elements are uncoupled, so
4https://web.tecgraf.puc-rio.br/lesm/v1/publish/drv.html5https://web.tecgraf.puc-rio.br/lesm/v1/publish/anm.html6https://web.tecgraf.puc-rio.br/lesm/v1/publish/anm_truss2d.html7https://web.tecgraf.puc-rio.br/lesm/v1/publish/anm_truss3d.html8https://web.tecgraf.puc-rio.br/lesm/v1/publish/anm_grillage.html9https://web.tecgraf.puc-rio.br/lesm/v1/publish/anm_frame2d.html10https://web.tecgraf.puc-rio.br/lesm/v1/publish/anm_frame3d.html11https://web.tecgraf.puc-rio.br/lesm/v1/publish/elem.html12https://web.tecgraf.puc-rio.br/lesm/v1/publish/elem_navier.html13https://web.tecgraf.puc-rio.br/lesm/v1/publish/elem_timoshenko.html14https://web.tecgraf.puc-rio.br/lesm/v1/publish/lelem.html15https://web.tecgraf.puc-rio.br/lesm/v1/publish/lelem_navier.html16https://web.tecgraf.puc-rio.br/lesm/v1/publish/lelem_timoshenko.html17https://web.tecgraf.puc-rio.br/lesm/v1/publish/node.html
18https://web.tecgraf.puc-rio.br/lesm/v1/publish/material.html19https://web.tecgraf.puc-rio.br/lesm/v1/publish/section.html
RANGEL AND MARTHA | 5
they can be considered separately and overlapping, resulting inthe same responses as when acting together.
For frame and grillage models, two bending behaviortheories are considered: Euler-Bernoulli theory (also knownas Navier beam) [4,13] and Timoshenko's theory [27,28,31].These theories are equivalent for the axial and torsionalbehaviors. Therefore, in truss models, these two theories maybe used indistinguishably, since there is only axial behavior ina truss element. Figure 6 summarizes the formulations of bothflexural behavior theories.
The mathematical expressions necessary for the implemen-tation of a matrix analysis program of linear element models,considering the uncoupled deformation behavior of elements,are shape functions, fixed-end-forces, and stiffness coefficients.All of these expressions related to axial and torsional behaviorsare independent of the flexural behavior theory adopted. For theflexural behavior, generic expressions are derived by introduc-ing auxiliary parameters, following the developments ofRef. [27], that unifies the two bending theories. Theseparameters are based on the Timoshenko's dimensionlessparameter that relates bending rigidity with shear rigidity,presented in Figure 6 and reproduced in Equation 1.
Ω ¼ EIGAS
⋅1l2
ð1Þ
This parameter multiplies exclusive expression terms ofTimoshenko's theory. When Euler-Bernoulli theory isadopted, shear deformation is neglected and the shear rigidityis assumed infinity. This assumption leads to a null value ofthe Timoshenko's parameter [31] and unitary values of theauxiliary parameters. The results are the classical expressionsof Euler-Bernoulli beam theory. Therefore, the sameexpressions could be used for both bending theories. In spiteof this, distinct classes were adopted to emphasize symmetrybetween the expressions from both theories.
The aforementioned mathematical expressions will bebriefly discussed in the following subsections, and theirexpressions are given in the LESM source code, as well as theauxiliary parameters for bending behavior.
4.1 | Shape functions
Shape functions are used in a displacement-based matrixanalysis of linear elements to interpolate the solution of acontinuous field along an element between the discrete values
FIGURE 5 UML class diagram of the LESM program
6 | RANGEL AND MARTHA
at its nodes. These functions are the analytical homogeneoussolution of the differential equations that governs theuncoupled behaviors of an element when unitary field valuesare assumed as essential boundary conditions. The shapefunctions with suitable boundary conditions for axialdisplacement and transversal displacement in xy-plane aregraphically illustrated in Figures 7 and 8, respectively.
The expressions for axial displacement shape functions areimplemented in method Elem.axialDisplShapeFcnVector20. Theimplementation of transversal displacement shape functions forboth xy and xz planes are given in methods Elem.
FIGURE 6 Idealization of flexural behavior of beam elements
20https://web.tecgraf.puc-rio.br/lesm/v1/methods/Methods%20Elem/axialDisplShapeFcnVector.html
RANGEL AND MARTHA | 7
flexuralDisplShapeFcnVector_XY21 and Elem.flexuralDisplSha-peFcnVector_XZ22 of subclasses Elem_Navier andElem_Timoshenko.
4.2 | Fixed-end-forces
The external solicitations distributed over an element aretransferred to its ends as equivalent nodal loads (ENL), whichmust be energetically consistent to produce the samevirtualworkover node displacements as the external solicitation producesover the element displacement field. In the case of linear elementswith uniform cross-section, ENL have the connotation of fixed-end-force (FEF) support reactions with opposite directions [10].
The determination of the FEF of a prismatic element withboth ends rigidly connected, subjected to a generic trapezoi-dal load covering its entire length, is based on the Betti'stheorem [32], following a procedure described by Ref. [10].The result of this procedure is a generic integral expression tocalculate all components of FEF caused by distributed loads.Based on the principle of virtual displacements (PVD), asimilar generic expression is obtained to calculate the FEFresulting from the effects of temperature variations onelements [22]. To consider an element with a rotation releaseat one or both ends (hinged connections), straightforwardstatic condensation procedures should be used [22].
The physical interpretation of FEF for axial and flexuralbehaviors are illustrated in Figures 9 and 10, respectively.There is no torsional FEF because distributed torsionalmoment is not a load type considered by the LESM program.
The axial FEF expressions are implemented in methodLelem.axialDistribLoadFEF23, considering only the effect of alinearly distributed load, and method Lelem.axialThermal-LoadFEF24 considering only the effect of temperaturevariation. The flexural FEF expressions considering only theeffect of a linearly distributed load are implemented inmethodsLelem.flexuralDistribLoadFEF_XY25 and Lelem.flexuralDis-tribLoadFEF_XZ26 of subclasses Lelem_Navier and Lelem_-Timoshenko. The flexural FEF expressions considering onlythe effect of temperature variation are implemented inmethodsLelem.flexuralThermalLoadFEF_XY27 and Lelem.flexuralTh-ermalLoadFEF_XZ28 of the same subclasses.
FIGURE 8 Transversal displacement shape functions in xy-plane
FIGURE 7 Axial displacement shape functions
21https://web.tecgraf.puc-rio.br/lesm/v1/methods/Methods%20Elem/flexuralDisplShapeFcnVector_XY.html22https://web.tecgraf.puc-rio.br/lesm/v1/methods/Methods%20Elem/flexuralDisplShapeFcnVector_XZ.html
23https://web.tecgraf.puc-rio.br/lesm/v1/methods/Methods%20Lelem/axialDistribLoadFEF.html24https://web.tecgraf.puc-rio.br/lesm/v1/methods/Methods%20Lelem/axialThermalLoadFEF.html25https://web.tecgraf.puc-rio.br/lesm/v1/methods/Methods%20Lelem/flexuralDistribLoadFEF_XY.html26https://web.tecgraf.puc-rio.br/lesm/v1/methods/Methods%20Lelem/flexuralDistribLoadFEF_XZ.html27https://web.tecgraf.puc-rio.br/lesm/v1/methods/Methods%20Lelem/flexuralThermalLoadFEF_XY.html28https://web.tecgraf.puc-rio.br/lesm/v1/methods/Methods%20Lelem/flexuralThermalLoadFEF_XZ.html
8 | RANGEL AND MARTHA
4.3 | Stiffness coefficients
The linear relationship between the forces and momentsacting on the element ends with its nodal displacements androtations is expressed by a stiffness matrix, which isassembled by stiffness coefficients formally defined as:
kij →Force or moment in the direction of DOF i necessaryto maintain an isolated element in equilibrium when a unitarydisplacement or rotation is imposed in the direction of DOF j.
The physical interpretation of axial and flexural (in local xy-plane) stiffness coefficients are illustrated in Figures 11 and 12,respectively, where a unitary displacement or rotation is imposed
FIGURE 9 Fixed-end-forces for linearly distributed axial load and uniform temperature variation
FIGURE 10 Fixed-end-forces for linearly distributed transversal load and uniform transversal temperature gradient
FIGURE 11 Physical interpretation of axial stiffness coefficients
FIGURE 12 Physical interpretation of flexural stiffness coefficients in local xy-plane
RANGEL AND MARTHA | 9
at each element end. An analogous interpretation might be givenfor flexural stiffness coefficients in xz-plane. Similarly, torsionalstiffness coefficients correspond to the resulting moments from aunitary torsional rotation imposed at each element end.
The implementation of axial and torsional stiffnesscoefficients matrices is given respectively in methods Elem.axialStiffCoeff29 and Elem.torsionStiffCoeff30. The flexuralstiffness coefficients are implemented in methods Elem.flexuralStiffCoeff_XY31 and Elem.flexuralStiffCoeff_XZ32 ofsubclasses Elem_Navier and Elem_Timoshenko.
3.4 | Element behavior for specific analysis models
All elements are treated as three-dimensional entities, and theflexural behavior is always specified in the two principalplanes of inertia of the element cross-section. It is up to the
analysis model of each element to assemble its shape functionmatrix, FEF vector in local system, and stiffness matrix inlocal system. These assemblies are made using specific termshandled by the current analysis model.
In the LESM program, these steps are performed by themethods Anm.displShapeFcnMtx33 (assembly of shapefunction matrix), Anm.elemLocDistribLoadFEF34, andAnm.elemLocThermalLoadFEF35 (assembly of FEF vectorfor distributed load and temperature variation), and Anm.elemLocStiffMtx36 (assembly of stiffness matrix), of thecorresponding analysis model subclass.
Equations 2, 3, and 4 exemplifies the assembly of thementioned arrays for a generic 3D frame element. Theanalysis model of a 3D frame element is the most generalcase because it makes use of all behavior types (axial,torsional, and flexural effects in two planes).
½N� ¼Nu
1 xð Þ 0 0 0 0 0 Nu2 xð Þ 0 0 0 0 0
0 Nv1 xð Þ 0 0 0 Nv
2 xð Þ 0 Nv3 xð Þ 0 0 0 Nv
4 xð Þ0 0 Nw
1 xð Þ 0 Nw2 xð Þ 0 0 0 Nw
3 xð Þ 0 Nw4 xð Þ 0
264
375 ð2Þ
ff elg ¼ f ea1 f ef xy1 f ef xz1 0 f ef xz2 f ef xy2 f ea2 f ef xy3 f ef xz3 0 f ef xz4 f ef xy4� �T ð3Þ
kel½ � ¼
kea11 0 0 0 0 0 kea12 0 0 0 0 0
0 kef xy11 0 0 0 kef xy12 0 kef xy13 0 0 0 kef xy140 0 kef xz11 0 kef xz12 0 0 0 kef xz31 0 kef xz14 0
0 0 0 ket11 0 0 0 0 0 ket12 0 0
0 0 kef xz21 0 kef xz22 0 0 0 kef xz23 0 kef xz24 0
0 kef xy21 0 0 0 kef xy22 0 kef xy23 0 0 0 kef xy24kea21 0 0 0 0 0 kea22 0 0 0 0 0
0 kef xy31 0 0 0 kef xy32 0 kef xy33 0 0 0 kef xy340 0 kef xz31 0 kef xz32 0 0 0 kef xz33 0 kef xz34 0
0 0 0 ket21 0 0 0 0 0 ket22 0 0
0 0 kef xz41 0 kef xz42 0 0 0 kef xz43 0 kef xz44 0
0 kef xy41 0 0 0 kef xy42 0 kef xy43 0 0 0 kef xy44
266666666666666666666666664
377777777777777777777777775
ð4Þ
29https://web.tecgraf.puc-rio.br/lesm/v1/methods/Methods%20Elem/axialStiffCoeff.html30https://web.tecgraf.puc-rio.br/lesm/v1/methods/Methods%20Elem/torsionStiffCoeff.html31https://web.tecgraf.puc-rio.br/lesm/v1/methods/Methods%20Elem/flexur-alStiffCoeff_XY.html32https://web.tecgraf.puc-rio.br/lesm/v1/methods/Methods%20Elem/flexuralStiffCoeff_XZ.html
33https://web.tecgraf.puc-rio.br/lesm/v1/methods/Methods%20Anm/displShapeFcnMtx.html34https://web.tecgraf.puc-rio.br/lesm/v1/methods/Methods%20Anm/elemLocDistribLoadFEF.html35https://web.tecgraf.puc-rio.br/lesm/v1/methods/Methods%20Anm/elemLocThermalLoadFEF.html36https://web.tecgraf.puc-rio.br/lesm/v1/methods/Methods%20Anm/elemLocStiffMtx.html
10 | RANGEL AND MARTHA
5 | THE STRUCTURAL ANALYSISPROCESS BASED ON THE OOPCLASS ORGANIZATION
The main goal of the direct stiffness method is to computedisplacements and rotations, support reactions, and internalforces of linear element models. This is done by solving thefollowing system of nodal equilibrium equations:
K½ � Df g ¼ Ff g→ Kf f� �
Kfs� �
Ksf� �
Kss½ �
" #Df
� �Dsf g
( )¼ Ff
� �Fsf g
( )
ð5Þ
in which, K½ � is the global stiffness matrix, Df g is the globaldisplacement vector, and Ff g is the global forcing vector.This system of equations is partitioned in two parts, one forthe free DOF (subscript f ) and the other for the constrainedDOF (subscript s). The unknowns of this system are thefree nodal displacements and rotations, Df
� �, and the force
or moment components in the directions of fixed DOF,Fsf g. The system partitioning is done by numbering freeDOF before fixed ones.
5.1 | Initial steps
The Drv.process37 method is responsible for calling all othermethods. Figure 13 shows the UML sequence diagram for theinitial steps: dimensioning the stiffness, displacement, andforcing arrays (method Drv.dimKFD38); numbering theglobal DOF as described above (methods Anm.setupDOF-Num39 and Drv.assembleDOFNum40); assembling the gathervectors that store the global DOF numbers of each element(method Drv.assembleGle41); inserting the prescribed dis-placements in the global displacement vector (method Anm.setupPrescDispl42).
The setupDOFNum and setupPrescDispl methods belongto the Anm class because they need to access the specific DOFnumbers used by the elements of that analysismodel. The othermethods have a generic implementation for any model type.
5.2 | Assembly of the global stiffness matrix
The Drv.gblMtx43 method is responsible for assembling theglobal stiffness matrix by running a loop over all elements(see diagram of Figure 14). In each interaction, the Elem.gblStiffMtx44 and the Drv.assembleElemMtx45 methods areinvoked. The first returns the element stiffness matrix inglobal system and the second inserts its coefficients in thecorrect positions of the global matrix.
The Elem.gblStiffMtxmethod returns an element stiffnessmatrix in global system by calling the Anm.elemLocStiffMtx46
method, which provides the element matrix in local system,and then applies a rotation transformation from local systemto global system. To assemble the element matrix in localsystem, the Anm.elemLocStiffMtx method calls specificmethods of the Elem class, mentioned in the end of subsection4.4, that return the stiffness coefficients for each elementbehavior handled by its analysis model.
5.3 | Assembly of the global forcing vector
Each position of the global forcing vector, including thoseconstrained by supports, stores combined nodal loads. Theseare the combination of applied nodal loads (concentrated
FIGURE 13 UML sequence diagram of the initial steps of theanalysis process
37https://web.tecgraf.puc-rio.br/lesm/v1/methods/Methods%20Drv/process.html38https://web.tecgraf.puc-rio.br/lesm/v1/methods/Methods%20Drv/dimKFD.html39https://web.tecgraf.puc-rio.br/lesm/v1/methods/Methods%20Anm/setupDOFNum.html40https://web.tecgraf.puc-rio.br/lesm/v1/methods/Methods%20Drv/assembleDOFNum.html41https://web.tecgraf.puc-rio.br/lesm/v1/methods/Methods%20Drv/assembleGle.html42https://web.tecgraf.puc-rio.br/lesm/v1/methods/Methods%20Anm/setupPrescDispl.html
43https://web.tecgraf.puc-rio.br/lesm/v1/methods/Methods%20Drv/gblMtx.html44https://web.tecgraf.puc-rio.br/lesm/v1/methods/Methods%20Elem/gblStiffMtx.html45https://web.tecgraf.puc-rio.br/lesm/v1/methods/Methods%20Drv/assembleElemMtx.html46https://web.tecgraf.puc-rio.br/lesm/v1/methods/Methods%20Anm/elemLocStiffMtx.html
RANGEL AND MARTHA | 11
forces or moments) with ENL (element FEF with oppositedirections) resulting from distributed loads or temperaturevariations on elements. The applied nodal loads are directlyinserted into the corresponding position of the global forcingvector in the Anm.nodalLoad47 method.
For each element, the Drv.elemLoads48 method calls theLelem.gblDistribLoadENL49 and the Lelem.gblThermalLoa-dENL50 methods (see diagram of Figure 15). These methodsreturn the element ENL vectors in global system fordistributed load and temperature variation, respectively.This is done by calling the Anm.elemLocDistribLoadFEF51
method and/or the Anm.elemLocThermalLoadFEF52 method,which provide the FEF vector in local system according to thecurrent analysis model, and then applying a rotationtransformation and inverting its direction. The coefficientsof the ENL vectors are inserted to the correct positions of theglobal forcing vector in the Drv.assembleENL53 method.
5.4 | Solving the system of equations
The system of equilibrium equations is solved in the Drv.solveEqnSystem54 method (indicated in Figure 15). The freenodal displacements and rotations are obtained by the solutionof the first row of Equation 5, as follows:
Df� � ¼ Kf f
� ��1 Ff� �� Kfs
� �Dsf g� � ð6Þ
Considering that vector Fsf g previously stores combinednodal loads applied directly to constrained DOF, tocompute the support reactions, it is necessary to superim-pose � Fsf g to the solution of the second row of Equation 5:
Fsf g ¼ � Fsf g þ Ksf� �
Df� �þ Kss½ � Dsf g ð7Þ
5.5 | Computation of internal forces
Internal forces of elements are computed at its endsconsidering the effects of global and local analysis. Theeffects of global analysis come from the results of nodaldisplacements and rotations of the system of equilibriumequations while the local fixed-end effects come fromdistributed loads or temperature variations on elements.
The internal forces from local analysis are the FEF. Tocompute element internal forces from global analysis, its nodaldisplacements, degf g, is extracted from the global displace-ment vector and rotated to the local system, delf g. Thedisplacement vector in the local system is then multipliedby the element stiffness matrix, kel½ �, resulting in internalforces acting in the directions of the element local DOF:
f elf g ¼ kel½ � R½ � degf g ¼ kel½ � delf g ð8ÞThe computation of internal forces is performed by the
Drv.elemIntForce55 method, as shown in the sequencediagram of Figure 16. In each iteration of a loop over allelements, the Anm.initIntForce56 method is called to initializethe vectors of internal forces with null values. The resultsfrom global analysis is returned from the Elem.gblAnlInt-Force57 method. This method computes the internal forces atthe ends of each element based on its nodal displacements androtations. The results from local analysis are previously storedwhen local FEF are calculated. The combination of the resultsfrom global and local analyses are then added to the internalforces vector in the Anm.assembleIntForce58 method.
6 | EXAMPLE
A simple 2D framemodel is adopted to demonstrate the use ofthe LESM program and the OOP approach. Figure 17 shows aframe in the XY-plane with three nodes and two elements,both Navier beams. Node 1 is restricted in the Y-axisdirection, node 3 is restricted in the X and Y-axis directions,and element 2 has a uniform distributed load of 5 kN/m. Theinput data file read by the program is also presented. It is a textfile, with .lsm extension, that stores all the information neededfor the analysis following the neutral file format described inRef. [14].
The developed OOP class organization allows a generictreatment of the model attributes. All node, element, load, and
47https://web.tecgraf.puc-rio.br/lesm/v1/methods/Methods%20Anm/nodalLoads.html48https://web.tecgraf.puc-rio.br/lesm/v1/methods/Methods%20Drv/elemLoads.html49https://web.tecgraf.puc-rio.br/lesm/v1/methods/Methods%20Lelem/gblDistribLoadENL.html50https://web.tecgraf.puc-rio.br/lesm/v1/methods/Methods%20Lelem/gblThermalLoadENL.html51https://web.tecgraf.puc-rio.br/lesm/v1/methods/Methods%20Anm/elemLocDistribLoadFEF.html52https://web.tecgraf.puc-rio.br/lesm/v1/methods/Methods%20Anm/elemLocThermalLoadFEF.html53https://web.tecgraf.puc-rio.br/lesm/v1/methods/Methods%20Drv/assembleENL.html54https://web.tecgraf.puc-rio.br/lesm/v1/methods/Methods%20Drv/solveEqnSystem.html
55https://web.tecgraf.puc-rio.br/lesm/v1/methods/Methods%20Drv/elemIntForce.html56https://web.tecgraf.puc-rio.br/lesm/v1/methods/Methods%20Anm/initIntForce.html57https://web.tecgraf.puc-rio.br/lesm/v1/methods/Methods%20Elem/gblAnlIntForce.html58https://web.tecgraf.puc-rio.br/lesm/v1/methods/Methods%20Anm/assembleIntForce.html
12 | RANGEL AND MARTHA
cross-section objects are three-dimensional entities, whichmeans that their properties store the values read from all threedimensions. It is up to an object of the Anm class (in fact, anobject of a subclass of the Anm superclass) to identify whichuncoupled behaviors and DOF must be used for the assemblyof the system of equilibrium equations.
For example, the method Anm.elemLocStiffMtx, toassemble the stiffness matrix of an element in local system,needs to access stiffness coefficients associated with differentbehaviors of the element in different planes, depending on theanalysis model. The assembly of this matrix for a 3D framewas presented in Equation 4. For the given 2D frame, it isnecessary to obtain the axial stiffness coefficients and theNavier formulation of flexural stiffness coefficients in the xy-plane, using the Elem.axialStiffCoeff and Elem.flexuralStiff-Coeff_XY methods, according to the scripts shown in thesequel:
Thus, the element does not need to adapt to the analysismodel,having its behavior available to anymodel that requests it. TheAnm object is the one that adapts the element to the targetanalysis. Notice that in method Anm.elemLocStiffMtx the callto method Elem.flexuralStiffCoeff_XY is generic, working forNavier or Timoshenko elements. This is an example ofpolymorphism in the current OOP implementation.
Another example of polymorphism is in the method Elem.gblStiffMtx. This method is used to rotate an element stiffnessmatrix from its local system to the global system, as indicatedbelow. The call to method Anm.elemLocStiffMtx is alsogeneric, and the actual method that is called is the oneassociated to the target analysis model.
The output of the analysis results provided by the programfor the example of Figure 17 is given below.
The class organization also makes the code become wellmodulated, allowing its easy modification and expansion. Forexample, to create a new analysis model, or a new elementtype, it is just needed to inherit a subclass from the Anm class,or from the Elem and Lelem classes. These new subclassesmust implement the abstract methods to deal with the specificbehavior of the analysis model or element created.
7 | EDUCATIONAL METHODOLOGY
This article describes the organization of classes andmethods,in the context of OOP, of a program developed in theMATLAB environment for linear-elastic analysis of linearelements structures. Although the program has a guided andactive user interface, the objective of this work is to describeonly the analysis module of the program. Another article isbeing prepared by the authors to describe the use of theprogram as a complete educational graphics tool. In this
RANGEL AND MARTHA | 13
sense, the educational tool described in this article serves touncover the steps of an analysis of structures by the directstiffness method in an organized and well documented way.The main point here is that working in the source code levelallows students to really assimilate a computer-basedmethod.
With this objective in mind, the program was used fortwo semesters in the discipline of analysis of staticallyindeterminate structures of the Civil Engineering course ofPontifical Catholic University of Rio de Janeiro(PUC-Rio). The educational methodology adopted wasto provide the complete structure of the classes of theprogram's source code, but incompletely presenting thecontents of the methods, so that the students could fill inthe gaps, as individual works. For example, the sourcecode shown in the previous section of the methods Elem.axialStiffCoeff, Elem_Navier.flexuralStiffCoeff_XY, andAnm_Frame2D.elemLocStiffMtx would be provided tothe students as follows:
A typical assignment to the students would be to ask them tostudy the theory related to the creation and assemblage of the
FIGURE 14 UML sequence diagram of the assembly of the global stiffness matrix
14 | RANGEL AND MARTHA
stiffnessmatrix of a two-dimensional framemember in its localsystem and to complete the source code of these methods.
Several assignments of these types were proposed duringa course semester, covering the entire analysis module ofLESM program. Written exams would also cross-evaluateaspects of the direct stiffness method and its implementation.
In PUC-Rio all disciplines are evaluated by the students atthe end of each semester. The feedback provided by thestudents of the two semesters of the present structural analysis
class was very positive. A student made a report thatsummarizes the success of the adopted methodology: “Iappreciated the methodology used in the structural analysiscourse. Through the computational implementation it waspossible to really understand the method of structure analysisemployed. If it had been asked to implement the programfrom a blank page it would have been almost impossible for anormal civil engineering student to complete it. On the otherhand, the organization of the code provided by the
FIGURE 15 UML sequence diagram of the assembly of the global forcing vector
RANGEL AND MARTHA | 15
object-oriented programming, coupled with high-level pro-gramming in MATLAB, greatly aided the learning process.”
8 | CONCLUSIONS
A common scenario in practice is analyzing a structure usingclosed commercial programs. These programs generally offera variety of element formulations and analysis models, suchas bars, beams, plates, shells, axisymmetric solids, general 3Dsolids, and so on. When a user chooses an element type andanalysis model, he or she is automatically accepting theirmathematical formulation and their simplifying assumptions.In an ideal scenario, users should formulate the problem andwrite a program. However, this approach requires hightechnical knowledge, and programming experience.
The purpose of this work, is to have an open, well-documented, and easily extended program available. A typicaluser is an engineering student, or a professional who has little
knowledge of computer implementation. The ease of extend-ing the LESM code allows a normal user to, not only use theprogram, but also to implement new procedures or other typesof elements and analysis models with relative simplicity.
To achieve this goal, the MATLAB platform with theOOP paradigm proved to be an appropriate approach. TheOOP paradigm provides an intrinsic incremental nature of thedevelopment of a structural analysis system, as new featurescan be easily incorporated in the system. Moreover, the use ofOOP leads to a more close integration between the matrixstructural analysis theory and the computer implementation,improving the program understandability and easing thesystem documentation.
One contribution of this paper is the proposed OOP classorganization. Some classes may be obvious in the context ofmatrix structural analysis (i.e., classes for material, element,cross-section, or node). However, dealingwith different types ofstructure models in a generic fashion led to the definition of animportant class of the LESM program: the Analysis Model(Anm) class.This class is responsible for generically handling thedifferent aspects of 2D and 3D trusses, 2D and 3D frames, andgrillagemodels,which are treated by each subclass of classAnm.
Flexural behavior of beam elements was also treatedgenericallywith the introduction of some auxiliary parameters,in the LESMsource code, that unifies the expressions for shapefunctions, stiffness coefficients, and fixed-end-forces of Euler-Bernoulli and Timoshenko theories. Although, with thisunification, there is no need to separate mechanical andloading behaviors for the two bending theories, in LESMdistinct classes were adopted for the sake of emphasizing thesymmetry between the expressions from both theories.
Another important component is the source codedocumentation of LESM, which is based on formal softwareengineering design: the UML pattern. This is complementedwith the documentation files generated by command Publishof MATLAB, which is available in the LESM website.
FIGURE 16 UML sequence diagram of the computation of internal forces
FIGURE 17 2D frame model and its input data file
16 | RANGEL AND MARTHA
Possible future developments include the extension of theanalysis options, such as the consideration of physical and/orgeometric nonlinearity. When dealing with second-orderanalyzes, it is necessary to solve numerically a system ofnon-linear equations by an appropriate method. In this case, aclass responsible for the implementation of the numericalsolution algorithms of the systemmust be included. Therefore,the class that drives the structural analysis (currently the Drvclass) would be split into an algorithm class and a classresponsible for the data and general behavior of the model.
ACKNOWLEDGMENTS
The authors would like to thank the National Council forScientific and Technological Development (CNPq), thePontifical Catholic University of Rio de Janeiro (PUC-Rio), and the PUC-Rio Technical-Scientific SoftwareDevelopment Institute (Tecgraf/PUC-Rio) for the financialsupport and for providing the necessary space andresources used during the development of this work. Theauthors are also grateful to former undergraduate studentand intern of Tecgraf/PUC-Rio, Murilo Felix Filho, whocontributed to the development of the program sourcecode.
NOMENCLATURE
l→ element lengthE→ material elasticity modulusG→ material shear modulusα→ material thermal expansion coefficientA→ cross-section area (Ax)As → cross-section effective shear area (Ay or Az)I→ cross-section moment of inertia (Iz or Iy)Jt → cross-section torsional moment of inertia (Ix)Ω→ Timoshenko's basic parameterqx → axially distributed load on elementqx0→ uniform component of axially distributed loadqx1→ linear component of axially distributed loadqy → distributed load transverse to the element y-
axisqy0→ uniform component of distributed load trans-
verse to the element y-axisqy1→ linear component of distributed load transverse
to the element y-axisqz → distributed load transverse to the element z-
axisqz0 → uniform component of distributed load trans-
verse to the element z-axisqz1 → linear component of distributed load transverse
to the element z-axis
ΔTx → uniform temperature variation in the center ofgravity of the element cross-section
ΔTy → transversal temperature gradient along theelement y-axis (ΔTbottom � ΔTtop)
ΔTz → transversal temperature gradient along theelement z-axis (ΔTbottom � ΔTtop)
V→ shear forceM→ bending momentf elf g→ element fixed-end-force vector in local systemf eai → element axial fixed-end-force componentf ef xyi → element flexural fixed-end-force component in
xy-planef ef xzi → element flexural fixed-end-force component in
xz-planekel½ �→ element stiffness matrix in local systemkeaij → element axial stiffness coefficientketij→ element torsional stiffness coefficientkef xyij → element flexural stiffness coefficient in xy-
planekef xzij → element flexural stiffness coefficient in xz-
planeu0 → axial displacement of an element pointv0 → displacement transverse to the element y-axisw0 → displacement transverse to the element z-axisθ→ cross-section rotation about element z-axis
from bending effectϕ→ cross-section rotation about element y-axis
from bending effectN½ �→ shape function matrixNu
i → axial displacement shape functionNv
i → transversal displacement shape function inlocal y-axis (xy-plane)
Nwi → transversal displacement shape function in
local z-axis (xz-plane)εfx → normal deformation in axial direction from
bending effectγs → distortion from shear effectσfx → normal stress in axial direction from bending
effectτxy → tangential stress from shear effectc0,c1,c2,c3 → integration constants
ORCID
Luiz Fernando Martha http://orcid.org/0000-0002-5783-5151
REFERENCES
1. U. Ahmad (2013) Development of a structural analysis program(SABSM) using MATLAB featuring graphical user interface.Dissertation, City University of London
RANGEL AND MARTHA | 17
2. G. Archer, G. Fenves, and C. Thewalt, A new object oriented finiteelement analysis program architecture. Comput. Struct. 70 (1999),63–75
3. S. Barreto, R. Piazzalunga, and V. Ribeiro, A web-based 2Dstructural analysis educational software. Comput. Appl. Eng.Educ. 11 (2003), 83–92. https://doi.org/10.1002/cae.10040
4. F. P. Beer et al.,Mechanics of Materials. McGraw-Hill Education,New York, 2014.
5. P. L. Bishay, “FEApps”: Boosting students’ enthusiasm for codingand App designing, with a deeper learning experience inengineering fundamentals. Comput. Appl. Eng. Educ. 24 (2016),456–463. https://doi.org/10.1002/cae.21723
6. G. Booch et al., Object-oriented analysis and design withapplications. Addison-Wesley, Upper Saddle River, NJ, 2007.
7. G. Booch, J. Rumbaugh, and I. Jacobson, The unified modelinglanguage user guide. Addison-Wesley, Upper Saddle River, NJ, 2005.
8. S. Chapman, MATLAB programming for engineers. CengageLearning, Boston, 2015.
9. B. Cox and A. Novobilski, Object-oriented programming: anevolutionary approach. Addison-Wesley, Upper Saddle River, NJ,1991.
10. L. P. Felton and R. B. Nelson, Matrix Structural Analysis, JohnWiley & Sons, New York, 1996
11. G. Fenves, Object-oriented programming for engineering softwaredevelopment. Eng. Comput. 6 (1990), 1–15
12. B. W. R. Forde, R. O. Foschi, and S. F. Stiemer, Object-orientedfinite element analysis. Comput. Struct. 34 (1990), 355–374
13. B. J. Goodno and J. M. Gere, Mechanics of Materials. CLEngineering, Boston, 2017.
14. https://web.tecgraf.puc-rio.br/neutralfile/15. http://www.uml.org/
16. P. Krysl and A. Trivedi, Instructional use of MATLAB softwarecomponents for computational structural engineering applications.Int. J. Engng. Ed. 21 (2005), 778–783
17. J. Lee and S. Ahn, Finite element implementation for computer-aided education of structural mechanics: frame analysis. Comput.Appl. Eng. Educ. 22 (2011), 387–409. https://doi.org/10.1002/cae.20563
18. R. I. Mackie, Object-oriented programming of the finite elementmethod. Int. J. Numer. Meth. Eng. 35 (1992), 425–436
19. L. F. Martha, (1999) Ftool: A structural analysis educationalinteractive tool. Proceedings of Workshop in MultimediaComputer Techniques in Engineering Education, Institute forStructural Analysis, Technical University of Graz, Austria, pp.51–65.
20. L. F. Martha and E. Parente, An object-oriented framework forfinite element programming. Proceedings of the Fifth WorldCongress on Computational Mechanics, IACM, Vienna, Austria,2002. on-line publication (ISBN 3-9501554-0-6), Paper-ID:80480, p. 10
21. MASTAN2 (http://www.mastan2.com)22. W. McGuire, R. Gallaguer, and R. Ziemian, Matrix Structural
Analysis. John Wiley & Sons, New York, 2000.23. G. R. Miller, An object-oriented approach to structural analysis
and design. Comput. Struct. 40 (1991), 75–82.24. M. O'Docherty, Object-oriented analysis and design: understand-
ing system development with UML 2.0. John Wiley & Sons,Chichester, West Sussex, England, 2005.
25. R. M. V. Pidaparti and A. V. Hudli, Dynamic analysis of structuresusing object-oriented techniques. Comput. Struct. 49 (1993),149–156
26. B. Raphael and C. S. Krishnamoorthy, Automating finite elementdevelopment using object-oriented techniques. Eng. Computation10 (1993), 267–278.
27. J. N. Reddy, On locking-free shear deformable beam finiteelements. Comput. Methods Appl. Mech. Eng. 149 (1997),113–132
28. J. N. Reddy, C. M. Wang, and K. H. Lee, Relationships betweenbending solutions of classical and shear deformation beamtheories. Int. J. Solids Struct. 34 (1997), 3373–3384
29. SALT. (http://saltserver.org)30. Y. Suh, Development of educational software for beam loading
analysis using pen-based user interfaces. J. Comput. Des. Eng. 1(2014), 67–77. https://doi.org/10.7315/JCDE. 2014.007
31. S. P. Timoshenko and J. M. Gere, Theory of elastic stability. DoverPublications, New York, 2012.
32. R. N. White, P. Gergely, and R. G. Sexsmith, StructuralEngineering − Combined Edition − Vol. 1: Introduction to DesignConcepts and Analysis − Vol. 2: Indeterminate Structures. JohnWiley & Sons, New York, 1976.
33. X. F. Yuan and J. G. Teng, Interactive web-based package forcomputer-aided learning of structural behavior. Comput. Appl.Eng. Educ. 10 (2002), 121–136. https://doi.org/10.1002/cae.10020
34. T. Zimmermann et al., Object-oriented finite element program-ming: I. Governing principles. Comput. Methods Appl. Mech. Eng.98 (1992), 291–303.
R. L. RANGEL is a master's student inthe Civil Engineering program of thePontifical Catholic University of Riode Janeiro (PUC-Rio), Brazil. In histhesis, he carries a research on theimplementation of geometricallynonlinear structural analysis of fram-ed models. He received his under-
graduate degree in Civil Engineering from PUC-Rio in2016, when he developed the LESM program for struct-ural analysis of linear elements. He is also member of theModeling and Visualization in Engineering and Geology(MVGEO) group of the Tecgraf Institute of Technical-Scientific Software Development of PUC-Rio (Tecgraf/PUC-Rio).
L. F. MARTHA is an associate profes-sor in Civil Engineering at PontificalCatholic University of Rio de Janeiro(PUC-Rio), Brazil, and member of theTecgraf Institute of Technical-Scien-tific Software Development of PUC-Rio (Tecgraf/PUC-Rio). He got hisPhD degree in Structural Engineering
in 1989 from Cornell University, working in the CornellFracture Group and in the Cornell Program of Computer
18 | RANGEL AND MARTHA
Graphics. His research interests include structural analy-sis, computational mechanics, educational software, meshgeneration, geometric modeling, and computer graphics.He is author of two text books related to structural analysisand has published several articles in congresses and peerreview journals.
How to cite this article: Rangel RL, Martha LF.LESM—An object-oriented MATLAB program forstructural analysis of linear element models. ComputAppl Eng Educ. 2019;1–19.https://doi.org/10.1002/cae.22097
RANGEL AND MARTHA | 19