development and implementation of a new user defined ... · program, abaqus. this program allows...

87
Development and implementation of a new user defined element in Abaqus for analysis of composite plates using a high-order theory Filipe Curado Teixeira Thesis to obtain the Master of Science Degree in Aerospace Engineering Supervisors: Prof. Filipa Andreia de Matos Moleiro Prof. Aurélio Lima Araújo Examination Committee Chairperson: Prof. Filipe Szolnoky Ramos Pinto Cunha Supervisor: Prof. Filipa Andreia de Matos Moleiro Member of the Committee: Prof. José Arnaldo Pereira Leite Miranda Guedes December 2018

Upload: others

Post on 15-May-2020

10 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

Development and implementation of a new user definedelement in Abaqus for analysis of composite plates using a

high-order theory

Filipe Curado Teixeira

Thesis to obtain the Master of Science Degree in

Aerospace Engineering

Supervisors: Prof. Filipa Andreia de Matos MoleiroProf. Aurélio Lima Araújo

Examination Committee

Chairperson: Prof. Filipe Szolnoky Ramos Pinto CunhaSupervisor: Prof. Filipa Andreia de Matos Moleiro

Member of the Committee: Prof. José Arnaldo Pereira Leite Miranda Guedes

December 2018

Page 2: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

ii

Page 3: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

Resumo

No presente trabalho, procedeu-se ao desenvolvimento e implementação de um novo elemento finito para

a análise de placas em compósito laminado, utilizando uma teoria de lâmina única equivalente. Este

desenvolvimento é motivado pela crescente utilização de materiais compósitos na indústria aeronáutica,

tornando necessário que estudos sejam feitos utilizando modelos que descrevam melhor o comportamento

destes materiais, no sentido de melhorar continuamente as análises e projetos envolvendo os mesmos.

Com isto em mente, apoiado no método dos elementos finitos, desenvolveu-se em primeiro lugar um

modelo para uma placa isotrópica, utilizando desde logo a teoria de terceira ordem pretendida, partindo-

se de seguida para o desenvolvimento do modelo para uma placa de compósito laminada, com lâminas

ortotrópicas.

A implementação computacional do modelo foi conseguida através do programa comercial de elementos

finitos, Abaqus. Este programa permite o desenvolvimento de Elemento definido pelo utilizador (UEL),

através de uma sub-rotina programada em FORTRAN, onde é possível ao utilizador definir um novo

elemento finito que melhor se adequa à análise pretendida.

Para além disto, procedeu-se à validação do modelo através da comparação de resultados obtidos com

soluções de referência. Nomeadamente, foi utilizado como referência, um elemento existente na biblioteca

do Abaqus, que se considerou suficientemente semelhante para uma comparação fidedigna dos resultados,

e ainda, uma solução analítica disponível na literatura.

Por último, foi possível chegar-se a conclusões acerca do modelo implementado e dos resultados

obtidos, bem como indicar algumas propostas para melhorar ainda mais o elemento desenvolvido, no

futuro.

Palavras-chave: Material Compósito Laminado, Teoria de Lâmina Única Equivalente, Teoria

de Deformação de Terceira Ordem, Sub-rotina UEL, Método dos Elementos Finitos

iii

Page 4: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

iv

Page 5: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

Abstract

In the present work, a new finite element was developed and implemented for the analysis of laminated

composite plates, using an equivalent single-layer theory. This development is motivated by the increasing

use of composite materials in the aeronautical industry, making it necessary to study models that better

describe the behavior of these materials, in the sense of continuously improving the analyses and designs

involving them.

With this in mind, based on the finite element method, a model for an isotropic plate was first

developed, using the desired third-order shear deformation theory, followed by the development of the

model for laminated with orthotropic laminae.

The computational implementation of the model was achieved through the finite element commercial

program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines,

programmed in FORTRAN, where it is possible for the user to define a new finite element that better

fits the intended analysis.

In addition, the model was validated by comparing the results obtained with reference solutions.

Specifically, it was used as reference an existing element in the Abaqus library, which was considered

sufficiently similar for a reliable comparison of the results, and also an analytical solution available in the

literature.

Finally, it was possible to draw conclusions about the implemented model and the results obtained,

as well as point out some proposals to further improve the developed element in the future.

Keywords: Laminated Composite Material, Equivalent Single-Layer Theory, Third-order Shear

Deformation Theory, UEL Subroutine, Finite Element Method

v

Page 6: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

vi

Page 7: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

Contents

Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . iii

Abstract . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . v

List of Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix

List of Figures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi

Nomenclature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii

Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii

1 Introduction 1

1.1 Motivation and Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.2 Organization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2 Theoretical Overview 5

3 Development of the Model 9

3.1 Single-layer Plate Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

3.1.1 Displacement field and generalized strain vector . . . . . . . . . . . . . . . . . . . . 9

3.1.2 Stress-strain relationship and generalized constitutive matrix . . . . . . . . . . . . 11

3.2 Laminated Composite Plate Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

3.2.1 Constitutive relation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

3.2.2 Transformation of constitutive relations . . . . . . . . . . . . . . . . . . . . . . . . 13

3.3 Finite element formulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3.3.1 Principle of virtual work and stiffness matrix . . . . . . . . . . . . . . . . . . . . . 17

3.3.2 Shape functions and numerical integration . . . . . . . . . . . . . . . . . . . . . . . 18

4 Implementation of the Model 23

4.1 UEL subroutine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

4.1.1 Stiffness matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

4.1.2 State variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

4.1.3 Force vector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

4.2 Input file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

4.3 Abaqus interaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

vii

Page 8: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

5 Validation 29

5.1 Single-layer Plate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

5.1.1 Vertical displacement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

5.1.2 Vertical force . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

5.2 Laminated Composite Plate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

5.2.1 Comparison with Abaqus element . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

5.2.2 Comparison with the analytical solution . . . . . . . . . . . . . . . . . . . . . . . . 35

6 Conclusions 41

6.1 Achievements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

6.2 Future Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

Bibliography 45

A Single Element Mesh Input File Example 49

B FORTRAN Code Example 51

viii

Page 9: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

List of Tables

3.1 Gauss weights. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

5.1 Strain results for Abaqus and TSDT element: comparison for imposed vertical displacement. 31

5.2 Stress results for Abaqus and TSDT element: comparison for imposed vertical displacement. 31

5.3 Strain results for Abaqus and TSDT element: comparison for applied vertical force. . . . 33

5.4 Stress results for Abaqus and TSDT element: comparison for applied vertical force. . . . . 33

5.5 Strain results for Abaqus and TSDT element: comparison for applied vertical force. . . . 35

5.6 Stress results for Abaqus and TSDT element: comparison for applied vertical force. . . . . 35

5.7 Maximum transverse deflection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

5.8 Adimensionalized maximum deflection for TSDT element and analytical solution. . . . . . 37

5.9 (0/90/0) laminate - Adimensionalized results for stresses from TSDT element and analyt-

ical solution. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

5.10 (0/90/90/0) plate - Adimensionalized results for stresses from TSDT element and analytical

solution. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

ix

Page 10: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

x

Page 11: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

List of Figures

1.1 Evolution composite application at Airbus. . . . . . . . . . . . . . . . . . . . . . . . . . . 2

2.1 Comparison of a deformed transversal normal in CLPT, FSDT and TSDT [20]. . . . . . . 7

2.2 Division of a domain into finite elements [38]. . . . . . . . . . . . . . . . . . . . . . . . . . 8

3.1 Lamina and problem coordinate system [20]. . . . . . . . . . . . . . . . . . . . . . . . . . . 14

3.2 Eight-node quadratic Serendipity rectangular element [20]. . . . . . . . . . . . . . . . . . . 18

3.3 3x3 quadratic element - integration points coordinates [20]. . . . . . . . . . . . . . . . . . 21

3.4 2x2 linear element - integration points coordinates [20]. . . . . . . . . . . . . . . . . . . . 21

4.1 UEL subroutine default header. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

4.2 Input and output variables interacting with UEL block [8]. . . . . . . . . . . . . . . . . . 23

4.3 Command line for compiling. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

5.1 Vertical reaction force for the single element mesh: TSDT element (left); Abaqus element

(right)). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

5.2 Vertical reaction force for the 20×20 element mesh: Abaqus element (right); TSDT element

(left). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

5.3 Vertical displacement for the single element mesh: TSDT element (left); Abaqus element

(right). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

5.4 Vertical displacement for the 20×20 element mesh: TSDT element (left); Abaqus element

(right). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

5.5 Vertical displacement for the single element mesh: Abaqus element (right); TSDT element

(left). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

5.6 Vertical displacement for the 20×20 element mesh: Abaqus element (right); TSDT element

(left). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

5.7 Boundary conditions: simply supported plate [20]. . . . . . . . . . . . . . . . . . . . . . . 35

5.8 Transverse deflection distribution for a/h = 10: (0/90/90/0) laminate (left); (0/90/0)

laminate (right). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

5.9 Transverse deflection distribution for a/h = 20: (0/90/90/0) laminate (left); (0/90/0)

laminate (right). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

xi

Page 12: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

5.10 Transverse deflection distribution for a/h = 100: (0/90/90/0) laminate (left); (0/90/0)

laminate (right). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

xii

Page 13: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

Nomenclature

Greek symbols

γxy shear strain for the xy− plane

γxz shear strain for the xz− plane

γyz shear strain for the yz− plane

γ12 shear strain for the x1x2− plane

γ13 shear strain for the x1x3− plane

γ23 shear strain for the x2x3− plane

εxx normal strain in x direction

εyy normal strain in y direction

εzz normal strain in y direction

ε11 normal strain in x1 direction

ε22 normal strain in x2 direction

ε actual strains vector

ε̂ generalized strains vector

θ angle between the lamina and problem coordinate system

θ1x degree of freedom: angle of rotation about y

θ1y degree of freedom: angle of rotation about x

θ2x degree of freedom: second order term in x direction

θ2y degree of freedom: second order term in y direction

θ3x degree of freedom: third order term in x direction

θ3y degree of freedom: third order term in y direction

xiii

Page 14: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

σ̂b bending moments vector

σ̂m membrane forces vector

σ̂s transverse sgear forces vector

σxx normal stress in x direction

σyy normal stress in y direction

σxy shear stress in the xy− plane

σxz shear stress in the xz− plane

σyz shear stress in the yz− plane

σ11 normal stress in x1 direction

σ22 normal stress in x2 direction

σ12 shear stress in the x1x2− plane

σ13 shear stress in the x1x3− plane

σ23 shear stress in the x2x3− plane

σ actual stresses vector

σ̂ generalized stresses vector

ν Poisson’s ratio

(ξ, η) isoparametric coordinates

Roman symbols

B generalized strain matrix

D constitutive matrix

D̂ generalized constitutive matrix

D̄ transformed material stiffness matrix

E Young’s modulus

Exx nonlinear strain in x direction

Eyy nonlinear strain in y direction

Ezz nonlinear strain in z direction

Exy nonlinear strain in the xy− plane

xiv

Page 15: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

Exz nonlinear strain in the xz− plane

Eyz nonlinear strain in the yz− plane

f force vector

G shear modulus

jacobian

J jacobian matrix of the transformation

K global stiffness matrix

N shape function

S strain transformation matrix

u displacement in x direction

u0 degree of freedom: displacement in x direction

u displacement vector

δu virtual displacement vector

v displacement in y direction

v0 degree of freedom: displacement in y direction

w displacement in z direction

w0 degree of freedom: displacement in z direction

W weights for the Gauss-Legendre quadrature rule

(x, y, z) problem Cartesian coordinate system

(x1, x2, x3) lamina Cartesian coordinate system

Subscripts

b bending effect

i ith node

j jth node

l lamina

m membrane effect

mb coupling between membrane and bending effect

xv

Page 16: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

p problem

s shear effect

Superscripts

(e) generic element

T transpose

xvi

Page 17: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

Glossary

CLPT Classical Laminated Plate Theory

CUF Carrera Unified Theory

ESL Equivalent Single-Layer Theory

FEM Finite Element Method

FSDT First-order Shear Deformation Theory

GUF Generalized Unified Theory

HSDT High-order Shear Deformation Theory

TSDT Third-order Shear Deformation Theory

UEL User Defined-Element

xvii

Page 18: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

xviii

Page 19: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

Chapter 1

Introduction

1.1 Motivation and Objectives

The purpose of composite materials, by combining two or more materials, is to obtain a set of properties

that would not be possible to achieve with a single material. The materials choice and the way they are

combined depends on the intended function of the final composite material [1].

Composite materials are usually divided into three categories: fibrous composites, particulate com-

posites and laminated composites. The latter, which is the one in the scope of this work, consists of

several layers (laminae) stacked together.

Composite materials are used in a wide range of industries. The automotive, construction, energy,

sports, aerospace and aeronautics industries are just a few examples that take advantage of the versatile

characteristics of composite materials to improve their products.

A composite material is composed by a matrix and a reinforcement: the reinforcement provides the

stiffness and strength of the material, while the matrix keeps the reinforcement and overall structure

in place. Its use is almost as old as mankind, when man began to mix straw (reinforcement) and mud

(matrix) to form stronger bricks for buildings.

The advantages of composite material are vast and they will be briefly presented in the aerospace and

aeronautics context:

• strength-to-weight ratio - composite materials are well known for their high strength-to-weight ratio,

being stronger and stiffer than most woods and metals and, at the same time, lighter. The appli-

cations are obvious: if a manufacture is capable of replacing a material for another that is lighter

and does not compromise functionality and safety requirements, it will enhance the maneuverability

and general performance of the aircraft, saving fuel and resources;

• high impact strength - composite materials can be designed to tolerate a great impact, being suitable

for safety features in crashing scenarios or when designing a landing gear system;

• corrosion resistance and durability - the materials mixture can provide great corrosion resistance and

composite materials have high durability. Since aircrafts and aerospace instruments are required

1

Page 20: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

to perform well in harsh environments, with wide ranges of temperatures and severe atmospheric

conditions, this feature is of great importance;

• design flexibility - composite materials can be shaped in a variety of ways. This feature can be useful

for aerodynamic purposes, since designers often find their options limited by the difficulty of man-

ufacturing the optimal aerodynamic shapes. Moreover,the aircrafts dimensional design is limited

so, being able to design complicated shapes may be interesting to fit all the needed components.

Figure 1.1 demonstrates the growing awareness from the aeronautical industry to the importance of

composite materials. Airbus has been increasing the use of composite material in their aircrafts: from the

1970 decade, when composites were barely used in radomes and fairings, to the A380 that, despite being

built mainly from metal, has 20% of composite material in its composition. A major breakthrough was

accomplished with the A350 and its direct competitor, the Boeing B787. Both these aircrafts are built

with 50% of composite material, with All Nippon Airways claiming that the B787 has a fuel consumption,

when compared to the previously used plain, the Boeing B767s, 21% lower and 17% on long-haul and

short-haul routes, respectively.

Figure 1.1: Evolution composite application at Airbus.

The high number of orders of these airplanes confirms their economic viability, and the trend is a

continuous growth, since these airplanes are even substituting airplanes whose fuel consumption and

general performance is poorer. Thus, it is of great importance to continuously deepen the knowledge

about composite materials, understanding its behavior under different conditions, in order to answer the

demands of this competitive market [2–6].

With that in mind, the objective of the present work is to implement a new finite element, that

describes more accurately the behavior of composite laminated plates. Despite the fact that the con-

cerned element is not available in the libraries of finite element commercial software, Abaqus permits the

implementation of user-defined elements (UEL). That is, by means of a UEL subroutine programmed

in FORTRAN [7], user-defined elements enable users to define the element that better suits the type of

analysis intended and still take advantage of the analysis tools that Abaqus offers [8–10].

In fact, once the UEL subroutine is programmed and the finite element model is defined, the element

can be used like the ones that exist in Abaqus library, being possible to visualize some of the results,

which makes its interpretation easier and user friendly.

2

Page 21: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

1.2 Organization

This work is divided in six chapters. In chapter 1, the introduction and motivation of the work are

presented as well as the work organization.

In chapter 2, a theoretical overview of the existing theories for composite laminated is made, along

with a brief review of the finite element method and its fundamentals.

Chapter 3 covers the development of the model: from the displacement field and constitutive relations,

to the derivation of the finite element model in the end.

Chapter 4 contains the description of the interaction between Abaqus and the subroutine developed,

explaining how the model was implemented.

In chapter 5, a critical analysis of the results is made, using referenced examples for comparison of

results, in order to validate the implemented model.

In chapter 6 conclusions are made regarding the work done and what can still be done to further

improve the achievements accomplished herein.

3

Page 22: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

4

Page 23: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

Chapter 2

Theoretical Overview

Composite laminates have been object of study for many years and several theories on how to model them

exist, depending on the type of analysis [11]. Additional information about these theories can be found

in the articles by Carrera [12–14] and Demasi [15–17]. Both these authors proposed unified formulations

which can work with a variety of existing theories, namely Carrera Unified Formulation (CUF) [18] and

Generalized Unified Formulation (GUF) [19].

Typically, composite laminates have their planar dimensions much greater than their thickness, thus

are treated as a plate, and the theories to model composite laminated plates are generically divided

into three categories: equivalent single-layer theories (2-D), three-dimensional elasticity theories (3-D),

whether traditional 3-D or layer-wise theories, and the multiple model theories (2-D and 3-D). The latter

is a combination of the previous two and will not be covered in this work [20].

The three-dimensional elasticity theories, first recommended by Noor [21, 22], are the most accurate

ones and are often used when one wishes to compute the stress and strain distribution near material or

geometric discontinuities and near areas of intense loading or when great accuracy is needed. Since the

associated costs are high and computational implementation is heavy, there is still the need to determine

simpler theories, that model the generality of engineering problems without the complexity of three-

dimensional elasticity theories. Exact solutions were presented by Pagano [23, 24] and are still very

useful in present days.

For the reasons presented above, the equivalent single-layer theories (ESL) were developed.By making

assumptions regarding the kinematics of deformation or the stress state along the thickness, ESL theo-

ries treat a multiple layer heterogeneous laminate as an equivalent single-layer with overall constitutive

behavior, thus reducing a 3-D to a 2-D problem.

The simplest ESL theory is the classical laminated plate theory (CLPT) [25–27], derived from the

Kirchoff plate theory. The definition of the displacement field implies that straight lines normal to the

x− y plane before the deformation remain straight and normal to the mid-surface after the deformation.

Furthermore, the Kirchoff plate theory assumes both transverse shear and transverse normal effects

to be negligible. Since transverse effects are important when analyzing a composite laminate, due to the

interaction between the layers, given the necessary conditions of compatibility and equilibrium between

5

Page 24: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

them, this theory is not appropriate to model the intended problem.

A more appropriate theory would be the first-order shear deformation theory (FSDT). Based on

Reissner [28] and Mindlin [29], FSDT accounts for transverse shear deformation, by assuming that the

transverse shear strain is constant through the thickness. This allows that straight lines normal to

the x − y plane before the deformation no longer need to remain normal to the mid-surface after the

deformation.

The introduction of constant transverse shear strain implies constant transverse shear stress, arising

the need to introduce a shear correction factor, in order to compensate the unrealistic stress distribution,

which should be parabolic through the thickness. The shear correction factor is difficult to compute and

has a considerable associated error.

This disadvantage can be overcome by using high-order shear deformation theories (HSDT). HSDT

are widely used, existing many articles in the literature; some remarkable contributions are those made

by Reddy [30], Matsunaga [31], Kant and Swaminathan [32] and Liu et al [33].

HSDT involve higher-order terms in the Taylor’s expansion of the displacements in the thickness

coordinate. For each additional term, a dependent unknown is introduced in the theory, increasing the

problem’s complexity and, consequently, the computational effort. Hence, a third-order shear deformation

theory (TSDT) will be used, for the satisfactory accuracy, without being overly demanding complex

[32, 34].

Since the displacement field has third order terms, straight lines normal to the x− y plane before the

deformation no longer need to remain neither straight nor normal to the mid-surface after the deformation,

having instead a quadratic variation of strains and stress through the thickness.

It can be seen in figure 2.1, the undeformed transverse straight line normal to the mid-surface; the

CLPT case, where the deformed line is straight and normal; the FSDT case, where the straight line is

no longer normal after the deformation; and finally the TSDT case, where the line is no longer straight,

being of a quadratic form.

Due to the complexity of most engineering problems regarding composite materials, the exact solution

for most of these problems is impossible to find. Therefore, if one wishes to study the behavior of a certain

material or component, the need to employ a numerical method arises.

Engineering problems are modeled by a set of differential or integral equations, for which analytical

methods are not capable of finding solutions. Numerical methods, on the other hand, are able to find

these solutions, by approaching the problem differently and making use of the computational performance

of today.

A very popular numerical method among engineers, that will be used in this work, is the finite element

method (FEM). The FEM is derived from the variational methods developed by Ritz and Galerkin. The

method was first developed in Boeing, with the purpose of studying aircraft structures and, although the

method had been presented several years earlier, the first article that refers to the FEM is from 1956.

The basic principles of the FEM were stated in 1954, prior to the publication of the article, and the name

was only given in 1960 [35]. Ever since, articles and books about this subject have been increasing, with

a considerable number of referenced authors studying it. Remarkable books that were used in this work

6

Page 25: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

Figure 2.1: Comparison of a deformed transversal normal in CLPT, FSDT and TSDT [20].

are those by Zienkiewicz [36], Reddy [37], Oñate [38, 39], Ferreira [40] and Bathe [41].

The approach of the FEM is to turn a complex domain into a set of simpler geometric shapes (triangu-

lar and quadrilateral shapes are the ones mostly used), called finite elements. The solution is computed

for each of these elements and assembled for the domain, in order to obtain an approximated global

solution of the problem.

The idea of dividing a domain into a finite number of sub domains as in figure 2.2 is not new: an

illustrative example is that of ancient mathematicians that computed the value of π by noting that a

circle could be approximated by a polygon of n sides. As the value of n increases (domain discretization

refinement), the polygon shape becomes more similar to that of the circle and more accurate the value

obtained for π becomes.

Following the domain discretization, the governing equations of the problem are transformed into

a set of algebraic equations, by linearly combining the unknown nodal parameters with approximation

functions, commonly called shape functions, obtaining, thus, the finite element model for the element.

Finally, the assembly of the elements is made, taking into account the connectivities between them,

that is, the way the elements must be combined, so that the final domain is equal to the initial one.

Hence, obtaining a system of algebraic equations that depend on a set of unknown parameters, to be

determined by the system’s solution. Obviously, when the problem’s complexity increases, the variables

to be determined also increase, thus being required greater computational capacity to solve the finite

element analysis. Once the main system of equations is solved, it is possible to compute other quantities

of interest.

7

Page 26: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

Figure 2.2: Division of a domain into finite elements [38].

8

Page 27: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

Chapter 3

Development of the Model

The development of the element based on a third-order shear deformation theory was divided in two

stages. In fact, it was thought that it would be easier to implement this model in two separate steps for

verification purposes and to correct in each step any existing errors.

Therefore, the first stage covered the implementation of an element using the TSDT, but considering

in fact a single-layer plate of simply isotropic material.

In the second stage, the laminated composite plate was considered, including laminae of orthotropic

material.

The following subsections cover in detail the assumptions made and the steps taken in each stage.

3.1 Single-layer Plate Model

3.1.1 Displacement field and generalized strain vector

It was used for this element a high-order theory, with the third-order displacement field of the form

u(x, y, z, t) = u0(x, y, t) + zθ1x(x, y, t) + z2θ2x(x, y, t) + z3θ3x(x, y, t)

v(x, y, z, t) = v0(x, y, t) + zθ1y(x, y, t) + z2θ2y(x, y, t) + z3θ3y(x, y, t)

w(x, y, z, t) = w0(x, y, t) (3.1.1)

where {u0, v0, w0, θ1x, θ1y, θ2x, θ2y, θ3x, θ3y} are the degrees of freedom of the element, thus being

unknown functions to be determined.

The complete definition of the nonlinear strains are given by

9

Page 28: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

Exx = ∂u

∂x+ 1

2

[(∂u∂x

)2+(∂v∂x

)2+(∂w∂x

)2]

Eyy = ∂v

∂y+ 1

2

[(∂u∂y

)2+(∂v∂y

)2+(∂w∂y

)2]

Ezz = ∂w

∂z+ 1

2

[(∂u∂z

)2+(∂v∂z

)2+(∂w∂z

)2]

Exy = 12

(∂u

∂y+ ∂v

∂x+ ∂u

∂x

∂u

∂y+ ∂v

∂x

∂v

∂y+ ∂w

∂x

∂w

∂y

)Exz = 1

2

(∂u

∂z+ ∂w

∂x+ ∂u

∂x

∂u

∂z+ ∂v

∂x

∂v

∂z+ ∂w

∂x

∂w

∂z

)Eyz = 1

2

(∂v

∂z+ ∂w

∂y+ ∂u

∂y

∂u

∂z+ ∂v

∂y

∂v

∂z+ ∂w

∂y

∂w

∂z

)(3.1.2)

In the framework of linear static analysis, the small strains may be assumed for simplification. Using

the notation εij instead of Eij , the strain-displacement relations are given by

εxx = ∂u

∂x

εyy = ∂v

∂y

εzz = ∂w

∂z

γxy = ∂u

∂y+ ∂v

∂x

γxz = ∂u

∂z+ ∂w

∂x

γyz = ∂v

∂z+ ∂w

∂y(3.1.3)

where

γxy = 2εxy, γxz = 2εxz, γyz = 2εyz

Substituting 3.1.1 into 3.1.3

εxx = ∂u0

∂x+ z

∂θ1x

∂x+ z2 ∂θ2x

∂x+ z3 ∂θ3x

∂x

εyy = ∂v0

∂y+ z

∂θ1y

∂y+ z2 ∂θ2y

∂y+ z3 ∂θ3y

∂y

εzz = 0

γxy = ∂u0

∂y+ z

∂θ1x

∂y+ z2 ∂θ2x

∂y+ z3 ∂θ3x

∂y+ ∂v0

∂x+ z

∂θ1y

∂x+ z2 ∂θ2y

∂x+ z3 ∂θ3y

∂x

γxz = θ1x + 2zθ2x + 3z2θ3x + ∂w0

∂x

γyz = θ1y + 2zθ2y + 3z2θ3x + ∂w0

∂y(3.1.4)

10

Page 29: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

Re-writing 3.1.4 gives

ε =

εxx

εyy

γxy

...

γxz

γyz

=

∂u0∂x + z2 ∂θ2x

∂x

∂v0∂y + z2 ∂θ2y

∂y

∂u0∂y + ∂v0

∂x + z2 ∂θ2x

∂y + z2 ∂θ2y

∂x

..................

0

0

+

z ∂θ1x

∂x + z3 ∂θ3x

∂x

z∂θ1y

∂y + z3 ∂θ3y

∂y

z ∂θ1x

∂y + z∂θ1y

∂x + z3 ∂θ3x

∂y + z3 ∂θ3y

∂x

............................

θ1x + 2zθ2x + 3z2θ3x + ∂w0∂x

θ1y + 2zθ2y + 3z2θ3x + ∂w0∂y

=

εm0+

εbεs = Sε̂ (3.1.5)

where ε̂ ={ε̂m, ε̂b, ε̂s

}T, corresponding to membrane, bending and shear strains, such that:

ε̂m ={∂u0∂x ,

∂v0∂y ,

∂u0∂y + ∂v0

∂x ,∂θ2x

∂x ,∂θ2y

∂y ,∂θ2x

∂y + ∂θ2y

∂x

}Tε̂b =

{∂θ1x

∂x ,∂θ1y

∂y ,∂θ1x

∂y + ∂θ1y

∂x ,∂θ3x

∂x ,∂θ3y

∂y ,∂θ3x

∂y + ∂θ3y

∂x

}Tε̂s =

{2θ2x, 2θ2y,

∂w0∂x + θ1x,

∂w0∂y + θ1y, 3θ3x, 3θ3x

}T(3.1.6)

and S, the strain transformation matrix,

S =

1 0 0 z2 0 0 z 0 0 z3 0 0 0 0 0 0 0 0

0 1 0 0 z2 0 0 z 0 0 z3 0 0 0 0 0 0 0

0 0 1 0 0 z2 0 0 z 0 0 z3 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 2z 0 1 0 3z2 0

0 0 0 0 0 0 0 0 0 0 0 0 0 2z 0 1 0 3z2

3.1.2 Stress-strain relationship and generalized constitutive matrix

The stress-strain relationship for the case of isotropic material is as follows:

σxx

σyy

σxy

σxz

σyz

=

E1−ν2

E1−ν2 ν 0 0 0

E1−ν2 ν

E1−ν2 0 0 0

0 0 E2(1+ν) 0 0

0 0 0 E2(1+ν) 0

0 0 0 0 E2(1+ν)

εxx

εyy

γxy

γxz

γyz

which can be written in a compact form as

σ = Dε (3.1.7)

In order to get the generalized constitutive matrix, one starts by defining the vector of resultant

11

Page 30: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

stresses at a point of the plate mid-surface as

σ̂ =

σ̂m

.....

0

+

σ̂b

.....

σ̂s

=∫ t/2

−t/2STσdz (3.1.8)

where t is the plate thickness and

σ̂m =

Nx

Ny

Nxy

(3.1.9)

σ̂b =

Mx

My

Mxy

σ̂s =

QxQy

are the membrane forces, bending moments and transverse shear forces, respectively.

Substituting equations 3.1.5 and 3.1.7 into 3.1.8, it can be written

σ̂ =∫ t/2

−t/2STDεdz =

∫ t/2

−t/2STDSε̂dz (3.1.10)

thus, defining the generalized constitutive matrix as

D̂ =∫ t/2

−t/2STDSdz (3.1.11)

which is of the form

D̂ =

D̂m D̂mb 0

D̂mb D̂b 0

0 0 D̂s

(3.1.12)

As it can be seen in 3.1.12, there are four different constitutive matrices, D̂m, D̂mb, D̂b, D̂s, that

correspond to membrane, coupling between membrane and bending, bending and shear effects, respec-

tively. Furthermore, for a symmetric plate as the one in study in the present stage, the membrane and

bending effects are uncoupled, thus D̂mb = 0.

12

Page 31: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

3.2 Laminated Composite Plate Model

3.2.1 Constitutive relation

Composite materials combine two or more materials to improve the properties of the final composite

material. The scope of this work are the composite laminates, which are made of several layers. Consid-

ering each layer as unidirectional fiber reinforced composite laminae, that can be disposed in a specific

direction, one can further improve the desired properties.

For the case in study, it was assumed that each layer is thin and as such is under a plane state of stress.

Because composite laminates are weak in transverse direction, σ13 and σ23 can not be neglected, despite

their values being small when compared to those of σ11, σ22 and σ12. Furthermore, as it is considered an

equivalent-single layer theory, the transverse normal stress σ33 may be considered negligible.

Thus, the constitutive relation for an orthotropic lamina, in the lamina coordinate system, is given

by

σ11

σ22

σ12

σ13

σ23

=

Q11 Q12 0 0 0

Q12 Q22 0 0 0

0 0 Q33 0 0

0 0 0 Q44 0

0 0 0 0 Q55

ε11

ε22

γ12

γ13

γ23

(3.2.1)

or in a compact form,

σl = Dεl (3.2.2)

with,

Q11 = E1

1− ν12ν21, Q12 = ν12E2

1− ν12ν21, Q22 = E2

1− ν12ν21,

Q33 =G12 , Q33 = G13 , Q33 = G23. (3.2.3)

and

ν21 = E2

E1ν12

3.2.2 Transformation of constitutive relations

As mentioned in previously, each layer is disposed in a specific direction, rotated an angle, θ, from the

problem coordinate system in the x − y plane, as it can be seen in figure 3.1. Hence, there is the need

to compute all the constitutive relations in the problem coordinate system (x, y, z), from the lamina

coordinate system (x1, x2, x3).

13

Page 32: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

Figure 3.1: Lamina and problem coordinate system [20].

The stress components from the lamina (l) to the problem (p) coordinate system are related as follows:

σxx

σyy

σxy

σxz

σyz

=

cos2 θ sin2 θ − sin 2θ 0 0

sin2 θ cos2 θ sin 2θ 0 0

sin θ cos θ − sin θ cos θ cos2 θ − sin2 θ 0 0

0 0 0 cos θ − sin θ

0 0 0 sin θ cos θ

σ11

σ22

σ12

σ13

σ23

(3.2.4)

which can be written in a compact form as

σp = Tσl (3.2.5)

and the strain components are related by

ε11

ε22

γ12

γ13

γ23

=

cos2 θ sin2 θ sin θ cos θ 0 0

sin2 θ cos2 θ − sin θ cos θ 0 0

− sin 2θ sin 2θ cos2 θ − sin2 θ 0 0

0 0 0 cos θ sin θ

0 0 0 − sin θ cos θ

εxx

εyy

γxy

γxz

γyz

(3.2.6)

which can be written in a compact form as

εl = T Tεp (3.2.7)

Ultimately, for the transformed material stiffness matrix, taking 3.2.5 and combining with 3.2.2 and

3.2.7,

σp = Tσl = TDεl = TDT Tεp (3.2.8)

thus, defining the transformed material stiffness matrix, D̄, as

14

Page 33: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

D̄ = TDT T (3.2.9)

Since both the displacement field and the strain-displacement relations are the same from the previous

stage, the strain transformation matrix, S, is also the same.

However, the definition of the generalized constitutive matrix, D̂, has to be re-written, taking into

account that the problem does not involve a single-layer but several ones. Thus, the integration limits

have to be redefined,

D̂ =∫ z2

z1

ST D̄Sdz (3.2.10)

with z1 and z2 corresponding, respectively, to the lower and upper surface of each layer, in the problem

coordinate z.

3.3 Finite element formulation

Considering a plate discretized into n-noded finite elements of quadrilateral shape, the degrees of freedom

solution is approximated, within each element as

u =

u0

v0

w0

θ1x

θ1y

θ2x

θ2x

θ3x

θ3y

=n∑i=1

N ia(e)i (3.3.1)

with

N i =

Ni 0 0 0 0 0 0 0 0

0 Ni 0 0 0 0 0 0 0

0 0 Ni 0 0 0 0 0 0

0 0 0 Ni 0 0 0 0 0

0 0 0 0 Ni 0 0 0 0

0 0 0 0 0 Ni 0 0 0

0 0 0 0 0 0 Ni 0 0

0 0 0 0 0 0 0 Ni 0

0 0 0 0 0 0 0 0 Ni

and

a(e)i =

{u0i , v0i , w0i , θ1xi , θ1yi , θ2xi , θ2xi , θ3xi , θ3yi

}T15

Page 34: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

where Ni(ξ, η) is the continuous shape function of node i, which are detailed hereafter in a specific

subsection.

Substituting 3.3.1 into the expression for ε̂ of 3.1.6, it can be written

ε̂m =n∑i=1

{∂Ni

∂x u0i ,∂Ni

∂y v0i ,∂Ni

∂y u0i + ∂Ni

∂x v0i ,∂Ni

∂x θ2xi ,∂Ni

∂y θ2yi ,∂Ni

∂y θ2xi + ∂Ni

∂x θ2yi

}Tε̂b =

n∑i=1

{∂Ni

∂x θ1xi ,∂Ni

∂y θ1yi ,∂Ni

∂y θ1xi + ∂Ni

∂x θ1yi ,∂Ni

∂x θ3xi ,∂Ni

∂y θ3yi ,∂Ni

∂y θ3xi + ∂Ni

∂x θ3yi

}Tε̂s =

n∑i=1

{2Niθ2xi , 2Niθ2yi ,

∂Ni

∂x w0i +Niθ1xi ,∂Ni

∂y w0i +Niθ1yi , 3Niθ3xi , 3Niθ3xi

}T(3.3.2)

thus, concluding that

ε̂m =n∑i=1

Bmia(e)i

ε̂b =n∑i=1

Bmba

(e)i

ε̂s =n∑i=1

Bmsa

(e)i (3.3.3)

where

Bmi =

∂Ni

∂x 0 0 0 0 0 0 0 0

0 ∂Ni

∂y 0 0 0 0 0 0 0∂Ni

∂y∂Ni

∂x 0 0 0 0 0 0 0

0 0 0 0 0 ∂Ni

∂x 0 0 0

0 0 0 0 0 0 ∂Ni

∂y 0 0

0 0 0 0 0 ∂Ni

∂y∂Ni

∂x 0 0

Bbi=

0 0 0 ∂Ni

∂x 0 0 0 0 0

0 0 0 0 ∂Ni

∂y 0 0 0 0

0 0 0 ∂Ni

∂y∂Ni

∂x 0 0 0 0

0 0 0 0 0 0 0 ∂Ni

∂x 0

0 0 0 0 0 0 0 0 ∂Ni

∂y

0 0 0 0 0 0 0 ∂Ni

∂y∂Ni

∂x

Bsi =

0 0 0 0 0 2Ni 0 0 0

0 0 0 0 0 0 2Ni 0 0

0 0 ∂Ni

∂x 0 0 0 0 0 0

0 0 ∂Ni

∂y 0 0 0 0 0 0

0 0 0 0 0 0 0 3Ni 0

0 0 0 0 0 0 0 0 3Ni

(3.3.4)

16

Page 35: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

are the contribution of the membrane, bending and shear effects, respectively, for the generalized strain

matrix, Bi for the ith node.

Matrices Bm, Bb and Bs, of the element (e) of n nodes, are computed by merging Bmi, Bbi

and

Bsi, of each node i = 1, 2...n. An example can be seen below,

Bs =

0 0 0 0 0 2N1 0 0 0 . 0 0 0 0 0 2Nn 0 0 0

0 0 0 0 0 0 2N1 0 0 . 0 0 0 0 0 0 2Nn 0 0

0 0 ∂N1∂x 0 0 0 0 0 0 . 0 0 ∂Nn

∂x 0 0 0 0 0 0

0 0 ∂N1∂y 0 0 0 0 0 0 . 0 0 ∂Nn

∂y 0 0 0 0 0 0

0 0 0 0 0 0 0 3N1 0 . 0 0 0 0 0 0 0 3Nn 0

0 0 0 0 0 0 0 0 3N1 . 0 0 0 0 0 0 0 0 3Nn

3.3.1 Principle of virtual work and stiffness matrix

Considering an element which has undergone a certain level of membrane (ε̂m), bending (ε̂b) and shear

(ε̂s) deformation, the associated stress vectors are denoted by (σ̂m), (σ̂b) and (σ̂s), respectively, and,

at the ith node, the displacement vector is represented by u and the external nodal force by f . By the

principle of virtual work, considering a virtual displacement, δu, then

fT δu =∫V

σ̂Tmδε̂mjdv +∫V

σ̂Tb δε̂bjdv +∫V

σ̂Ts δε̂sjdv (3.3.5)

Using equations 3.3.3, it can be written that

δε̂mj= Bmj

δu

δε̂bj = Bbjδu

δε̂sj= Bsj

δu (3.3.6)

and, from 3.1.12, σ̂m = D̂mε̂m = D̂mBmiu, σ̂b = D̂bε̂b = D̂bBbi

u and σ̂s = D̂sε̂s = D̂sBsiu.

Replacing in 3.3.5, yields

fT δu =∫A(e)

uTBTmiD̂T

mBmjδudA+

∫A(e)

uTBTbiD̂T

b BbjδudA+

∫A(e)

uTBTsiD̂T

sBsjδudA (3.3.7)

Since the above equation is valid for any δu, then

fT =∫A(e)

uTBTmiD̂T

mBmjdA+∫A(e)

uTBTbiD̂T

b BbjdA+∫A(e)

uTBTsiD̂T

sBsjdA (3.3.8)

By taking transpose of both sides, using f = Kmu +Kbu +Ksu and knowing that matrices D̂m,

17

Page 36: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

D̂b and D̂s are symmetric, yields

K(e)mij

=∫A(e)

BTmiD̂mBmjdA (3.3.9)

K(e)bij

=∫A(e)

BTbiD̂bBbj

dA (3.3.10)

K(e)sij

=∫A(e)

BTsiD̂sBsj

dA (3.3.11)

The contribution of the coupling between membrane and bending effect to the global stiffness matrix

is given by

K(e)mbij

=∫A(e)

BTmiD̂mbBbjdA+

∫A(e)

BTbiD̂mbBmjdA (3.3.12)

The global stiffness matrix for the element can then be obtained by adding the contributions from the

stiffness matrices of membrane, bending shear and coupling between membrane and bending, arriving to

a matrix of the form:

K =

Km Kmb 0

Kmb Kb 0

0 0 Ks

(3.3.13)

3.3.2 Shape functions and numerical integration

For the finite element discretization, it was chosen the eight-node quadratic Serendipity rectangular

element. The element used can be seen in Figure 3.2, as well as the numeration given to the nodes.

Figure 3.2: Eight-node quadratic Serendipity rectangular element [20].

The shape functions in natural coordinates (ξ, η), which are defined in −1 6 (ξ, η) 6 1 are given by

18

Page 37: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

N1

N2

N3

N4

N5

N6

N7

N8

= 14

(1− ξ)(1− η)(−ξ − η − 1)

(1 + ξ)(1− η)(ξ − η − 1)

(1 + ξ)(1 + η)(ξ + η − 1)

(1− ξ)(1 + η)(−ξ + η − 1)

2(1− ξ2)(1− η)

2(1 + ξ)(1− η2)

2(1− ξ2)(1 + η)

2(1− ξ)(1− η2)

(3.3.14)

and its derivatives by

∂N1∂ξ

∂N1∂η

∂N2∂ξ

∂N2∂η

∂N3∂ξ

∂N3∂η

∂N4∂ξ

∂N4∂η

∂N5∂ξ

∂N5∂η

∂N6∂ξ

∂N6∂η

∂N7∂ξ

∂N7∂η

∂N8∂ξ

∂N8∂η

= 14

(2ξ + η)(1− η) (2η + ξ)(1− ξ)

(2ξ − η)(1− η) (2η − ξ)(1 + ξ)

(2ξ + η)(1 + η) (2η + ξ)(1 + ξ)

(2ξ − η)(1 + η) (2η − ξ)(1− ξ)

4ξ(η − 1) 2(ξ2 − 1)

2(1− η2) −4η(ξ + 1)

−4ξ(η + 1) 2(1− ξ2)

2(η2 − 1) 4η(ξ − 1)

(3.3.15)

The transformation from the local coordinate system, (ξ, η), to the global coordinate system, (x, y) is

given by

x =n∑i=1

Nixi , y =n∑i=1

Niyi. (3.3.16)

where Ni are the shape functions for the Serendipity element.

Analyzing B matrices, present in 3.3.4, one can conclude that the derivatives of the shape functions

with respect to the global coordinate system, ∂Ni

∂x and ∂Ni

∂y need to be determined. By the chain rule of

partial differentiation

∂Ni

∂ξ

∂Ni

∂η

=

∂x∂ξ ∂y∂η

∂x∂ξ

∂y∂η

∂Ni

∂x

∂Ni

∂y

(3.3.17)

where

J =

∂x∂ξ ∂y∂η

∂x∂ξ

∂y∂η

(3.3.18)

is the Jacobian matrix of the transformation 3.3.16 and its determinant, is called the Jacobian.

Inverting 3.3.17 yields

19

Page 38: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

∂Ni

∂x

∂Ni

∂y

= J−1

∂Ni

∂ξ

∂Ni

∂η

(3.3.19)

with ∂Ni

∂x

∂Ni

∂y

=

∂N1∂x

∂N2∂x

∂N3∂x

∂N4∂x

∂N5∂x

∂N6∂x

∂N7∂x

∂N8∂x

∂N1∂y

∂N2∂y

∂N3∂y

∂N4∂y

∂N5∂y

∂N6∂y

∂N7∂y

∂N8∂y

∂Ni

∂ξ

∂Ni

∂η

=

∂N1∂ξ

∂N2∂ξ

∂N3∂ξ

∂N4∂ξ

∂N5∂ξ

∂N6∂ξ

∂N7∂ξ

∂N8∂ξ

∂N1∂η

∂N2∂η

∂N3∂η

∂N4∂η

∂N5∂η

∂N6∂η

∂N7∂η

∂N8∂η

It is only missing the definition of the Jacobian matrix. From 3.3.16, it can be written

∂x

∂ξ=

n∑i=1

∂Ni∂ξ

xi

∂x

∂η=

n∑i=1

∂Ni∂η

xi

∂y

∂ξ=

n∑i=1

∂Ni∂ξ

yi

∂y

∂η=

n∑i=1

∂Ni∂η

yi (3.3.20)

which, combining with 3.3.18, can be written in a matrix form as

J =

∂N1∂ξ

∂N2∂ξ

∂N3∂ξ

∂N4∂ξ

∂N5∂ξ

∂N6∂ξ

∂N7∂ξ

∂N8∂ξ

∂N1∂η

∂N2∂η

∂N3∂η

∂N4∂η

∂N5∂η

∂N6∂η

∂N7∂η

∂N8∂η

x1 y1

x2 y2

x3 y3

x4 y4

x5 y5

x6 y6

x7 y7

x8 y8

(3.3.21)

The integrals present from 3.3.9 to 3.3.11 are evaluated using the Gauss-Legendre quadrature rule,

Ka =m∑i=1

m∑j=1

Ba(ξi, ηj)T D̂aBa(ξi, ηj)(ξi, ηj)WiWj (3.3.22)

where a = m, b, s,mb and Wi and Wj are the Gauss weights corresponding to the coordinate ξi and ηj ,

respectively.

From 3.3.14, the maximum order of the shape functions in each direction is two. So, the maximum

order of the polynomial present in the integral in that direction is doubled, thus p = 2 × 2 = 4. Hence,

20

Page 39: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

knowing that a polynomial is integrated exactly by employing N Gauss points, with N = int[ 12 (p+ 1)],

then the minimum number of Gauss points used in each direction will be three for bending, membrane

and coupling effects. For the shear effect, it will be used reduced integration, to avoid shear locking, thus

two Gauss points, in each direction, are intentionally used.

In figures 3.3 and 3.4 are presented the coordinates of the integration points for three and two inte-

gration points in each direction, respectively.

Figure 3.3: 3x3 quadratic element - integration points coordinates [20].

Figure 3.4: 2x2 linear element - integration points coordinates [20].

The Gauss weights depend on the number of integration points used, m. Weights for two and three

integration points are presented in table 3.1

m Points ξi or ηj , Weights Wi or Wj

2 ±√

1/3 1

3 0 8/9±√

3/5 5/9

Table 3.1: Gauss weights.

21

Page 40: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

22

Page 41: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

Chapter 4

Implementation of the Model

Abaqus, together with the UEL subroutine and the input file, works as a finite element solver. In this

chapter it will be covered in detail, how these three parts interact and how each one must be defined, in

order to correctly implement the model developed in the previous chapter.

4.1 UEL subroutine

The UEL subroutine was programmed in FORTRAN 90, which is a free format code. The FORTRAN

code has to start with the default header provided by Abaqus, present in figure 4.1.

Figure 4.1: UEL subroutine default header.

One can think of the UEL subroutine as a block that receives input data, treats that data accordingly

to what the user programs and then delivers the output data to Abaqus, as shown in figure 4.2. This

UEL subroutine is called consecutively a number of times, and actually in an iterative process controlled

by Abaqus. The header states the input and output data and the respective dimensions.

Figure 4.2: Input and output variables interacting with UEL block [8].

23

Page 42: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

Regarding the input:

• COORDS - is a matrix containing the coordinates of the element that is being calculated. Thus,

the matrix dimensions are 2×N : 2 because it is a two dimensional plate and N is the number of

nodes of the element that is being used;

• U - is not defined in the subroutine. In fact, it is calculated by Abaqus, once the stiffness matrix

is defined, and it is used to compute the force vector inside the subroutine;

• dU - is not defined in the subroutine. Like in the previous item, Abaqus calculates it and the

subroutine uses it to compute the strains.

As for the output:

• RHS - corresponds to the internal force vector of the element, for each node and each degree of

freedom. Thus, the vector dimension is equal to the number of nodes times the number of degrees

of freedom per node;

• AMATRX - is the stiffness matrix of the element that will calculated by the subroutine. It has

dimensions N ×N , with N equal to the number of nodes times the number of degrees of freedom

per node, i.e. the total number of degrees of freedom of the element.

The state variables correspond to SVARS and are a vector that contains the state variables of the

element and is updated by the subroutine, in this case, updated with the strains and stresses at integration

points. Bending and membrane effects use nine integration points and account for three strains (εxx,

εxx, γxy) and three stresses (σxx, σxx, σxx). Hence having 6 × 9 = 54 entries for the state variables

vector. On the other hand, shear effect uses four integration points and accounts for two strains (γxz,

γyz) and two stresses (σxz, σyz) having thus 4 × 4 = 16 entries for the state variables vector. In total,

SVARS dimension is equal to 70. It is important to store the results for strains and stresses in a certain

predefined manner, when programming the subroutine, so that it is possible to confer the results later

on.

Based on what was presented so far, one can conclude that the subroutine is called at least two times,

for the simplest case of having a mesh with a single element. The first time all the input variables are zero

except for COORDS, and only the stiffness matrix is defined within the subroutine, thus being the only

output variable different from zero. The second time, Abaqus has computed both U and dU, making use

of the already calculated stiffness matrix, and gives these quantities as inputs to the subroutine, that is

now able to calculate the force vector and the strains components. If a more complex mesh is used, the

subroutine will be called two times for each element that constitutes the plate, performing the described

methodology for every element.

In the UEL subroutine, material properties must be defined for each lamina, as well as the number

of laminae, direction angle and thickness of each one. Besides, all the variables used in the subroutine

must be declared.

24

Page 43: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

A brief explanation will be made regarding the calculations of the three output variables of the UEL

subroutine: stiffness matrix, state variables and force vector, so that it is clear how one can go from the

development to the computational implementation of the element.

4.1.1 Stiffness matrix

The stiffness matrix calculations can be viewed as a block that will be performed for each lamina individ-

ually, by using a DO loop, (the lamina loop); by the end of each iteration through this loop, the stiffness

matrix will be calculated for a specific lamina and, when the loop is performed for all the laminae, the

final stiffness matrix for the composite laminate is obtained.

In the first step inside the lamina loop, the constitutive matrices, D̂m, D̂b, D̂s, D̂mb, are defined from

equation 3.2.10, after defining the z coordinates for the lower and upper surface of the lamina (limits of

the integral) and using the properties previously defined for the lamina.

Next, the calculations are divided by bending, shear, membrane and coupling effects. Once again, a

DO loop is used for each effect (the effect loop) and all follow the same logic: for each iteration through

the loop, a pair of integration points and their respective weights, (ξi, ηj) and (Wi,Wj), as well as the

Jacobian, are used, performing the following steps:

• substitution of the set of integration points in 3.3.14 and 3.3.15;

• calculation of the Jacobian matrix, J , and its inverse, as stated in equation 3.3.21 (using the input

variable COORDS);

• calculation of the shape functions derivatives with respect to x and y, from 3.3.19;

• assemblage of the B matrix, according to equations 3.3.4

• calculation of the stiffness matrix, from equation 3.3.22.

It is important to note that the stiffness matrix obtained in each effect loop is the contribution of that

effect to the global stiffness matrix, as in equations 3.3.9, 3.3.10, 3.3.11 and 3.3.12. Hence, at the end of

each iteration through the effect loop, this "local" stiffness matrix is added to a global stiffness matrix,

that will ultimately correspond, after all the iterations through the lamina loop are made, to the final

stiffness matrix for the element that will be passed as output to Abaqus.

4.1.2 State variables

State variables are computed for a single location in the plate’s thickness, thus for a unique value of the

global coordinate z. This value is defined right at the beginning of the subroutine, depending on the

analysis that is being conducted.

Furthermore, the calculations for the state variables are performed along with those of the stiffness

matrix, more precisely in the bending, membrane and shear effect loops, since their definitions are mixed.

Analyzing the strains definition present in equation 3.1.4, one can conclude that membrane and

bending effects contribute to εxx, εyy and γxy, whereas shear effect contributes to γxz and γyz.

25

Page 44: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

Following the same line of thought produced in sections 3.1.1 and 3.3, but considering the actual

strains, ε ={εm, εb, εs

}T, it can be written that,

εm =n∑i=1

Bzmia

(e)i

εb =n∑i=1

Bzmba

(e)i

εs =n∑i=1

Bzmsa

(e)i (4.1.1)

where

Bzmi

=

∂Ni

∂x 0 0 0 0 0 0 0 0

0 ∂Ni

∂y 0 0 0 0 0 0 0∂Ni

∂y∂Ni

∂x 0 0 0 0 0 0 0

0 0 0 0 0 ∂Ni

∂x z2 0 0 0

0 0 0 0 0 0 ∂Ni

∂y z2 0 0

0 0 0 0 0 ∂Ni

∂y z2 ∂Ni

∂x z2 0 0

Bzbi

=

0 0 0 ∂Ni

∂x z 0 0 0 0 0

0 0 0 0 ∂Ni

∂y z 0 0 0 0

0 0 0 ∂Ni

∂y z∂Ni

∂x z 0 0 0 0

0 0 0 0 0 0 0 ∂Ni

∂x z3 0

0 0 0 0 0 0 0 0 ∂Ni

∂y z3

0 0 0 0 0 0 0 ∂Ni

∂y z3 ∂Ni

∂x z3

Bzsi

=

0 0 0 0 0 2Niz 0 0 0

0 0 0 0 0 0 2Niz 0 0

0 0 ∂Ni

∂x 0 0 0 0 0 0

0 0 ∂Ni

∂y 0 0 0 0 0 0

0 0 0 0 0 0 0 3Niz2 0

0 0 0 0 0 0 0 0 3Niz2

(4.1.2)

These matrices are equal to Bi matrices only with the variable z present. In order to compute

these matrices, the same procedure presented for the stiffness matrix calculations is followed, adding the

corresponding terms z to the correct places in the matrices and substituting them for the coordinate

defined as the location for the computation of strains and stresses. Hence, the strains and stresses

calculations are performed by the following steps:

• in the membrane effect loop:

– calculation and assemblage of the matrix Bzbi;

– calculation of the membrane contribution to the strains, from equation 3.3.6, that is multiplying

26

Page 45: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

Bzbi

by dU;

– addition of this contribution to the positions of the state variables vector reserved for the

strains.

• in the bending effect loop:

– calculation and assemblage of the matrix Bzmi

;

– calculation of the contribution of the bending effect to the strains, from equation 3.3.6, that

is multiplying Bzmi

by dU;

– addition of this contribution to the positions of the state variables vector reserved for the

strains, which already includes the membrane effect loop, thus obtaining the final values for

εxx, εyy and γxy;

– from 3.2.8, calculation of the stresses, σxx, σyy and σxy, and addition of this values to the

reserved positions in the sate variables vector.

• in the shear effect loop:

– calculation and assemblage of the matrix Bzsi;

– calculation of γxz and γyz, from equation 3.3.6, that is multiplying Bzsi

by dU;

– addition of this values to the positions of the state variables vector reserved for these strains;

– from 3.2.8, calculation of the stresses, σxz, σyz and addition of this values to the reserved

positions in the sate variables vector.

4.1.3 Force vector

According to equation 3.3.8, once the global stiffness matrix is calculated, the force vector is computed

by multiplying the stiffness matrix by U.

In appendix B an example from a FORTRAN code is presented, making it possible to see the procedure

previously described actually programmed.

4.2 Input file

The input file has a .inp extension and can be edited in notepad. Its function is to provide information

and define some quantities needed for the subroutine.

Appendix A provides an example of a input file, used in this work. It is the simplest one, since it only

has one element. For presentation purposes, several sections were numbered, marked with ’##’ before

the number. Their functions are:

• ##1 - the coordinates of the nodes that define the several elements of the mesh;

• ##2 - information on the element used (type of element, number of nodes per element, maximum

number of coordinates at nodes, number of state variables per element and number of integration

points used);

27

Page 46: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

• ##3 - definition of elements by defining the nodes that constitute each element (a single element

in this case);

• ##4 - assembly of all elements;

• ##5 - boundary conditions and loads;

• ##6 - output requests.

4.3 Abaqus interaction

The interaction between Abaqus, the input file and the UEL subroutine is done through a command

window. Considering an input file named input.inp and a subroutine named uel.for (the default extension

is .f90 but for a correct compilation it must be changed to .for), the command line for compiling is as

presented in figure 4.3.

Figure 4.3: Command line for compiling.

If the compiler does not encounter any error, then Abaqus performs all the needed calculations and

generates several files, from which two are important for getting the results: the .odb and the .log files.

The .odb file is the one that can be opened with Abaqus CAE, where results for forces, moments,

displacements among others can be found. The .log file contains values of results that are considered of

interest.

Specifically, when programming the FORTRAN code, one can use the function print, in order to print

any information present in the code, such as the value of a certain variable, which will be printed in the

.log file. Since Abaqus can not interpret the state variables that are defined within the subroutine, it is

not possible to obtain results for strains and stresses in Abaqus CAE. Hence, the values for strains and

stresses must be programmed to be printed in the UEL subroutine and viewed later in the .log file.

28

Page 47: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

Chapter 5

Validation

To facilitate the validation of the model’s implementation, several steps of results analysis are considered,

in order to ensure that the procedure used and the UEL subroutine are correct. The validation was

first performed by comparing results obtained by the developed TSDT element and an Abaqus element,

the S8r. This Abaqus element is based on FSDT with eight nodes and the r indicates that it performs

reduced integration, to overcome shear locking.

Although this element is similar to the one developed and implemented, the fact that it is not based

on a high-order theory will have an impact on the results. Hence, with this validation it is not expected

a 100% match but a proximity between the results.

For the majority of the analysis performed, results for the displacements, reaction forces, strains and

stresses are covered. It is important to note that, the displacement field on which this theory is based,

imposes non-zero values for the shear strains, γxz and γyz, on the top and bottom surfaces of the plate.

Thus, the distribution of these quantities, and consequently σxz and σyz along the plate’s thickness is not

correct, although the shear strain energy density is the same as for the exact 3-D model. Therefore these

results will not be covered, as they are not meaningful. For a correct post-computation of these values

one has to make use of the equilibrium equations, even though this comes out of the scope of this work.

Results for displacements and reaction forces will be obtained from Abaqus CAE, whereas the strains

and stresses will be printed in the .log file, as discussed previously and presented in this work in tables.

Furthermore, for the model developed for the laminated composite plate, a comparison with an

analytical solution, available in the literature is also presented, to confirm in this case as well the validity

of the final model obtained.

5.1 Single-layer Plate

In this stage, a plate with dimensions 2 × 2m and 0.1m of thickness was used. The isotropic material

properties considered were E = 2× 108 Pa for the Young’s modulus and ν = 0.3 for the Poisson’s ratio.

The plate is fixed on two sides (x = 0 and y = 0) and two sets of conditions were used: a vertical

force of 50 kN in the node with the coordinates (2,2), or instead, a vertical displacement of 0, 1m in the

29

Page 48: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

node with the coordinates (2,2).

For the case of imposed displacement, results will be checked for the vertical reaction force, whereas

for the imposed force, it will be checked the results for the vertical displacement. For both cases, strains

(εxx, εyy, γxy) and stresses (σxx, σyy, σxy) will be also presented.

Since results for strains and stresses are only available at integration points, results were computed

using a single element mesh, since it is much simpler to compare four sets of values (one per integration

point) than four sets times the number of elements used. Obviously, a single element will have a significant

error associated. However, for this first step, it was thought that the results would be close enough, so

that a meaningful confirmation of the procedure used could be made.

In the following step, a 20 × 20 element mesh was used to obtain the values of displacements and

reaction forces. Since these values are obtained in Abaqus CAE, its visualization is simpler and a multiple

element mesh can be used, to obtain greater accuracy in results.

5.1.1 Vertical displacement

It can be seen in figures 5.1 and 5.2 the distribution of the vertical reaction force for both elements tested.

Figure 5.1: Vertical reaction force for the single element mesh: TSDT element (left); Abaqus element(right)).

Regarding the single element mesh, present in figure 5.1, the distribution of the reaction force is

consistent for both elements used , having its maximum in the opposite fixed node to that where the

displacement is applied: 1.844× 104 N and 1.600× 104 N , for TSDT and Abaqus element, respectively.

The fact that the plate is relatively thick (a/h = 20) contributes to the difference between the results,

since TSDT describes better the behavior for thick plates when compared to an element based on CLPT

or FSDT, as discussed previously. It is important to note the "black void" present in the middle of the

plate; this occurs when Abaqus can not interpret the data that is given or this data does not exist. Since

this happens for both TSDT element as for the Abaqus element, it was interpreted as an Abaqus CAE

limitation, rather than a programming error.

For the multiple element mesh, the maximum values 1.497× 103 N and 1.480× 103 N were obtained

for Abaqus and TSDT element, respectively. Once more, there were some representation difficulties:

30

Page 49: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

Figure 5.2: Vertical reaction force for the 20× 20 element mesh: Abaqus element (right); TSDT element(left).

Abaqus CAE illustrates the same color value of reaction force to the whole plate, which is not correct.

Since this happens for both Abaqus and TSDT element, it was not seen as an error.

The results for the strains and stresses, presented in tables 5.1 and 5.2 respectively, were computed

for the top surface of the plate (z = 0.05). Since Abaqus element performs reduced integration, strains

and stresses are only available in four integration points, hence the values are compared for those same

four integration points.

IP εxx εxx εyy εyy γxy γxyAbaqus TSDT Abaqus TSDT Abaqus TSDT

1 −5.245× 10−4 −5.396× 10−4 −5.245× 10−4 −5.396× 10−4 −1.392× 10−3 −1.429× 10−3

2 2.095× 10−4 2.285× 10−4 −2.334× 10−3 −2.365× 10−3 −2.125× 10−3 −2.136× 10−3

3 4.053× 10−4 5.021× 10−4 4.053× 10−4 5.021× 10−4 −3.960× 10−3 −3.870× 10−3

4 −2.334× 10−3 −2.365× 10−3 2.095× 10−4 2.285× 10−4 −2.125× 10−3 −2.136× 10−3

Table 5.1: Strain results for Abaqus and TSDT element: comparison for imposed vertical displacement.

IP σxx σxx σyy σyy σxy σxyAbaqus TSDT Abaqus TSDT Abaqus TSDT

1 −1.499× 105 −1.542× 105 −1.499× 105 −1.542× 105 −1.070× 105 −1.099× 105

2 −1.079× 105 −1.057× 105 −4.992× 105 −5.046× 105 −1.634× 105 −1.643× 105

3 1.158× 105 1.434× 105 1.158× 105 1.434× 105 −3.047× 105 −2.977× 105

4 −4.992× 105 −5.046× 105 −1.079× 105 −1.057× 105 −1.634× 105 −1.643× 105

Table 5.2: Stress results for Abaqus and TSDT element: comparison for imposed vertical displacement.

Despite the difficulties encountered with the representation in Abaqus CAE, the comparison of values

for strains and stresses is very satisfactory. In fact, the results obtained are consistent, even more knowing

that a single element is being used, which has always a considerable error associated.

31

Page 50: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

5.1.2 Vertical force

It can be seen in figures 5.3 and 5.4 the distribution of the vertical displacement when the 50 kN force is

applied.

Figure 5.3: Vertical displacement for the single element mesh: TSDT element (left); Abaqus element(right).

Figure 5.4: Vertical displacement for the 20 × 20 element mesh: TSDT element (left); Abaqus element(right).

The vertical displacement distribution representation is consistent to what is expected: 0 for the fixed

sides and a maximum on the node where the vertical force is applied. For the single element mesh,

this maximum value is −2.337m and −2.450m for the TSDT and Abaqus element respectively. For

the multiple element mesh, this maximum value converges to −3.378m and −3.340m for the TSDT

and Abaqus element respectively. The values are consistent both between elements as between the two

discretization used, since the multiple element mesh presents a greater value for the maximum vertical

displacement, which is to be expected because of the greater accuracy that this mesh provides.

The results for the strains and stresses were computed for the top surface of the plate (z = 0.05) and

are presented in tables 5.3 and 5.4, respectively. For the reasons presented in the previous section, results

for four integration points are evaluated.

These results are consistent and it was considered, together with the case of an imposed vertical

displacement, that the model was implemented correctly, both in terms of the stiffness matrix computation

32

Page 51: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

IP εxx εxx εyy εyy γxy γxyAbaqus TSDT Abaqus TSDT Abaqus TSDT

1 1.285× 10−2 1.261× 10−2 1.285× 10−2 1.261× 10−2 3.409× 10−2 3.339× 10−2

2 −5.132× 10−3 −5.340× 10−3 5.718× 10−2 5.525× 10−2 5.204× 10−2 4.991× 10−2

3 −9.927× 10−3 −1.173× 10−2 −9.927× 10−3 −1.173× 10−2 9.701× 10−2 9.043× 10−2

4 5.718× 10−2 5.525× 10−2 −5.132× 10−3 −5.340× 10−3 5.204× 10−2 4.991× 10−2

Table 5.3: Strain results for Abaqus and TSDT element: comparison for applied vertical force.

IP σxx σxx σyy σyy σxy σxyAbaqus TSDT Abaqus TSDT Abaqus TSDT

1 3.671× 106 3.602× 106 3.671× 106 3.602× 106 2.622× 106 2.569× 106

2 2.642× 106 2.469× 106 1.223× 107 1.179× 107 4.003× 106 3.839× 106

3 −2.836× 106 −3.352× 106 −2.836× 106 −3.352× 106 7.463× 106 6.956× 106

4 1.223× 107 1.179× 107 2.642× 106 2.469× 106 4.003× 106 3.839× 106

Table 5.4: Stress results for Abaqus and TSDT element: comparison for applied vertical force.

as well as for the strains and stresses post-computation.

5.2 Laminated Composite Plate

After a successful validation of the preliminary model, it was considered that a step further could be

given into the implementation of the model for a laminated composite plate.

At this point, two sets of tests were performed: one by comparing with Abaqus element S8r and

another by comparing with the analytical solution provided in [20].

5.2.1 Comparison with Abaqus element

For this test was used a plate with dimensions 2× 2m and three laminae, each with 0.3m of thickness.

The values for the orthotropic material properties of each lamina considered were E1 = 138GPa, E2 =

9500MPa, E3 = 9500MPa for the Young’s moduli, ν12 = 0.28, ν13 = 0.28, ν23 = 0.4 for the Poisson’s

ratios and G12 = 5200MPa, G13 = 5200MPa, G23 = 1450MPa for the shear modulus. The angles for

the laminae are 0◦ , 45◦ and −45◦ for the first, second and third ply, respectively.

The boundary conditions are the same as in the previous section: the plate is fixed on two sides

(x = 0 and y = 0) and two sets of conditions were used: a vertical force of 50 kN in the node with the

coordinates (2,2) or instead a vertical displacement of 0, 1m in the node with the coordinates (2,2).

Likewise, for the case of imposed displacement, it will be checked the results for the vertical reaction

force, whereas for the imposed force, it will be checked the results for the vertical displacement. For both

cases, strains (εxx, εyy, γxy) and stresses (σxx, σyy, σxy) will be presented, using a single element mesh,

for the reasons already mentioned.

It can be seen in figures 5.5 and 5.6 the distribution of the vertical displacement when the 50 kN force

is applied.

For the single element mesh, a satisfactory consistency between the results was obtained, with a

33

Page 52: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

Figure 5.5: Vertical displacement for the single element mesh: Abaqus element (right); TSDT element(left).

Figure 5.6: Vertical displacement for the 20× 20 element mesh: Abaqus element (right); TSDT element(left).

maximum vertical displacement of −1.267×10−3 m and −1.068×10−3 m for Abaqus and TSDT element,

respectively. For a thiner plate, it was expected a greater proximity in results, although these results are

acceptable for validation purposes.

For the multiple element mesh, a representation problem occurred regarding Abaqus element: as it

can be seen, the vicinity of the node with the maximum vertical displacement "slides", which produces

a value of this displacement that is overestimated (−2.156× 10−3 m). This result is not consistent with

the others, including the one from the multiple element mesh with TSDT element. In fact, this element

presents a value of −1.501× 10−3 m for the maximum vertical displacement, that, being greater than the

results obtained with the single element mesh, is consistent since greater accuracy is expected.

Values for strains and stresses are presented in tables 5.5 and 5.6, respectively, for ply 1, or in terms

of the global z coordinate, for z = −0.4161897.

After carefully analyzing the results for strains and stresses, one can conclude that a part of the results

are slightly discrepant. Regarding εxx, εyy and σxx, σyy, the results are acceptable. It is concerning γxyand σxy that results differ the most. Values for TSDT element seem to be overestimated when compared to

those of Abaqus element. The fact that a single element is used contributes to this difference, as well as the

34

Page 53: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

IP εxx εxx εyy εyy γxy γxyAbaqus TSDT Abaqus TSDT Abaqus TSDT

1 −1.018× 10−5 −1.359× 10−5 −4.984× 10−5 −5.252× 10−5 −5.898× 10−5 −1.343× 10−4

2 −1.081× 10−6 −3.893× 10−6 −1.152× 10−4 −1.514× 10−4 −3.976× 10−5 −1.314× 10−4

3 −1.644× 10−5 −9.112× 10−6 −5.362× 10−5 −6.622× 10−5 −5.561× 10−5 −1.800× 10−4

4 −5.038× 10−5 −4.531× 10−5 −3.333× 10−5 −2.968× 10−5 −1.603× 10−4 −3.292× 10−4

Table 5.5: Strain results for Abaqus and TSDT element: comparison for applied vertical force.

IP σxx σxx σyy σyy σxy σxyAbaqus TSDT Abaqus TSDT Abaqus TSDT

1 −1.545× 106 −2.026× 106 −5.032× 105 −5.380× 105 −3.067× 105 −6.985× 105

2 −4.582× 105 −9.452× 105 −1.104× 106 −1.457× 106 −2.067× 105 −6.835× 105

3 −2.424× 106 −1.441× 106 −5.561× 105 −6.568× 105 −2.892× 105 −9.361× 105

4 −7.079× 106 −6.365× 106 −4.531× 105 −4.047× 105 −8.334× 105 −1.712× 106

Table 5.6: Stress results for Abaqus and TSDT element: comparison for applied vertical force.

different elements used. For these reasons, it was not considered that the results were discrepant enough

not to validate the model. Further validation that will be performed, will allow to better understand

these differences and infer if this is a isolated problem or a model implementation error.

5.2.2 Comparison with the analytical solution

In [20] are presented analytical solutions for a rectangular laminated plate, using FSDT. Being based

on FSDT, the results from this analytical solution will not be equal to the ones provided by the TSDT

element. However, a proximity between the results is expected and, as discussed previously in chapter 2,

for thin plates (side-to-thickness ratio over 50) the results are expected to converge.

The plate is simply supported on four sides, as it can be seen in figure ??, and is under an uniformly

distributed load, q0.

Figure 5.7: Boundary conditions: simply supported plate [20].

Two different laminates will be used: (0/90/0) and (0/90/90/0), with each ply having the same

thickness. Results for the maximum transverse deflection, wmax, and bending components of stresses,

σxx, σyy, σxy, will be obtained from the TSDT element and compared to the analytical solution. TSDT

results will be obtained using a 25× 25 element mesh.

35

Page 54: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

Regarding the problem data used, it was considered a plate of dimensions 1.2 × 1.2m with the load

qo = 10000Pa. For the material properties of each lamina it was assumed E2 = 7GPa, and the remaining

properties as follows:

E1 = 25E2, G12 = G13 = 0.5E2, G23 = 0.2E2, ν12 = 0.25

Maximum transverse deflection

Results for maximum transverse deflection were obtained through Abaqus CAE. In figures 5.8, 5.9 and

5.10 it can be seen the transverse deflection distribution for a/h = 10, a/h = 20 and a/h = 100 respec-

tively for the two laminate used.

The possibility of seeing the distribution of displacements or reaction forces is one of the many

advantages of Abaqus: in this figures it can be seen the element programmed being treated as a regular

Abaqus element, where it is possible to visualize the plate under the distributed load and empirically

understand how the plate is behaving and even predict some of the outcome of the analysis.

Figure 5.8: Transverse deflection distribution for a/h = 10: (0/90/90/0) laminate (left); (0/90/0) lami-nate (right).

Figure 5.9: Transverse deflection distribution for a/h = 20: (0/90/90/0) laminate (left); (0/90/0) lami-nate (right).

As expected, the maximum transverse deflection occurs for the middle of the plate (a/2, b/2) and the

four fixed sides have zero vertical displacement as imposed. Values of the maximum transverse deflection

are presented in table 5.7.

36

Page 55: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

Figure 5.10: Transverse deflection distribution for a/h = 100: (0/90/90/0) laminate (left); (0/90/0)laminate (right).

a/h 0/90/0 0/90/90/010 −2.313× 10−5 −2.331× 10−5

20 −1.160× 10−4 −1.188× 10−4

100 −1.153× 10−2 −1.177× 10−2

Table 5.7: Maximum transverse deflection.

Results of the analytical solution are presented in an adimensionalized form. For comparison purposes,

results from the TSDT element were also adimensionalized, as shown:

w̄max = wmaxE2h

3

b4q0× 102 (5.2.1)

Results for the adimensionalized maximum transverse deflection are presented in table 5.8, as well as

the respective analytical solution.

a/h (0/90/0) (0/90/0) (0/90/90/0) (0/90/90/0)TSDT Analytical Solution TSDT Analytical Solution

10 1.3493 1.0219 1.3598 1.025020 0.8458 0.7572 0.8663 0.7694100 0.6726 0.6697 0.6866 0.6833

Table 5.8: Adimensionalized maximum deflection for TSDT element and analytical solution.

As it can be seen, the results from the TSDT element converge to the analytical solution as a/h

increases, that is as the plates gets thinner, as theoretically expected. In fact, the TSDT theory describes

better the behavior of thick plates, for which values of the maximum transverse deflection will deviate

from the analytical solution, as it can be demonstrated for a/h = 10. This ultimately proves the validity

of the model implemented, so far for the displacements only.

Bending components of stresses

From an engineering point of view, when considering a certain load and boundary conditions, it can be

somewhat anticipated where the maximum values for stresses will occur in the plate. These locations are

of the most importance when failure tests are performed, since it is where breaking, weakening or plastic

37

Page 56: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

deformation first occurs.

For this reason, if one wishes to compute the values of stresses, it should have first a clear under-

standing of how these stresses will be distributed in the plate, both in-plane and through-thickness, in

order to determine significant values to the study of the plate’s behavior.

In this case, both σxx and σyy will have their maximum values in the same location of the maximum

transverse deflection (a/2, b/2). Furthermore, regarding the location through-thickness, σxx will have its

maximum value in the top surface of the plate (h/2). As for σyy, and given the specific laminates under,

its maximum value occurs in between the laminae, i.e. h/6 for (0/90/0) and h/4 for (0/90/90/0). It

is important to note that these z-locations represent points of discontinuity regarding the stresses: each

lamina will have its own value of stress for that same location. In this case, the greatest of the two values

is the one that will be presented.

Finally, σxy will be computed at the corner (a, b) and for −h/2, where it is expected to reach its

maximum value.

Similar to the maximum transverse deflection, values for the stresses are adimensionalized by,

σ̄xx = σxxh2

b2q0, σ̄yy = σyy

h2

b2q0, σ̄xy = σxy

h2

b2q0(5.2.2)

Values for the (0/90/0) laminate are presented in 5.9, with values evaluated at,

σ̄xx(a/2, b/2, h/2), σ̄yy(a/2, b/2, h/6), σ̄xy(a, b,−h/2).

a/h σ̄xx σ̄xx σ̄yy σ̄yy σ̄xy σ̄xyAnalytical Solution TSDT Analytical Solution TSDT Analytical Solution TSDT

10 0.7719 0.7953 0.3072 0.4225 0.0514 0.031420 0.7983 0.8051 0.2227 0.2566 0.0453 0.0032100 0.8072 0.8057 0.1925 0.1946 0.0426 0.0179

Table 5.9: (0/90/0) laminate - Adimensionalized results for stresses from TSDT element and analyticalsolution.

Values for the (0/90/90/0) laminate are presented in 5.10, with values evaluated at,

σ̄xx(a/2, b/2, h/2), σ̄yy(a/2, b/2, h/4), σ̄xy(a, b,−h/2).

a/h σ̄xx σ̄xx σ̄yy σ̄yy σ̄xy σ̄xyAnalytical Solution TSDT Analytical Solution TSDT Analytical Solution TSDT

10 0.7577 0.7407 0.5006 0.6625 0.0470 0.028120 0.8045 0, 7971 0.3968 0.4514 0.0420 0.0012100 0.8420 0.8208 0.3558 0.3590 0.0396 0.0229

Table 5.10: (0/90/90/0) plate - Adimensionalized results for stresses from TSDT element and analyticalsolution.

Regarding σ̄xx and σ̄yy, results are converging as the plate gets thinner. This fact is consistent with

the theoretical expectation and, even for thicker plates, the difference between the results is not that

38

Page 57: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

significant.

Regarding σ̄xy, there is an inconsistency in the results for a/h = 20, even when compared to the

results for other side-to-thickness ratios for the TSDT itself. In fact, if the result for a/h = 20 is ignored,

it seems that a slight convergence exists, taking into consideration that the values are small, despite the

fact that a greater proximity and convergence was expected.

Taking into account the results presented, it can be stated that the model was successfully imple-

mented, for both the single-layer plate with isotropic material and the laminated composite plate with

the orthotropic laminae.

39

Page 58: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

40

Page 59: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

Chapter 6

Conclusions

Overall, based on the assessment of the model results, it can be stated that the model development and

implementation was successfully achieved. However, some difficulties were encountered, as well as a few

inconsistency in the results. In the next section, the main achievements and a few troublesome issues will

be discussed. Furthermore, a brief discussion of what can be done in the future to further improve this

work will be outlined.

6.1 Achievements

As it was already stated, the implementation of this element had to do with the computation of three

major variables: stiffness matrix, force vector and both strains and stresses.

For a complete validation, all these three quantities must be correctly computed. Taking into account

the model’s development, it is easy to understand that the calculation of the stiffness matrix and the

force vector are related and do not interfere directly with the calculation of both strains and stresses:

it is actually possible to correctly compute the stiffness matrix, without calculating strains and stresses,

despite the opposite not being true. Moreover, the correct or incorrect computation of strains and

stresses will have nothing to do with the computation of reaction forces, displacements, among others,

since Abaqus only needs the correct definition of the stiffness matrix and force vector to compute them.

Having said that, when one compares results for the displacement or reaction force distribution along

the plate, one is in fact demonstrating the correct computation of the stiffness matrix and force vector

by the UEL subroutine. On the other hand, once the validity of the stiffness matrix and force vector

computation is made, if an inconsistency would exist regarding the strains and stresses, then it would be

due to their incorrect computation alone.

First of all, the development and implementation of the isotropic single-layer plate was correctly

achieved, given the results shown for the TSDT element and the Abaqus element. In fact, when the

vertical applied force test was performed, a satisfactory consistency between the results was obtained, for

both the displacement distribution as well as strains and stresses.

Regarding the imposed vertical displacement test, in spite of helping in the model validation, a few

41

Page 60: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

difficulties arose, concerning the results representation from Abaqus CAE. In fact, the black voids in

the middle of the plate and constant reaction force for the whole plate, constitute some flaws or bugs of

Abaqus CAE, which is, so far, incapable of correctly computing the results for those locations. What is

even more interesting, at least for the set of tests performed, is that this only occurs for this particular

test. It is the author’s opinion that this has to do with the method that Abaqus uses to solve the system

of equations, which is incapable of solving or representing the correct values for specific locations. A

more thorough investigation is required to give a better explanation to why this occurs.

Regarding the development and implementation of the laminated composite plate model, it was under-

stood that a more thorough validation of results had to be made, so that there were no doubts regarding

the consistency of the model.

The comparison with the Abaqus element allowed to conclude that the stiffness matrix and force

vector were correctly computed, since a consistency in results was obtained regarding the distribution of

vertical displacement. However, concerning strains and stresses, a few inconsistencies appeared, although

not great enough to be significant, as already discussed.

The ultimate validation, performed through a comparison with an analytical solution, allowed to

confirm that the model is valid and was correctly achieved. In fact, the results obtained for the maximum

transverse deflection mean that the stiffness matrix and force vector are well calculated, even more noticing

that the results converge, accordingly to the theoretical expectation. Likewise regarding strains εxx and

εyy and stresses, σxx and σyy.

However, the shear in-plane strain γxy shows some inconsistencies in the results. These inconsistencies

may be due to an error in the model, although the values are very small, which makes it more difficult

to infer if this is due to a numerical error or a systematic error in development or implementation of the

model, which is localized, i.e. only affecting this computation.

All in all, it is the author’s belief that the objective of the present work was successfully achieved,

and the model was correctly implemented. Although some future work can be done, this element now

"exists" for Abaqus and it is possible to use it when analyzing composite plates with this software, which

is definitely a contribute to the study of composite materials.

6.2 Future Work

Despite the fact that the main objective of the present work was successfully achieved, some improvements

can be made: first, a better interaction between the UEL subroutine and the input file can be developed;

second, some exploratory work could be performed regarding the representation flaws or bugs from

Abaqus CAE, trying to mitigate them and get more reliable representations of the results.

In fact, and since this problem occurs even when the analysis is performed using Abaqus elements, it

would be advantageous to understand the reasons for this to happen, so that the analysis performance

could be enhanced.

About the interaction between the UEL subroutine and the input file, two issues remain unresolved.

One is the properties definition in the input file, rather than inside the subroutine. Information was

42

Page 61: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

found in Abaqus manual related to the definition of properties in the input file; the problem was how to

get them correctly in the subroutine, specially when dealing with a composite material, having to define

angles and thickness of each ply.

Furthermore, state variables were not interpreted by Abaqus CAE, making it impossible to obtain

results directly from Abaqus, in a similar manner as for an element from Abaqus library. Information

regarding this subject was difficult to find in manuals, so the results for the state variables had to be

printed directly from the UEL subroutine.

Since the ultimate purpose of this work was to implement a new user-defined element that could be

treated as any other element within Abaqus library, improving the interaction between Abaqus and the

UEL subroutine, would mean a step further to work with any new user-defined element as any of the

existing ones, potentiating the types of analysis that could be performed. This would greatly increase

the Abaqus potential in the finite element analysis that could be performed, by the use of more advanced

models with a more accurate description of the response behaviors.

43

Page 62: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

44

Page 63: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

Bibliography

[1] F. Matthews and R. Rawlings. Composite materials: engineering and science. Woodhead Publishing,

1999.

[2] G. Marsh. Boeing’s 787: trials, tribulations, and restoring the dream. Reinforced Plastics, 53(8):

16–21, 2009.

[3] G. Marsh. Airbus A350 XWB update. Reinforced Plastics, 54(6):20–24, 2010.

[4] G. Marsh. Composites consolidate in commercial aviation. Reinforced Plastics, 60(5):302–305, 2016.

[5] G. Marsh. Composites flying high. Reinforced Plastics, 58(3):14–18, 2014.

[6] G. Marsh. Composites poised to transform airline economics. Reinforced Plastics, 57(3):18–24, 2013.

[7] L. Nyhoff and S. Leestma. FORTRAN 90 for engineers and scientists. Pearson, 1996.

[8] N. Padhye and S. Kalia. Mindlin Plate Theory and Abaqus UEL Implementation. Technical report.

[9] T. Nestorovic, D. Marinkovic, G. Chandrashekar, M. Zoran, and M. Trajkov. Finite Elements in

Analysis and Design. Elsevier, (52):11–22, 2011.

[10] Abaqus 6.12 Online Documentation. 2012.

[11] M. F. Caliri, A. J. Ferreira, and V. Tita. A review on plate and shell theories for laminated and

sandwich structures highlighting the Finite Element Method. Composite Structures, 156:63–77, 2016.

[12] E. Carrera. An assessment of mixed and classical theories on global and local response of multilayered

orthotropic plates. Composite Structures, 50:183–98, 2000.

[13] E. Carrera. Developments, ideas, and evaluations based upon Reissner’s mixed variational theorem

in the modeling of multilayered plates and shells. Applied Mechanical Review, 54:301–29, 2001.

[14] E. Carrera. Theories and finite elements for multilayered, anisotropic, composite plates and shells,

volume 9. 2002.

[15] L. Demasi. Treatment of stress variables in advanced multilayered plate elements based upon Reiss-

ner’s mixed variational theorem. Composite Structures, 84:1215–21, 2008.

[16] L. Demasi. Mixed plate theories based on the generalized unified formulation. Part I: governing

equations. Composite Structures, 87:1–11, 2009.

45

Page 64: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

[17] L. Demasi. Mixed plate theories based on the generalized unified formulation. Part II: Layerwise

theories. Composite Structures, 87:12–22, 2009.

[18] E. Carrera. Theories and Finite Elements for Multilayered Plates and Shells: A Unified Compact

Formulation with Numerical Assessment and Benchmarking. Archives of Computational Methods in

Engineering, 10(3):215–296, 2003.

[19] L. Demasi. Hierarchy plate theories for thick and thin composite plates: the generalized unified

formulation. Composite Structures, 84:256–70, 2008.

[20] J. N. Reddy. Mechanics of Laminated Composite Plates - Theory and Analysis. CRC Press, New

York, 1997.

[21] A. Noor. Free vibration of multilayered composite plates. AIAA J., 11:1030–39, 1973.

[22] A. Noor. Stability of multilayered composite plates. Fibre Science and Technology, 8:81–89, 1975.

[23] N. J. Pagano. Exact solutions for composite laminates in cylindrical bending. Composite Materials,

(3):398–411, 1969.

[24] N. J. Pagano. Exact solutions for rectangular bidirectional composites. Composite Materials, (4):

20–34, 1970.

[25] S. Timoshenko and S. Woinowsky-Krieger. Theory of plates and shells. New York: Mc-Graw Hill,

1959.

[26] E. Reissner and Y. Stavsky. Bending and stretching of certain types of heterogeneous aelotropic

elastic plates. Journal of Applied Mechanics, 28:402–8, 1961.

[27] R. Szilard. Theory and analysis of plates (Classical and numerical methods). New Jersey: Prentice-

Hall, 1974.

[28] E. Reissner. The effect of transverse shear deformation on the bending of elastic plates. Journal of

Applied Mechanics, 12(2):69–77, 1945.

[29] R. Mindlin. Influence of rotary inertia and shear on flexural motions of isotropic, elastic plates.

Journal of Applied Mechanics, 18:31–38, 1951.

[30] J. N. Reddy. A simple higher-order theory for laminated composite plates. Journal of Applied

Mechanics, 51:745–52, 1984.

[31] H. Matsunaga. Vibration and stability of cross-ply laminated composite plates according to a global

higher-order plate theory. Composite Structures, 48:231–44, 2000.

[32] T. Kant and K. Swaminathan. Analytical solutions for free vibration of laminated composite and

sandwich plates based on a higher order refined theory. Composite Structures, 53:73–85, 2001.

[33] L. Liu, L. Chua, and D. Ghista. Mesh-free radial basis function method for static, free vibration and

buckling analysis of shear deformable composite laminates. Composite Structures, 78:58–69, 2007.

46

Page 65: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

[34] T. Kant, R. Ravichandran, and B. Pandya. Finite element transient dynamic alanysis of isotropic

and fibre reinforced composite plates using a higher-order theory. Composite Structures, 9:319–42,

1988.

[35] R. Clough. Thoughts about the origin of the finite element method. Computers & Structures, 79:

2029–30, 2001.

[36] O. Zienkiewicz. The Finite Element Method. McGraw-Hill, 3rd editio edition, 1977.

[37] J. N. Reddy. An Introduction to the Finite Element Method. McGraw-Hill, 3rd editio edition, 2006.

[38] E. Oñate. Structural Analysis with the Finite Element Method - Linear Statics, volume 1. 1989.

[39] E. Oñate. Structural Analysis with the Finite Element Method, volume 1. 2009.

[40] A. J. Ferreira. Problemas de elementos finitos em Matlab. Gulbenkian, 2010.

[41] K. Bathe. Finite Element Procedures. 2nd editio edition, 2014.

47

Page 66: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

48

Page 67: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

Appendix A

Single Element Mesh Input File

Example

*Heading** Job name: abaqus_4_elements_lift_up Model name: Model-1*Preprint, echo=NO, model=NO, history=NO, contact=NO*Part, name=Plate**##1–––––––––––––––––––––––––-*Node1, 0., 0., 0.2, 1., 0., 0.3, 2., 0., 0.4, 0., 1., 0.5, 0., 2., 0.6, 1., 2., 0.7, 2., 2., 0.8, 2., 1., 0.**##2–––––––––––––––––––––––––-*USER ELEMENT, TYPE=U1, NODES=8, COORDINATES=3, VAR=90,INTEGRATION=91,2,3,4,5,6,7,8,9##3*ELEMENT,TYPE=U1,ELSET=SOLID1, 1,3,7,5,2,8,6,4*UEL PROPERTY, ELSET=SOLID*Element, type=S8r, ELSET=E02, 1,3,7,5,2,8,6,4***Dummy section*Shell General Section, elset=E0, material=mat11.0e-10,*End Part***Dummy material*Material, name=mat1*Elastic1e-16, 0.3##4–––––––––––––––––––––––––––––** ASSEMBLY*Assembly, name=Assembly***Instance, name=Plate-1, part=Plate

49

Page 68: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

*End Instance***Nset, nset=all_elements, instance=Plate-1, generate1, 8, 1*Elset, elset=all_elements, instance=Plate-11,*Nset, nset=_PickedSet13, internal, instance=Plate-17,*Nset, nset=_PickedSet14, internal, instance=Plate-1, generate1, 5, 1*End Assembly##5–––––––––––––––––––––––––––––-** BOUNDARY CONDITIONS** Name: fix_nodes Type: Symmetry/Antisymmetry/Encastre*Boundary_PickedSet14, 1, 1_PickedSet14, 2, 2_PickedSet14, 3, 3_PickedSet14, 4, 4_PickedSet14, 5, 5_PickedSet14, 6, 6_PickedSet14, 7, 7_PickedSet14, 8, 8_PickedSet14, 9, 9##5–––––––––––––––––––––––––––––-** LOADS**** Name: Load-1 Type: Concentrated force*Cload_PickedSet13, 3, -50000**–––––––––––––––––––––––––––––-** STEP: loading*Step, name=loading, nlgeom=NO, inc=100000*Static, direct1., 1.,##6–––––––––––––––––––––––––––––-** OUTPUT REQUESTS*Restart, write, frequency=0** FIELD OUTPUT: F-Output-2*Output, field*Node OutputCF, RF, RM, RT, TF, VF*Element Output, directions=YESBF, CENTMAG, CENTRIFMAG, CORIOMAG, ESF1 , GRAV, HP, NFORC, P, ROTAMAG, SF, TRNOR, TRSHR** FIELD OUTPUT: F-Output-1*Output, field, variable=PRESELECT** HISTORY OUTPUT: H-Output-2*Output, history*Element OutputIRF1 , IRF2 , IRF3 , IRM1 , IRM2 , IRM3** HISTORY OUTPUT: H-Output-1*Output, history, variable=PRESELECT*End Step

50

Page 69: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

Appendix B

FORTRAN Code Example

In this appendix, an example from a FORTRAN code is presented. This was the code used for comparison

with the analytical solution, specifically for the (0/90/0) laminate, with a/h = 100, thus 0.004m for the

thickness of each lamina, since the total thickness of the laminate is h = 0.012m and the side of the

plate, a = 1.2m. The properties considered are E2 = 7× 109 Pa and:

E1 = 25E2, G12 = G13 = 0.5E2, G23 = 0.2E2, ν12 = 0.25

SUBROUTINE UEL(RHS ,AMATRX ,SVARS ,ENERGY ,NDOFEL ,NRHS ,NSVARS ,PROPS ,NPROPS ,COORDS ,

MCRD ,NNODE ,U,DU ,V,A,JTYPE ,TIME ,DTIME ,KSTEP ,KINC ,JELEM ,PARAMS ,NDLOAD ,JDLTYP ,ADLMAG ,

PREDEF ,NPREDF ,LFLAGS ,MLVARX ,DDLMAG ,MDLOAD ,PNEWDT ,JPROPS ,NJPROP ,PERIOD)

INCLUDE ’aba_param_dp.inc’

DIMENSION RHS(MLVARX ,*), AMATRX(NDOFEL ,NDOFEL),PROPS (*),SVARS (*), ENERGY (8),

COORDS(MCRD ,NNODE),U(NDOFEL),DU(MLVARX ,*),V(NDOFEL),A(NDOFEL),TIME(2),

PARAMS (*), JDLTYP(MDLOAD ,*), ADLMAG(MDLOAD ,*), DDLMAG(MDLOAD ,*),

PREDEF(2,NPREDF ,NNODE),LFLAGS (*), JPROPS (*)

Double precision , Dimension (72, 1) :: FORCE , V_TEMP

Double precision , Dimension (72, 1) :: U_CONV , DU_CONV

Double precision , Dimension(2, 8) :: DN_8_TRANSPOSE , XY_DERIVATIVES_T

Double precision , Dimension(8, 1) :: N_8

Double precision , Dimension(4, 2) :: IP_COORDS_4

Double precision , Dimension(8, 2) :: DN_8 , COORDS_T , XY_DERIVATIVES

Double precision , Dimension(9, 2) :: IP_COORDS_9 , WEIGHTS

Double precision , Dimension(2, 4) :: DN_S_TRANSPOSE

Double precision , Dimension(2, 2) :: J, INV_J

51

Page 70: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

Double precision , Dimension(6, 72) :: M_TEMP

Double precision , Dimension (72, 72) :: M_STIFFNESS , M_TEMP_STIFF

Double precision , Dimension (72, 72) :: M_STIFF

Double precision , Dimension(6, 1) :: V_STRAIN_INCREMENT_BENDING

Double precision , Dimension(6, 1) :: V_STRAIN_INCREMENT_SHEAR

Double precision , Dimension(6, 1) :: V_STRAIN_INCREMENT_MEMBRANE

Double precision , Dimension(6, 72) :: M_B_MAT_SHEAR , M_B_MAT_BENDING ,

M_B_MAT_MEMBRANE , M_B_MAT_MEMBRANE_BENDING

Double precision , Dimension (72, 6) :: M_B_MAT_SHEAR_TRANSPOSE ,

M_B_MAT_BENDING_TRANSPOSE , M_B_MAT_MEMBRANE_TRANSPOSE ,

M_B_MAT_MEMBRANE_BENDING_TRANSPOSE

Double precision , Dimension (6,6) :: M_D_MEMBRANE , M_D_BENDING , M_D_SHEAR

, M_D_MEMBRANE_BENDING

Double precision , Dimension (5,5) :: MAT_CONST

Double precision , Dimension (3,3) :: MAT_CONST_BENDING

Double precision , Dimension (3,1) :: STRAIN_BENDING_VECTOR , STRESS_BENDING_VECTOR

Double precision , Dimension (2,2) :: MAT_CONST_SHEAR

Double precision , Dimension (2,1) :: STRAIN_SHEAR_VECTOR , STRESS_SHEAR_VECTOR

!!!! Define number of laminas !!!!!!!!!!!!!!!!!!!!!

Double precision , Dimension (3) :: LAMINA_THICKNESS , LAMINA_ANGLE , LAMINA_S_E1 ,

LAMINA_S_E2 , LAMINA_S_E3

Double precision , Dimension (3) :: LAMINA_G12 , LAMINA_G13 , LAMINA_G23 ,

LAMINA_S_NU12 , LAMINA_S_NU13 , LAMINA_S_NU23

Double precision :: CHI , ETA , S_E , S_NU , S_INERTIA , S_THICKNESS , ANGLE_DG , PI

Double precision :: S_J_DETERMINANT , H_SUP , H_INF , S_THICKNESS_TEMP , Z_COORD ,

Sigma_xy , Sigma_xy_updated , Sigma_xy_corner

INTEGER :: NDOFEL , NSVARS , NPROPS , MCRD , NNODE , K1 , K2, K3, NUM_IP ,

COMPOSITE_LOOP

INTEGER :: NDOF , NUM_SVAR_PER_IP , POSITION_POINTER , POSITION_POINTER_1 ,

NUM_LAMINAS

!!! Interface needed for including subroutines defined by user !!!

interface [...]

!!Variables initialization !!

52

Page 71: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

NUM_IP_9 =9

NUM_IP_4 =4

NUM_SVAR_PER_IP_6 =6

NUM_SVAR_PER_IP_4 =4

PI=4.D0*DATAN (1.D0)

TOTAL_THICKNESS = 0.D0

Sigma_xy_corner =0.D0

COORDS_T=transpose(COORDS)

DO K1 = 1, 72

U_CONV(K1 , 1) = U(K1)

DU_CONV(K1 , 1) = DU(K1 ,1)

END DO

IF (LFLAGS (3).EQ.4) THEN

DO K1=1,72

DO K2=1,72

AMATRX(K1 , K2) = 0.D0

END DO

AMATRX(K1 , K1) = 1.D0

END DO

GOTO 999

END IF

DO K1 = 1,72

DO K2 = 1,72

M_STIFFNESS(K1, K2) = 0.D0

M_STIFF(K1 , K2) = 0.D0

M_TEMP(K1 , K2) = 0.D0

M_TEMP_STIFF(K1 , K2) = 0.D0

END DO

END DO

DO K1 = 1,72

FORCE(K1, 1) = 0.D0

53

Page 72: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

V_TEMP(K1 , 1) = 0.D0

END DO

NUM_LAMINAS =3 !Number of laminas

!*************** Property defenition ***********************

!************* Lamina 1*********************************

LAMINA_S_E1 (1) = 175.D9 !Young ’s Modulus

LAMINA_S_E2 (1) = 7.D9

LAMINA_S_E3 (1) = 0.D0

LAMINA_S_NU12 (1) =0.25 D0 !Poisson ’s ratio

LAMINA_S_NU13 (1) =0.D0

LAMINA_S_NU23 (1) =0.D0

LAMINA_G12 (1) = 3.5D9 !Shear Modulus

LAMINA_G13 (1) = 3.5D9

LAMINA_G23 (1) = 1.4D9

ANGLE_DG = 0.D0 !Angle

LAMINA_ANGLE (1) = ANGLE_DG *(PI /180.D0)

LAMINA_THICKNESS (1) = 0.004D0 !Thickness

!************* Lamina 2*********************************

LAMINA_S_E1 (2) = 175.D9 !Young ’s Modulus

LAMINA_S_E2 (2) = 7.D9

LAMINA_S_E3 (2) = 0.D0

LAMINA_S_NU12 (2) =0.25 D0 !Poisson ’s ratio

LAMINA_S_NU13 (2) =0.D0

LAMINA_S_NU23 (2) =0.D0

54

Page 73: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

LAMINA_G12 (2) = 3.5D9 !Shear Modulus

LAMINA_G13 (2) = 3.5D9

LAMINA_G23 (2) = 1.4D9

ANGLE_DG = 90.D0 !Angle

LAMINA_ANGLE (2) = ANGLE_DG *(PI /180.D0)

LAMINA_THICKNESS (2) = 0.004D0 !Thickness

!************* Lamina 3*********************************

LAMINA_S_E1 (3) = 175.D9 !Young ’s Modulus

LAMINA_S_E2 (3) = 7.D9

LAMINA_S_E3 (3) = 0.D0

LAMINA_S_NU12 (3) =0.25 D0 !Poisson ’s ratio

LAMINA_S_NU13 (3) =0.D0

LAMINA_S_NU23 (3) =0.D0

LAMINA_G12 (3) = 3.5D9 !Shear Modulus

LAMINA_G13 (3) = 3.5D9

LAMINA_G23 (3) = 1.4D9

ANGLE_DG = 0.D0 !Angle

LAMINA_ANGLE (3) = ANGLE_DG *(PI /180.D0)

LAMINA_THICKNESS (3) = 0.004D0 !Thickness

DO K1=1, NUM_LAMINAS

TOTAL_THICKNESS = TOTAL_THICKNESS+LAMINA_THICKNESS(K1)

END DO

!!!!z coordinate for strains and stresses post -computation !!!!

Z_COORD=-TOTAL_THICKNESS /6.D0

H_SUP = -(TOTAL_THICKNESS /2.D0)

55

Page 74: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

!!************** begin of lamina loop ************************!!

DO COMPOSITE_LOOP = 1,NUM_LAMINAS

H_SUP = H_SUP+LAMINA_THICKNESS(COMPOSITE_LOOP)

H_INF = H_SUP -LAMINA_THICKNESS(COMPOSITE_LOOP)

call constituitive_matrix_initialization(LAMINA_ANGLE(COMPOSITE_LOOP),MAT_CONST ,

LAMINA_G12(COMPOSITE_LOOP),LAMINA_G13(COMPOSITE_LOOP),LAMINA_G23(COMPOSITE_LOOP),

LAMINA_S_NU12(COMPOSITE_LOOP),LAMINA_S_NU13(COMPOSITE_LOOP),

LAMINA_S_NU23(COMPOSITE_LOOP),LAMINA_S_E1(COMPOSITE_LOOP),

LAMINA_S_E2(COMPOSITE_LOOP),LAMINA_S_E3(COMPOSITE_LOOP ))

!!IN: properties of the lamina ; OUT: transformed material stiffness matrix !!

call B_matrix_initialization(M_D_MEMBRANE , M_D_BENDING ,

M_D_SHEAR , M_D_MEMBRANE_BENDING , MAT_CONST ,H_SUP ,H_INF)

!!IN: transformed material stiffness matrix , lower and upper surface coordinate;

!!OUT: generalized constitutive matrices !!

call three_by_three_integration_point_coordinates(IP_COORDS_9 ,WEIGHTS ,NUM_IP_9)

!!IN: number of integration points ; OUT: coordinates of integration points

!!and respective weights !!

call two_by_two_integration_point_coordinates(IP_COORDS_4 ,NUM_IP_4)

!!IN: number of integration points ; OUT: coordinates of integration points !!

!!**************** begin of bending effect loop ***********************!!

DO K1 = 1,NUM_IP_9

CHI = IP_COORDS_9(K1 , 1)

ETA = IP_COORDS_9(K1 , 2)

!!coordinates of the integration point currently in use in the effect loop!!

call serendipity_8_node_shape_functions(CHI ,ETA ,N_8 ,DN_8)

!!IN: coordinates of the integration point ;

!!OUT: shape functions and respective derivatives !!

56

Page 75: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

DN_8_TRANSPOSE=transpose(DN_8)

J = MATMUL(DN_8_TRANSPOSE ,COORDS_T)

!!Jacobian matrix calculation !!

call matinv2(J,INV_J ,S_J_DETERMINANT)

!!IN: jacobian matrix ; OUT: jacobian matrix inverse ,

!!determinant of jacobian matrix !!

XY_DERIVATIVES_T = MATMUL(INV_J ,DN_8_TRANSPOSE)

!!computation of the derivatives of the shape functions with respect to x,y!!

XY_DERIVATIVES=transpose(XY_DERIVATIVES_T)

DO K2 = 1,6

DO K3 = 1,72

M_B_MAT_BENDING(K2, K3) = 0.D0

END DO

END DO

!!computation of the contribution of bending effect to strains !!

IF(H_INF <= Z_COORD.and.Z_COORD <= H_SUP)THEN

DO K2=1,8

POSITION_POINTER_1 =(K2 -1)*9

M_B_MAT_BENDING (1, POSITION_POINTER_1 +4)= XY_DERIVATIVES(K2, 1)* Z_COORD

M_B_MAT_BENDING (2, POSITION_POINTER_1 +5)= XY_DERIVATIVES(K2, 2)* Z_COORD

M_B_MAT_BENDING (3, POSITION_POINTER_1 +4)= XY_DERIVATIVES(K2, 2)* Z_COORD

M_B_MAT_BENDING (3, POSITION_POINTER_1 +5)= XY_DERIVATIVES(K2, 1)* Z_COORD

M_B_MAT_BENDING (4, POSITION_POINTER_1 +8)= XY_DERIVATIVES(K2, 1)*( Z_COORD **3)

M_B_MAT_BENDING (5, POSITION_POINTER_1 +9)= XY_DERIVATIVES(K2, 2)*( Z_COORD **3)

57

Page 76: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

M_B_MAT_BENDING (6, POSITION_POINTER_1 +8)= XY_DERIVATIVES(K2, 2)*( Z_COORD **3)

M_B_MAT_BENDING (6, POSITION_POINTER_1 +9)= XY_DERIVATIVES(K2, 1)*( Z_COORD **3)

END DO

!!Assembling of B_b matrix with z terms !!

V_STRAIN_INCREMENT_BENDING = MATMUL(M_B_MAT_BENDING ,DU_CONV)

POSITION_POINTER = (K1 - 1)* NUM_SVAR_PER_IP_6 + 1

SVARS(POSITION_POINTER +3) = SVARS(POSITION_POINTER +3)+

V_STRAIN_INCREMENT_BENDING (1,1)+ V_STRAIN_INCREMENT_BENDING (4,1)

SVARS(POSITION_POINTER +4) = SVARS(POSITION_POINTER +4)+

V_STRAIN_INCREMENT_BENDING (2,1)+ V_STRAIN_INCREMENT_BENDING (5,1)

SVARS(POSITION_POINTER +5) = SVARS(POSITION_POINTER +5)+

V_STRAIN_INCREMENT_BENDING (3,1)+ V_STRAIN_INCREMENT_BENDING (6,1)

!!addition of the contribution of bending effect to the strains

!!to the respective positions of the state variables vector !!

END IF

DO K2=1,8

POSITION_POINTER_1 =(K2 -1)*9

M_B_MAT_BENDING (1, POSITION_POINTER_1 +4) = XY_DERIVATIVES(K2 , 1)

M_B_MAT_BENDING (2, POSITION_POINTER_1 +5) = XY_DERIVATIVES(K2 , 2)

M_B_MAT_BENDING (3, POSITION_POINTER_1 +4) = XY_DERIVATIVES(K2 , 2)

M_B_MAT_BENDING (3, POSITION_POINTER_1 +5) = XY_DERIVATIVES(K2 , 1)

M_B_MAT_BENDING (4, POSITION_POINTER_1 +8) = XY_DERIVATIVES(K2 , 1)

M_B_MAT_BENDING (5, POSITION_POINTER_1 +9) = XY_DERIVATIVES(K2 , 2)

58

Page 77: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

M_B_MAT_BENDING (6, POSITION_POINTER_1 +8) = XY_DERIVATIVES(K2 , 2)

M_B_MAT_BENDING (6, POSITION_POINTER_1 +9) = XY_DERIVATIVES(K2 , 1)

END DO

!!assembling of B_b matrix for stiffness matrix computation !!

M_B_MAT_BENDING_TRANSPOSE=transpose(M_B_MAT_BENDING)

M_TEMP= MATMUL(S_J_DETERMINANT*M_D_BENDING ,M_B_MAT_BENDING)

M_TEMP_STIFF = MATMUL(M_B_MAT_BENDING_TRANSPOSE ,M_TEMP)

M_TEMP_STIFF = M_TEMP_STIFF*WEIGHTS(K1 ,1)* WEIGHTS(K1 ,2)

!!computation of the integral B*D*B^T*|J|* WEIGHTS !!

M_STIFFNESS=M_STIFFNESS+M_TEMP_STIFF

!!addition of the local stiffness matrix to the global stiffness matrix !!

END DO

!!****************** end of bending effect loop *********************!!

!!*************** begin of shear effect loop ******************!!

DO K1=1,NUM_IP_4

CHI = IP_COORDS_4(K1 ,1)

ETA = IP_COORDS_4(K1 ,2)

!!coordinates of the integration point currently in use in the effect loop!!

call serendipity_8_node_shape_functions(CHI ,ETA ,N_8 ,DN_8)

!!IN: coordinates of the integration point ;

!!OUT: shape functions and respective derivatives !!

DN_8_TRANSPOSE=transpose(DN_8)

J = MATMUL(DN_8_TRANSPOSE ,COORDS_T)

!!Jacobian matrix calculation !!

call matinv2(J,INV_J ,S_J_DETERMINANT)

!!IN: jacobian matrix ; OUT: jacobian matrix inverse ,

!!determinant of jacobian matrix !!

59

Page 78: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

XY_DERIVATIVES_T = MATMUL(INV_J ,DN_8_TRANSPOSE)

!!computation of the derivatives of the shape functions with respect to x,y!!

XY_DERIVATIVES=transpose(XY_DERIVATIVES_T)

DO K2 = 1,6

DO K3 = 1,72

M_B_MAT_SHEAR(K2, K3) = 0.D0

END DO

END DO

IF(H_INF <= Z_COORD.and.Z_COORD <= H_SUP)THEN

MAT_CONST_SHEAR (1,1) = MAT_CONST (4,4)

MAT_CONST_SHEAR (1,2) = MAT_CONST (4,5)

MAT_CONST_SHEAR (2,1) = MAT_CONST (5,4)

MAT_CONST_SHEAR (2,2) = MAT_CONST (5,5)

DO K2=1,8

POSITION_POINTER_1 =(K2 -1)*9

M_B_MAT_SHEAR (1, POSITION_POINTER_1 +6) = 2.D0*N_8(K2 ,1)* Z_COORD

M_B_MAT_SHEAR (2, POSITION_POINTER_1 +7) = 2.D0*N_8(K2 ,1)* Z_COORD

M_B_MAT_SHEAR (3, POSITION_POINTER_1 +3) = XY_DERIVATIVES(K2 , 1)

M_B_MAT_SHEAR (3, POSITION_POINTER_1 +4) = N_8(K2 ,1)

M_B_MAT_SHEAR (4, POSITION_POINTER_1 +3) = XY_DERIVATIVES(K2 , 2)

M_B_MAT_SHEAR (4, POSITION_POINTER_1 +5) = N_8(K2 ,1)

M_B_MAT_SHEAR (5, POSITION_POINTER_1 +8) = 3.D0*N_8(K2 ,1)*( Z_COORD **2)

M_B_MAT_SHEAR (6, POSITION_POINTER_1 +9) = 3.D0*N_8(K2 ,1)*( Z_COORD **2)

END DO

!!Assembling of B_s matrix with z terms !!

60

Page 79: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

V_STRAIN_INCREMENT_SHEAR=MATMUL(M_B_MAT_SHEAR ,DU_CONV)

POSITION_POINTER = (K1 - 1)* NUM_SVAR_PER_IP_4 + 55

SVARS(POSITION_POINTER) = SVARS(POSITION_POINTER )+

V_STRAIN_INCREMENT_SHEAR (1,1)+ V_STRAIN_INCREMENT_SHEAR (3 ,1)+

V_STRAIN_INCREMENT_SHEAR (5,1)

SVARS(POSITION_POINTER +1) = SVARS(POSITION_POINTER +1)+

V_STRAIN_INCREMENT_SHEAR (2,1)+ V_STRAIN_INCREMENT_SHEAR (4 ,1)+

V_STRAIN_INCREMENT_SHEAR (6,1)

!!addition of the shear effect strains to the respective positions

!!of the state variables vector !!

STRAIN_SHEAR_VECTOR (1,1) = SVARS(POSITION_POINTER)

STRAIN_SHEAR_VECTOR (2,1) = SVARS(POSITION_POINTER +1)

STRESS_SHEAR_VECTOR=MATMUL(MAT_CONST_SHEAR ,STRAIN_SHEAR_VECTOR)

SVARS(POSITION_POINTER +2) = STRESS_SHEAR_VECTOR (1,1)

SVARS(POSITION_POINTER +3) = STRESS_SHEAR_VECTOR (2,1)

!!addition of the shear effect stresses to the

!!respective positions of the state variables vector !!

END IF

DO K2=1,8

POSITION_POINTER_1 =(K2 -1)*9

M_B_MAT_SHEAR (1, POSITION_POINTER_1 +6) = 2.D0*N_8(K2 ,1)

M_B_MAT_SHEAR (2, POSITION_POINTER_1 +7) = 2.D0*N_8(K2 ,1)

M_B_MAT_SHEAR (3, POSITION_POINTER_1 +3) = XY_DERIVATIVES(K2, 1)

M_B_MAT_SHEAR (3, POSITION_POINTER_1 +4) = N_8(K2 ,1)

M_B_MAT_SHEAR (4, POSITION_POINTER_1 +3) = XY_DERIVATIVES(K2, 2)

61

Page 80: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

M_B_MAT_SHEAR (4, POSITION_POINTER_1 +5) = N_8(K2 ,1)

M_B_MAT_SHEAR (5, POSITION_POINTER_1 +8) = 3.D0*N_8(K2 ,1)

M_B_MAT_SHEAR (6, POSITION_POINTER_1 +9) = 3.D0*N_8(K2 ,1)

END DO

!!Assembling of B_s matrix for stiffness matrix computation !!

M_B_MAT_SHEAR_TRANSPOSE=transpose(M_B_MAT_SHEAR)

M_TEMP=MATMUL(S_J_DETERMINANT*M_D_SHEAR ,M_B_MAT_SHEAR)

M_TEMP_STIFF=MATMUL(M_B_MAT_SHEAR_TRANSPOSE ,M_TEMP)

!Calculation of the integral B*D*B^T*|J|* WEIGHTS

M_STIFF=M_STIFFNESS+M_TEMP_STIFF

M_STIFFNESS = M_STIFF

!!addition of the local stiffness matrix to the global stiffness matrix !!

END DO

!!************* end of shear effect loop *****************!!

!!*************** begin of membrane effect loop *********************!!

DO K1= 1,NUM_IP_9

CHI = IP_COORDS_9(K1 , 1)

ETA = IP_COORDS_9(K1 , 2)

!!coordinates of the integration point currently in use in the effect loop!!

call serendipity_8_node_shape_functions(CHI ,ETA ,N_8 ,DN_8)

!!IN: coordinates of the integration point ;

!!OUT: shape functions and respective derivatives !!

DN_8_TRANSPOSE=transpose(DN_8)

J = MATMUL(DN_8_TRANSPOSE ,COORDS_T)

62

Page 81: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

!!Jacobian matrix calculation !!

call matinv2(J,INV_J ,S_J_DETERMINANT)

!!IN: jacobian matrix ; OUT: jacobian matrix inverse ,

!!determinant of jacobian matrix !!

XY_DERIVATIVES_T = MATMUL(INV_J ,DN_8_TRANSPOSE)

!!computation of the derivatives of the shape functions with respect to x,y!!

XY_DERIVATIVES=transpose(XY_DERIVATIVES_T)

DO K2 = 1,6

DO K3 = 1,72

M_B_MAT_MEMBRANE(K2 , K3) = 0.D0

END DO

END DO

!!computation of the contribution of membrane effect to strains

!!and final computation of strains and stresses !!

IF(H_INF <= Z_COORD.and.Z_COORD <= H_SUP)THEN

MAT_CONST_BENDING (1,1) = MAT_CONST (1,1)

MAT_CONST_BENDING (1,2) = MAT_CONST (1,2)

MAT_CONST_BENDING (1,3) = MAT_CONST (1,3)

MAT_CONST_BENDING (2,1) = MAT_CONST (2,1)

MAT_CONST_BENDING (2,2) = MAT_CONST (2,2)

MAT_CONST_BENDING (2,3) = MAT_CONST (2,3)

MAT_CONST_BENDING (3,1) = MAT_CONST (3,1)

MAT_CONST_BENDING (3,2) = MAT_CONST (3,2)

MAT_CONST_BENDING (3,3) = MAT_CONST (3,3)

DO K2=1,8

POSITION_POINTER_1 =(K2 -1)*9

M_B_MAT_MEMBRANE (1, POSITION_POINTER_1 +1)= XY_DERIVATIVES(K2, 1)

M_B_MAT_MEMBRANE (2, POSITION_POINTER_1 +2)= XY_DERIVATIVES(K2, 2)

63

Page 82: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

M_B_MAT_MEMBRANE (3, POSITION_POINTER_1 +1)= XY_DERIVATIVES(K2, 2)

M_B_MAT_MEMBRANE (3, POSITION_POINTER_1 +2)= XY_DERIVATIVES(K2, 1)

M_B_MAT_MEMBRANE (4, POSITION_POINTER_1 +6)= XY_DERIVATIVES(K2, 1)*( Z_COORD **2)

M_B_MAT_MEMBRANE (5, POSITION_POINTER_1 +7)= XY_DERIVATIVES(K2, 2)*( Z_COORD **2)

M_B_MAT_MEMBRANE (6, POSITION_POINTER_1 +6)= XY_DERIVATIVES(K2, 2)*( Z_COORD **2)

M_B_MAT_MEMBRANE (6, POSITION_POINTER_1 +7)= XY_DERIVATIVES(K2, 1)*( Z_COORD **2)

END DO

!!Assembling of B_m matrix with z terms !!

V_STRAIN_INCREMENT_MEMBRANE = MATMUL(M_B_MAT_MEMBRANE ,DU_CONV)

POSITION_POINTER = (K1 - 1)* NUM_SVAR_PER_IP_6 + 1

SVARS(POSITION_POINTER +3) = SVARS(POSITION_POINTER +3)+

V_STRAIN_INCREMENT_MEMBRANE (1 ,1)+ V_STRAIN_INCREMENT_MEMBRANE (4,1)

SVARS(POSITION_POINTER +4) = SVARS(POSITION_POINTER +4)+

V_STRAIN_INCREMENT_MEMBRANE (2 ,1)+ V_STRAIN_INCREMENT_MEMBRANE (5,1)

SVARS(POSITION_POINTER +5) = SVARS(POSITION_POINTER +5)+

V_STRAIN_INCREMENT_MEMBRANE (3 ,1)+ V_STRAIN_INCREMENT_MEMBRANE (6,1)

!!Addition of the final strains to the respective

!!positions in the state variables vector !!

STRAIN_BENDING_VECTOR (1,1) = SVARS(POSITION_POINTER +3)

STRAIN_BENDING_VECTOR (2,1) = SVARS(POSITION_POINTER +4)

STRAIN_BENDING_VECTOR (3,1) = SVARS(POSITION_POINTER +5)

STRESS_BENDING_VECTOR = matmul(MAT_CONST_BENDING ,STRAIN_BENDING_VECTOR)

SVARS(POSITION_POINTER) = STRESS_BENDING_VECTOR (1,1)

SVARS(POSITION_POINTER +1) = STRESS_BENDING_VECTOR (2,1)

SVARS(POSITION_POINTER +2) = STRESS_BENDING_VECTOR (3,1)

!!Addition of the final stresses to the respective

!!positions in the state variables vector !!

64

Page 83: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

IF(CHI ==0.D0.and.ETA ==0.D0)THEN

if(COORDS_T (1 ,1)==0.575999975 D0.and.COORDS_T (1 ,2)==0.575999975 D0

.and.COORDS_T (3 ,1)==0.624000013 D0.and.COORDS_T (3 ,2)==0.624000013 D0)then

print *,’Lamina␣number␣-->’ , COMPOSITE_LOOP

print *,’Sigma␣x’ , SVARS(POSITION_POINTER)

print *,’Sigma␣y’ , SVARS(POSITION_POINTER +1)

print*,’____________________________________ ’

end if

END IF

!!printing of stresses in the locations of interest

IF(COORDS_T (1 ,1)==0.D0.and.COORDS_T (1 ,2)==0.D0)THEN

IF(CHI==-dsqrt (3.d0/5.d0).and.ETA==-dsqrt (3.d0/5.d0))THEN

Sigma_xy=STRESS_BENDING_VECTOR (3,1)

call coordinates_for_sigmaxy_calculation(K1 ,Sigma_xy ,Sigma_xy_updated)

Sigma_xy_corner=Sigma_xy_corner+Sigma_xy_updated

print*, ’Lamina␣number␣-->’,COMPOSITE_LOOP

print *, Sigma_xy_corner

END IF

END IF

!!printing of stresses in the locations of interest

END IF

DO K2=1,8

POSITION_POINTER_1 =(K2 -1)*9

M_B_MAT_MEMBRANE (1, POSITION_POINTER_1 +1) = XY_DERIVATIVES(K2, 1)

M_B_MAT_MEMBRANE (2, POSITION_POINTER_1 +2) = XY_DERIVATIVES(K2, 2)

M_B_MAT_MEMBRANE (3, POSITION_POINTER_1 +1) = XY_DERIVATIVES(K2, 2)

M_B_MAT_MEMBRANE (3, POSITION_POINTER_1 +2) = XY_DERIVATIVES(K2, 1)

M_B_MAT_MEMBRANE (4, POSITION_POINTER_1 +6) = XY_DERIVATIVES(K2, 1)

M_B_MAT_MEMBRANE (5, POSITION_POINTER_1 +7) = XY_DERIVATIVES(K2, 2)

65

Page 84: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

M_B_MAT_MEMBRANE (6, POSITION_POINTER_1 +6) = XY_DERIVATIVES(K2, 2)

M_B_MAT_MEMBRANE (6, POSITION_POINTER_1 +7) = XY_DERIVATIVES(K2, 1)

END DO

!!Assembling of B_m matrix for stiffness matrix computation !!

M_B_MAT_MEMBRANE_TRANSPOSE=transpose(M_B_MAT_MEMBRANE)

M_TEMP= MATMUL(S_J_DETERMINANT*M_D_MEMBRANE ,M_B_MAT_MEMBRANE)

M_TEMP_STIFF = MATMUL(M_B_MAT_MEMBRANE_TRANSPOSE ,M_TEMP)

M_TEMP_STIFF = M_TEMP_STIFF*WEIGHTS(K1 ,1)* WEIGHTS(K1 ,2)

!Calculation of the integral B*D*B^T*|J|* WEIGHTS

M_STIFF=M_STIFFNESS+M_TEMP_STIFF

M_STIFFNESS = M_STIFF

!!addition of the local stiffness matrix to the global stiffness matrix !!

END DO

!!**************** end of membrane effect loop *******************!!

!!****** begin of coupling between membrane and bending effect loop **********!!

DO K1= 1,NUM_IP_9

CHI = IP_COORDS_9(K1 , 1)

ETA = IP_COORDS_9(K1 , 2)

!!coordinates of the integration point currently in use in the effect loop!!

call serendipity_8_node_shape_functions(CHI ,ETA ,N_8 ,DN_8)

!!IN: coordinates of the integration point ;

!!OUT: shape functions and respective derivatives !!

DN_8_TRANSPOSE=transpose(DN_8)

J = MATMUL(DN_8_TRANSPOSE ,COORDS_T)

!!Jacobian matrix calculation !!

66

Page 85: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

call matinv2(J,INV_J ,S_J_DETERMINANT)

!!IN: jacobian matrix ; OUT: jacobian matrix inverse ,

!!determinant of jacobian matrix !!

XY_DERIVATIVES_T = MATMUL(INV_J ,DN_8_TRANSPOSE)

!!computation of the derivatives of the shape functions with respect to x,y!!

XY_DERIVATIVES=transpose(XY_DERIVATIVES_T)

DO K2 = 1,6

DO K3 = 1,72

M_B_MAT_MEMBRANE(K2 , K3) = 0.D0

M_B_MAT_BENDING(K2, K3) = 0.D0

END DO

END DO

DO K2=1,8

POSITION_POINTER_1 =(K2 -1)*9

M_B_MAT_MEMBRANE (1, POSITION_POINTER_1 +1) = XY_DERIVATIVES(K2, 1)

M_B_MAT_MEMBRANE (2, POSITION_POINTER_1 +2) = XY_DERIVATIVES(K2, 2)

M_B_MAT_MEMBRANE (3, POSITION_POINTER_1 +1) = XY_DERIVATIVES(K2, 2)

M_B_MAT_MEMBRANE (3, POSITION_POINTER_1 +2) = XY_DERIVATIVES(K2, 1)

M_B_MAT_MEMBRANE (4, POSITION_POINTER_1 +6) = XY_DERIVATIVES(K2, 1)

M_B_MAT_MEMBRANE (5, POSITION_POINTER_1 +7) = XY_DERIVATIVES(K2, 2)

M_B_MAT_MEMBRANE (6, POSITION_POINTER_1 +6) = XY_DERIVATIVES(K2, 2)

M_B_MAT_MEMBRANE (6, POSITION_POINTER_1 +7) = XY_DERIVATIVES(K2, 1)

END DO

!!Assembling of B_m matrix for stiffness matrix computation !!

M_B_MAT_MEMBRANE_TRANSPOSE=transpose(M_B_MAT_MEMBRANE)

67

Page 86: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

DO K2=1,8

POSITION_POINTER_1 =(K2 -1)*9

M_B_MAT_BENDING (1, POSITION_POINTER_1 +4) = XY_DERIVATIVES(K2 , 1)

M_B_MAT_BENDING (2, POSITION_POINTER_1 +5) = XY_DERIVATIVES(K2 , 2)

M_B_MAT_BENDING (3, POSITION_POINTER_1 +4) = XY_DERIVATIVES(K2 , 2)

M_B_MAT_BENDING (3, POSITION_POINTER_1 +5) = XY_DERIVATIVES(K2 , 1)

M_B_MAT_BENDING (4, POSITION_POINTER_1 +8) = XY_DERIVATIVES(K2 , 1)

M_B_MAT_BENDING (5, POSITION_POINTER_1 +9) = XY_DERIVATIVES(K2 , 2)

M_B_MAT_BENDING (6, POSITION_POINTER_1 +8) = XY_DERIVATIVES(K2 , 2)

M_B_MAT_BENDING (6, POSITION_POINTER_1 +9) = XY_DERIVATIVES(K2 , 1)

END DO

!!Assembling of B_s matrix for stiffness matrix computation !!

M_B_MAT_BENDING_TRANSPOSE=transpose(M_B_MAT_BENDING)

!********* section Bb^T x Dmb x Bm from the integral ***************

M_TEMP = MATMUL(S_J_DETERMINANT*M_D_MEMBRANE_BENDING ,M_B_MAT_MEMBRANE)

M_TEMP_STIFF = MATMUL(M_B_MAT_BENDING_TRANSPOSE ,M_TEMP)

M_TEMP_STIFF = M_TEMP_STIFF*WEIGHTS(K1 ,1)* WEIGHTS(K1 ,2)

!Calculation of the integral B*D*B^T*|J|* WEIGHTS

M_STIFF=M_STIFFNESS+M_TEMP_STIFF

M_STIFFNESS = M_STIFF

!!addition of the local stiffness matrix to the global stiffness matrix !!

!*********************************************************

!********** section from the integral Bm^T x Dmb x Bb ******************

M_TEMP = MATMUL(S_J_DETERMINANT*M_D_MEMBRANE_BENDING ,M_B_MAT_BENDING)

M_TEMP_STIFF = MATMUL(M_B_MAT_MEMBRANE_TRANSPOSE ,M_TEMP)

68

Page 87: Development and implementation of a new user defined ... · program, Abaqus. This program allows the development of user-defined elements (UEL) subroutines, programmed in FORTRAN,

M_TEMP_STIFF = M_TEMP_STIFF*WEIGHTS(K1 ,1)* WEIGHTS(K1 ,2)

!Calculation of the integral B*D*B^T*|J|* WEIGHTS

M_STIFF=M_STIFFNESS+M_TEMP_STIFF

M_STIFFNESS = M_STIFF

!!addition of the local stiffness matrix to the global stiffness matrix !!

!*****************************************************************

END DO

!!******** end of coupling between membrane and bending effect loop *************!!

END DO

!!******************* end of lamina loop *********************!!

FORCE=MATMUL(M_STIFFNESS ,U_CONV)

!!force vector computation !!

DO K1 = 1,72

RHS(K1 , 1) = -FORCE(K1 , 1)

END DO

!!transferring the values of the force vector to the output variable RHS!!

DO K1 = 1,72

DO K2 = 1,72

AMATRX(K1 , K2) = M_STIFFNESS(K1 , K2)

END DO

END DO

!!transferring the values of the stiffness matrix to the output variable AMATRX !!

999 CONTINUE

RETURN

END

69