Sunteți pe pagina 1din 49

MAIL

Matrix Analysis Interpretive Language


A general-purpose package of matrix operations for Structural Analysis.

by

Prof. Dr. Muhammad Akram Tahir

Department of Civil Engineering


University of Central Punjab, Lahore-Pakistan.
February 2017
2

TABLE OF CONTENTS
TABLE OF CONTENTS 2

PREFACE TO THE FIRST EDITION 6


PREFACE TO THE SECOND EDITION 7

1. INTRODUCTION 8
1.1 General 8

1.2 OBJECTIVE 9

2. MAIL 10
2.1 General 10

2.2 Data Structure 10


2.2.1 Matrix Name 10
2.2.2 Operation Data 10
2.2.3 Data Management. 11
2.2.4 Programme Management 11
2.2.5 Form of User Communication 11
3. USER'S MANUAL 13
3.1 DATA MANAGEMENT AND TRANSFER. 13
3.1.1 Read a Matrix 13
3.1.2 Write a Matrix 14
3.1.3 Delete a Matrix 14
3.1.4 Duplicate a Matrix 14
3.1.5 File a Matrix 14
3.1.6 Load a Matrix 15
3.1.7 Create a Null Matrix 15
3.1.8 Convert Format of a Matrix 16
3.1.9 Comment Lines 16
3.1.10 Directory Display 16
3.2 PROGRAMME MANAGEMANT 16
3.2.1 Start or Restart of Programme 16
3.2.2 Physical End of Programme 16
3.2.3 Repetition of a Set of Commands 17
3.2.4 Stop or Start Printing MAIL Informatics Output 17
3

3.3 GENERAL MATRIX OPERATIONS 17


3.3.1. Addition of Two Matrices 17
3.3.2 Subtraction of a Matrix from the other 17
3.3.3 Multiplication of two matrices 18
3.3.4 Transpose of a Matrix 18
3.3.5 Duplicate a Submatrix 19
3.3.6 Duplicate Diagonal of a Matrix 19
3.3.7 Store a Submatrix 19
3.3.8 Store a Matrix at the Diagonal of the other 19
3.3.9 Store a Row Vector in a Matrix 19
3.3.10 Store a Column Vector in a Matrix 19
3.3.11 Solution of Simultaneous Equations 20
3.3.10 Solution of Unsymmetrical Matrix Systems 20
3.3.11 Create Carry Over Factors Matrix 21
3.4 SOME ELEMENTARY OPERATIONS 21
3.4.1 LOGN,C or LOG,C 21
3.4.2 INVEL,B 21
3.4.3 SQREL,A 22
3.4.5 MAX,A,B 22
3.4.6 NORM,A,B,n 22
3.4.7 SCALE,A,nl or SCALE,A,B 22
3.4.8 Trigonometric Operations 22
3.5 FINITE ELEMENT OPERATIONS 22
3.5.1 Create Stiffness of a Beam Element 22
3.5.2 Create Stiffness of a Truss Element 23
3.5.3 Create Stiffness of a Plane Frame Element 23
3.5.4 Create Stiffness of a Grid Element 24
3.5.6 Create Stiffness Matrix of Space Frame Element 24
3.5.6 Create a Transformation Matrix 25
3.5.6 Assemble the Stiffness or Load Matrix 25
3.5.7 Dissemble 26
3.5.8 Modify a Set of Equations 26
3.5.9 Generate H Matrix for Beam 27
3.5.10 Generate H Matrix for Truss 27
3.5.11 Generate H matrix for General Plane Flexure Element or Gird 27
4

3.5.12 Plant element HE into Structure HS 28


3.5.13 Generate Flexibility Matrix for Beam 28
3.5.14 Generate Flexibility Matrix for Truss 28
3.5.15 Generate Flexibility Matrix for Plane Frame 28
3.5.16 Generate Flexibility Matrix for Grid 29
3.5.16 Generate compatibility matrix for Beam, Truss, Frame and Grid 29
3.6 FINITE ELEMENT MESH GENERATION 30
3.6.1 MESH,A 30
3.6.2 Coordinate 30
3.6.3 Element Connectivity 31
3.6.4 Material Properties 31
3.6.5 Boundary Conditions 31
3.6.6 Force 31
3.6.7 Temperature 32
3.6.8 End of Mesh Data 32
3.6.9 Change in Mesh Data 32
3.6.10 Form Stiffness Matrix. 32
3.6.11 Form Mass Matrix. 33
3.6.12 Form Force Vector. 33
3.6.13 Print Displacement Vector 33
3.6.14 Calculate Element Stresses 33
3.6.14 Eigen-value and Eigen-vectors 33
3.6.15 Static Condensation 34
3.6.16 Solution of Equations: Profile Form 34
4. TAHIR SOFTWARE'S FINITE ELEMENT LIBRARY 36
4.1 ELEMENT 01 : Plane Truss Element. 36

4.2 .ELEMENT 02: Space Truss Element. 36

4.3 ELEMENT 03 : Plane Flexure Element. 36

4.4 ELEMENT 04 : Plane Stress or Plane Strain Element. 37

4.5 ELEMENT 05 : 2d Torsion Element. 37

4.6 ELEMENT 6 : Grid Element 38

4.7 ELEMENT 7 : PLATE Element 38


5

5. EXAMPLES 39
EXAMPLES ON USE OF SOLVE COMMAND 39
Program 39

Results 40

Program 40

Results 41

Program 1 41

Results: 42

Program 2: 42

ANALYSIS OF STRUCTURE by DISPLACEMENT APPROACH 43

Alternate solution by Direct Stiffness method 44


6

PREFACE TO THE FIRST EDITION

An analysis-oriented language for matrix analysis of structures is developed. The efforts


towards the achievement of this goal started much earlier when author was a third year
student at Department of Civil Engineering of UET Lahore. Later he joined the Department
as Lecturer, after completing his Bachelor Degree Programme, in 1983. Hundreds of routines
were written, debugged and perfected by that time. But the basic objective could not be
achieved due to the state of art of computing knowledge in Pakistan. Although most of the
procedures were available by the end of the year 1986 but the language could not be
synthesized due to unavailability of a central unit that could handle all the programmes and
routines automatically.

The major breakthrough came when author had a chance of higher studies on a DAAD
scholarship form Government of Federal Republic of Germany, at AIT. It was at AIT, where
author enjoyed patronage of world-renowned scholars like Professor Pisidhi Karasudhi,
Professor Worsak Kanok Nukulchai, Professor Mahesh Verma, Dr. Tamon Ueda, Dr. H.
Horii and Dr Martin Wieland. Professor Worsak Kanok Nukulchai is known as an Expert on
Computers and Structures. The journey, which started in 1981 and continued slowly and
painfully, got a boom here under the guidance of these scholars. Professor Worsak himself
author of many innovative computer programmes was always generous to deliver advice and
help on any matter referred to him. He very kindly allowed the use of the algorithm of his
program AIT. That was a turning point. From then onwards the work that remained in
suspended animation for years was completed in months.

The First Version of MAIL was completed in January 1990. It was not possible to complete
this job without the generosity of Professor Worsak. The algorithm of AIT was followed and
Four Subroutines LIST, DELETE, FIND and TAPE were adopted after small modifications
as the basis of this language from the AIT package, for which author is highly indebted to
Professor Worsak Kanok Nukulchai. These subroutines were modified to increase the
efficiency of the language in terms of the execution time on microcomputer. Author is highly
grateful to Professor Shaheen Akhtar of UET, Lahore and Professor Khalid Mahmood of
KAAU, Jeddah for their valuable guidance. Many thanks are due to colleague Mr. Ahmad
Sana and to Mr. Tauqeer Azhar from Pakistan Railways who helped in testing and debugging
most of the routines. Credit also goes to the undergraduate students of final year sessions 85
and 86 who helped in perfecting the programme.

Finally author is proud to dedicate this piece of work to his teachers.

Muhammad Akram Tahir


January 5, 1992.
7

PREFACE TO THE SECOND EDITION

Several changes have been incorporated since the first edition of the language. The notable
ones are:
The addition of Finite Element Procedures.
The language compatibility enhancement to AIT.
Automation of Force Method.
The package when initially released was limited to have two finite elements. The author
intended to include ten finite elements. However, he could not succeed due to one reason or
the other. At present five finite elements that are compatible to those included in AIT are
included in the packages. The work is in progress on the other five elements and it is
expected that these will be included by middle of the year 1994.

The first edition was published in year 1992. The language syntax, as far as possible, was
made compatible to AIT. However, due to lack of time and tediousness involved in re-
writing the pre-processors, certain incompatibilities could not be removed by then. In the
present edition, it may be claimed that a user will not face much difficulties if he switches
from AIT to MAIL or vice a versa. The procedures are remodelled in such a way, that a user
can even refer to AIT manual while using MAIL. However, there are certain procedures that
are not available in AIT. These are finite element procedures BEAM, TRUSS, FRAME,
GRID and GENT, Moment Distribution Commands CO and DF, Matrix Flexibility Mesh
GDFM and solution of unsymmetrical system of equations, INVERT. Moreover,
incompatibility in some other procedures like COVNERT and READ is not removed
purposely.

During the summer of 1993, Mr. Aslam Shahid under the supervision of the author worked
on "Static Analysis of Structures by Direct Force Method". The procedure has been
implemented in MAILX under the command GDFM.

The author is highly indebted to those who helped in the development and enhancement of
the package physically or through their positive criticism. Among them are the postgraduate
students, who put forward many suggestions during the teaching of Advanced Structural
Analysis. The author has tried to incorporate their suggestions as far as possible. It is hoped,
it will make the package more user friendly. A special vote of thanks goes to those, who tried
to dishearten the advisees and students of undergraduate as well as postgraduate courses
through a series of well planned misinformation. The misinformation spread by them and the
negative comments made by them helped a lot in elevating the teaching and language
standards.

Muhammad Akram Tahir


September 6, 1993
8

1. INTRODUCTION

1.1 General
In modern structural analysis, the simplified methods of past have been replaced by more
rigorous and general numerical procedures such as matrix methods, which permit analysis of
any type of structural problem to the desired degree of accuracy. The formulation of the
problem is precise and very much mechanical in nature; however the numerical computations
involved in the solution, even with a small size problem may be very tedious and
cumbersome. That is why the simplified classical methods have been so popular among the
structural engineers in the past and even today [1].

After the advent of the digital computer, the use of modern methods of analysis became more
and more popular. A large number of general-purpose programs have been written by a
number of software vendors as well as by novice users. These packages are black box
programmes by nature. The user supplies data according to the specified format and gets
results. However a user knows little about what is happening inside the programme.
Moreover, such types of programmes require a little skill or knowledge of structural
mechanics on the part of a user. Thus such programmes have little significance for structural
engineering students.

The teaching of modern matrix methods in structures and civil engineering is handicapped in
the absence of some tool, which may perform all the matrix operations on large arrays with a
little difficulty of programming involved. Need of such a tool is of two fold in teaching.
Primarily to deliver the basic concept of complex problems by more and more practise and
secondly to attract the students towards computers, which even today, are some thing very
strange for them.

Such a programme shall be of primary importance in an efficient teaching of structural


analysis. This type of programme is different from black box packages in the sense that
algorithm of solution is to be designed and executed by user. The programme will be merely
a tool, which simply eliminates the manual labour of matrix operations. It is quite difficult
rather impossible to solve a problem without proper knowledge of basic mechanics and that
of matrices. On contrary it is optional for a user to have knowledge of computer
programming.

A number of interactive programmes have been developed in recent past including AIT [1],
FEAP [2], CAL [3] and MATOP [4]. These programmes are designed for research and/or
educational purposes especially. AIT programme offers a full range of matrix operations. Ten
Finite Elements are also included in this package. It is a handy programme mainly suited for
Mainframe Computers. A microcomputer version is also available. The programme is
symbolic in nature and easy to use. Some basic knowledge of FORTRAN programming is
required for efficient use of AIT, though not mandatory.

FEAP employs a different approach. Macro programming language is used to perform one or
9

several steps in analysis of a structural problem. The main procedures like data input,
assembly of stiffness matrix and right hand side force, and the solution of simultaneous
equations are invoked by user without knowing exactly how the job is done. It is useful
mainly for experienced researchers in structural engineering and mechanics. The user cannot
name the arrays and has no way to access the arrays.

CAL, like AIT offers a full range of matrix operations. The various arrays are loaded by their
names assigned by user and handled at his will. Since this programme was developed mainly
for academic purpose, only simple algorithms were designed. Only one type of equation
solver is available. It also has a capability of finite element operations. However, a user has
no way to get access to this process and may not handle the arrays involved at his will.

MATOP [4] is a simple programme, which offers only a limited number of matrix
operations. The algorithm of the program is too simple and altogether different than the
aforementioned programmes. It is an extremely simple and useful package for teaching
structural analysis at undergraduate level.

1.2 OBJECTIVE
As mentioned in preface, author tried to develop a general purpose language for assisting in
teaching of structural analysis when he had little knowledge about the existence of such other
programmes mentioned in the previous section. Routines for performing various matrix
operations were written and perfected much earlier. Later on during his stay at AIT, he found
several programmes out of which anyone could have fulfilled the objective. The idea of
developing MAIL could have been dropped and any package could have been adopted.
Instead of adopting any programme blindly for teaching purpose, author considered it better
to adopt the basic philosophy of some package and build the MAIL programme around that
basic structure. The AIT [1] was followed as basic inspiration and it was tried to follow its
syntax as far as possible.

Author learned about the existence of the package MATOP [4] much later, during the year
1991-92. The basic approach of MATOP is so simple and elegant, that author should have
preferred it to follow instead of AIT [1], had it been known earlier. At later stages, however,
it was not possible to remodel once again all the procedures. The shortcoming and
capabilities of a package developed by him are well understood by the author. Moreover, the
procedures being written independently, author has a complete knowledge of inside of the
MAIL. As such imparting instructions to the students will be much easier and lessons will be
more comprehensive as compared to adopting the programme written by others. It is well
established fact that it takes years to achieve perfection in use of a package written by others.
MAIL (Matrix Analysis Interpretive Language) is developed keeping in view all the teaching
and research needs.
10

2. MAIL

2.1 General
MAIL is basically a database programme written in FORTRAN language. The basic
structure of the programme is inspired by AIT [1]. The programme consists of over 600
interacting subroutines. The 4 subroutines namely LIST, FIND, TAPE and DELETE are
adopted from AIT [1] and have been modified according to the requirements of MAIL.

MAIL was originally provided for two different levels. First level of MAIL consisted of
general operational statements like READ, WRITE, DEL, SUB, MUL, REN, DIR, and ADD
etc. This portion was independently capable of performing all the matrix operations like
addition, subtraction, multiplication, inversion, transposition in addition to formal input and
output operations and other array handling operations like deleting, renaming, copying etc.
This programme contains some finite element-operation statements like BEAM, TRUSS,
FRAME, GRID, GENT, ASMB, DSMB, and MODIFY etc. This level of the programme was
named MAIL and was useful for teaching Modern Structural Analysis at undergraduate level.

The second level of the programme included Finite Element Mesh Generation as well. In this
level the complete structures may be analysed by flexibility or stiffness approach but the
main algorithm was to be supplied by the user. The entire range of the capabilities of MAIL
was also included. This level of programme was named as MAILX and was useful for
teaching and research at postgraduate level. The two levels have been merged since 2001
with the advent of high speed and vast memory computer and certain procedures have been
dropped from the language. The package now is presented under generic name "MAIL".

2.2 Data Structure


Two basic types of data are handled by MAIL namely "Arrays" and "Operation Data". The
array data consists of the Matrix Names, Size, Type and their Contents. The Operation Data
are "matrix or general math operations" and "flags associated with matrix or operation".

2.2.1 Matrix Name


A matrix name shall be an alphanumeric string maximum of 8 characters, the first character
being alphabetic and it will be case sensitive. For example the matrix name "TESTl" and
"testl" represent two different matrices. The square symmetric arrays may be stored in either
of the two formats: Rectangular or Profile. The un-symmetric square matrices or non square
matrices are essentially stored in Rectangular Format.

2.2.2 Operation Data


The Operation data consists of a Process termed as "Command", "Names of Matrices"
involved in that process and "Flags". The Flags are integer numbers, which are characteristics
either of a Matrix or of a Process. The command names may be supplied either in small or
capital letters or a combination of both. In other words the command names are case-
11

insensitive. The command Add is unique to ADD or AdD. The operation data must be
supplied according to the specified syntax or an error occurs otherwise.

2.2.3 Data Management.


The array names and contents are stored in a data bank consisting of a single column one
above the other. The directory of every array precedes its contents. All the necessary
information like name, size, number of rows and columns, format of array i.e., profile or
rectangular is contained in the directory. When a Process requires data of a Matrix, it is
located by FIND and all the necessary information is transferred to that Process. Whenever a
new matrix is to be generated, DELETE erases any matrix of that name existing already and
LIST registers a new matrix of that name in the data bank and transfers the relevant
information to the calling Process. All matrix data are handled through a common block, so
transfer from one program segment to the others is quite simple. This technique was adopted
from AIT [1].

2.2.4 Programme Management


MAIL consists of 3 units namely "Controller, Pre-processor and Processor. The Controller
receives a command from the user consisting of a process, its characteristics along with the
names and characteristics of the matrices involved in that process. The Controller then
locates and transfers the control to the associated Processor along with the necessary
information. The Processor calls the associated pre-processor, which then interacts with the
DATA BANK and prepares for input and output of the matrix data relating to that process. It
locates the pointers to the Input and Output Data in the Data Bank and reserves place for the
Output Data to be returned by the Processor. The Pre-processor returns the control back to
the Processor, which performs the necessary operations, and returns back to the Controller
after updating the Data Bank, which again gets ready to interact with the user.

2.2.5 Form of User Communication


The user may converse with the Controller in either of the two modes: an "Interactive mode"
or a "File mode". In interactive mode the data are supplied through keyboard and output is
obtained on monitor screen. In this mode errors of MAIL level are ignored. (The input and
output file names are given as CON each.) However, the errors of operating system level are
fatal and programme is terminated on occurrence of system level error. This mode is very
attractive and useful for learning purposes.

In file mode the programme and data are supplied through a programme file. The Output may
be received in files or on the monitor or may be directed to a printer directly if so desired.
The Programme Files are ASCII Data Files generated by EDLIN, WordStar or any other
Text Editor like NOTEPAD. The text editors should be used in non-document mode only.
The matrix data may be stored on secondary units (or Binary Files) to free the Data Bank for
the time being and may be retrieved back during the same or subsequent executions of the
MAIL.
12

User interacts with the MAIL through single line "Statements" to specify a process and
matrix names involved in that process. Every Statement line consists of:
Commnand, ArrayNames, Flags
The Command is the name of a process. The Array Names are names of the matrices
involved in that process. The Flags are the integer parameters which are characteristic of
array type and size, and process options. It is possible to perform different tasks with the
same command by supplying different process options through flags.

A Statement is provided in a free format, "command, arraynames, flags", all separated by


commas. No blank is included in between because "the blank" is reserved as "Statement
Terminator". This is useful to append any comments at the end of the statements leaving a
blank in between. That way it enhances the clarity of the programme.

If a Command attempts to create any Matrix Name, which already exists, the directory and
contents of the previous matrix are destroyed; it is deleted and registered again through the
LIST procedure. The new matrix need not be of the same size as of the previous one.

The Command and Data are supplied in a free format separated by COMMAS in general for
the convenience of user
13

3. USER'S MANUAL

3.1 DATA MANAGEMENT AND TRANSFER.


In the following paragraphs, the matrix name printed in italics i.e.; A indicates formation of a
new matrix. For any matrix already existing with the same name the contents will be deleted
and the directory will be modified. The matrix name written in bold i.e.; A indicates the
modification of its contents only. This is just for the information of the user. The user has to
supply the data in simple test format.

3.1.1 Read a Matrix


READ,A,nl,n2,n3
[Data lines in free format]
Read is used to input the data from input device to memory. This command reads contents of
a matrix of real numbers named A. If n3=1 the matrix is transferred to the data bank in
rectangular format, in this case n1 and n2 equal to the number of rows and columns of the
matrix respectively. The necessary data is followed by command in a free format separated
by commas. The data is provided row wise for rectangular format. Any number of elements
may be provided on a single line. The contents are input row wise in rectangular format.

If n3=2, the contents of the matrix are transferred to memory in profile format. The active
coefficients of a square symmetric matrix are read into memory. In this case n1 is "number of
total active coefficients" and n2 is "number of columns or rows of the square symmetric
matrix". The contents of the matrix are input column wise. The data is followed by this
command. After the data of coefficients is exhausted, the data of the diagonal pointers are
provided in free I format on a new line. (Refer to Figure 3.1.1 for profile of a matrix)

5 0 0 0
0 8 0 1
A
0 0 6 0
0 1 0 9

1 2 3 6 (Diagonal Pointers)

Figure 3.1.1 Profile of a Matrix

The data of the above matrix A may be input in either of the two ways:

READ,A,4,4,1 4 rows, 4 columns, rectangular type 1


5,0,0,0
0,8,0,1
0,0,6,0
0,1,0,9
14

OR
READ,A,6,4,2 6 Active elements, 4 columns/rows, profile type 2
5,8,6,1,0,9 Active Coefficients
1,2,3,6 Diagonal Pointers
The top zeros in any column are not included in the profile of the matrix. (The AIT
equivalent of READ is LOAD,A,n1,n2,n3,n4. Where n4 specifies the format pattern to be
provided by user or to follow the built in format within from the package.)

3.1.2 Write a Matrix


WRITE,AB,nl
(nl comment lines)
This Command transfers the contents of the matrix AB from memory to the output device
specified as the result file at the start of programme, which may be a file, a printer, or a
monitor. The contents are written in a matrix format of 5 columns per line when its form is
rectangular. For a profile matrix, 5 terms per line are printed followed by the diagonal
pointers. If nl is a +ve integer, nl lines of comments must be followed. These comments are
printed before the contents of the matrix. (The AIT equivalent is PRINT,AB,nl.)

3.1.3 Delete a Matrix


DEL,A
This command deletes the contents and directory of a matrix named A from memory. Any
matrix not required further may be deleted to free memory space for allocation to new
matrices. A matrix once deleted cannot be retrieved. (The AIT equivalent is DELETE,A)

To delete all the matrices form the storage use DEL, *. It may be noted that this process is
non-recoverable. However, START command may be used for same purpose.

3.1.4 Duplicate a Matrix


DUP,A,B
This command duplicates contents of matrix A to a newly created matrix named B. Directory
of A is also copied for B by one change that is matrix name. If a matrix named as B is
already present in memory the duplicate command will delete it before the action is taken.

3.1.5 Rename a Matrix


REN,A,B
This command renames a matrix A to B. Matrix A is not renamed to B if B already existsin
the memory. (The AlT has no equivalent to REN.)

3.1.5 File a Matrix


FILE,BC ,n
This command stores the contents of a matrix BC to a disk file n. The integer n may have
two values l or 2 only. The directory structure of the matrix remains in the memory while
15

contents are transferred to a file whose name is supplied by the user as per demand of the
MAIL programme. The space occupied by the contents is freed for other matrices. At normal
exit from MAIL, the directory structure of all the matrices transferred from memory to disk
file is listed on console as well as in a file DIR.INF. This file is changed after each execution
of MAIL in which command FILE is used. Hence this information must be saved in some
other file to facilitate the future retrieval of those matrices.

Example: File,A,2 The execution of this command will transfer the contents of matrix A in
file 2 whose name is to supplied by the user through key board at the demand of the MAIL
programme. The following message will be flashed through console:
++ An array is transferred from Core to record i of File 2 ++
File name missing or blank- Please enter file name UNIT 20?
Here user has to supply file name in which matrix is to be stored. This is done for first matrix
transfer to file 2. On all subsequent transfers to file 2, this file name is used by MAIL
automatically.

3.1.6 Load a Matrix


LOAD,CD,nl
This is opposite to the FILE command. This command reads back the contents of a matrix
CD from file to the memory. The integer n1 may have three values 0,1 or 2. If a matrix is to
be retrieved from file l or 2 during the same execution of MAIL (in which it was filed) user
has to supply n1 as l or 2 respectively. The matrix name should be the same as it was at the
time of storing to file.

If a matrix is to be retrieved in a subsequent execution of MAIL, nl=0 must be supplied. And


an additional data line is also supplied after command line containing the directory structure.
The directory structure is supplied in a format stated by MAIL as in DIR.INF. This directory
structure is listed previously at the normal exit from MAIL. The matrix name need not be the
same as it was while storing to the file in this case. (The AIT equivalent to FILE and LOAD
is a single command TAPE. However, facility of DIR.INF is not provided there in.)

The load and File were useful in early days when computers had limited memories. However,
they are still kept for compatibility with old input files.

3.1.7 Create a Null Matrix


ZERO,C,nl,n2,n3,n4
A real matrix named C with nl rows and n2 columns is generated in the memory. The
coefficients of the matrix take the following values:
C(i, i) = n3 and C(i, j) = n4 where i<>j .
That is n3 is placed on the leading diagonal and n4 elsewhere. This command may be used to
generate a Unit or a Null matrix. The n3 and n4 should be non-negative whole numbers.
Consider the following commands for example;
16

ZERO,A,3,4 : It will create a 3 rows 4 columns null matrix

ZERO,A,4,3,1 : This command creates the following matrix

1 0 0
0 1 0
A
0 0 1

0 0 0

3.1.8 Convert Format of a Matrix


CONVERT,A,n
This command performs conversion between profile and rectangular formats of the matrices.
If n=l it converts a profile matrix A into rectangular format. If n=2, it converts a rectangular
matrix into profile format. Any value of n other than l or 2 is not admissible. If a matrix is
already in the required format no action is performed except a message is flashed that the
matrix is already in the required format. (The AIT CONVERT works just opposite to it.)

3.1.9 Comment Lines


C,nl
(nl comment lines)
This is a comment command. The nl lines after this command are treated as comments.
These are read and printed only and no other action is performed. It is useful in keeping the
track and record of the MAIL algorithm. (The AIT equivalent is LABEL,nl. )

3.1.10 Directory Display


DIR,A (OR DIR,*)
This command lists directory structure of a matrix named A. It lists the directory of all the
matrices if A is replaced by *, this may be useful in case of interactive programming. (The
AIT has no equivalent of DIR.) The directory is provided in the following style:

Matrix Name, File, Record, Size, Precision, Columns, Format

3.2 PROGRAMME MANAGEMANT


3.2.1 Start or Restart of Programme
START
This command is optional at start. It is in fact useful for restart operation during the same
execution of the MAIL. All the contents of memory are destroyed, so allowing start of a new
problem.

3.2.2 Physical End of Programme


STOP
This command stops the execution of MAIL programme. Control is transferred to the
17

Operating System. All the input and output files are closed. Every MAIL Programme must be
concluded by STOP or an error occurs otherwise.

3.2.3 Repetition of a Set of Commands


FOR,nl
(commands)
NEXT
(Necessary Data for commands between FOR and NEXT)
The Commands between FOR and NEXT are executed nl times. This is a looping facility,
which may be branched to six levels at maximum. In case of the commands that need
additional data lines, the additional data lines are provided after the last NEXT. It is similar
to "for, next" statements of basic. For each FOR there should be a matching NEXT,
otherwise an error occurs. The loops can be nested up to 6 levels. (The AIT equivalent to
FOR is LOOP). However, the equivalent to AIT SKIP could not be developed for years and
ultimately it was introduced on 9th February 2017 which has the following syntax:

SKIP,A,n

This command skips next n statements within same level of FOR-NEXT loop if first element
of array A is negative. The data outside the loop should be arranged for such cases carefully.
It may be noted that you can not jump out from one loop to the other by this statement.

3.2.4 Stop or Start Printing MAIL Informatics Output


NO or
YES
The command NO stops printing of all the MAIL messages except diagnostics and fatal
errors. YES once again allows printing of all mail messages. The default at start is YES. The
"WRITE" command is not affected by "NO". (The AIT NO stops printing of all types.)

3.3 GENERAL MATRIX OPERATIONS


3.3.1. Addition of Two Matrices
ADD,A,B,C
or
ADD,A,B
This command adds two matrices A and B, which are compatible for addition. The results are
stored in a new matrix C if first syntax is adopted otherwise the results are stored in A for the
second syntax. An error occurs if matrices are not compatible for addition.
ADD,A,B,C C=A+B ( A new matrix C is created)
ADD,A,B A=A+B ( The contents of A are changed)
3.3.2 Subtraction of a Matrix from the other
SUB,A,B,C
or
18

SUB,A,B
These commands subtract Matrix B from A if A and B are compatible for addition. The
results are respectively stored in C for the first syntax and in A for the second syntax. An
error occurs if the two matrices are not compatible for addition. (The AIT ADD and SUB
work in the second syntax alone.). The commands ADD and SUB have same syntax.

3.3.3 Multiplication of two matrices


There are several versions of this command, discussed turn by turn. In each case the matrices
should be compatible for multiplication in the desired order and form.
MUL,A,B,C
This command multiplies two matrices A,B in the order A.B and results are stored in a new
matrix C. An error occurs if the matrices A and B are not compatible for multiplication in the
given order.
TMUL,A,B,C
This command multiplies two matrices A,B in the order At.B and the results are stored in a
new matrix C.
MULT,A,B,C
This command multiplies two matrices A,B in the order A.Bt and the results are stored in a
new matrix C.
MULD,A,B,C
This command multiplies two matrices A,B in the order A.B where A is a rectangular matrix
and B is a diagonal matrix stored as a row or column matrix and results are stored in a new
matrix C.
DMUL,A,B,C
This command multiplies two matrices A, B in the order A.B where A is a diagonal matrix
stored as a row or column matrix, and B is a rectangular matrix. The results are stored in a
new matrix C.
PMUL,A,B,C
This command multiplies two matrices A, B in the order A.B where A is stored in profile
format and B is a rectangular matrix.
MULP,A,B,C
This command multiplies two matrices A, B in the order A.B where B is stored in profile
format and A is a rectangular matrix.

(The AIT equivalent of MUL is MULT,A,B,C. It has no equivalents to the other formats)

3.3.4 Transpose of a Matrix


TRANS,A,B
19

This commands generates a matrix B which is Transpose of the matrix A. Any matrix with
the name B is deleted automatically. (The AIT equivalent is TRAN,A,B.)

3.3.5 Duplicate a Submatrix


DUPSM,A,B,nl,n2,n3,n4
This command forms a new matrix B with n3 rows and n4 columns within from the elements
of the matrix A by destroying any existing matrix B. B(l,l) takes the value of A(nl,n2). An
error of incompatibility occurs if nl+n3-l is greater than the number of rows of A or n2+n4-1
is greater than the number of columns of the matrix A. In that case no action is performed.

3.3.6 Duplicate Diagonal of a Matrix


DUPDG,A,B
This command forms a new row matrix B from the leading diagonal elements of the matrix
A.

3.3.7 Store a Submatrix


STOSM,A,B,nl,n2
This command stores a matrix B within the matrix A. The first term of B is stored at A(nl,n2)
.The terms within the area of A where B is stored are destroyed. An error of incompatibility
occurs if the sub matrix can not be stored in completely. That is if number of rows of A are
lesser than the number of rows in B+nl-1 or the number of columns in A are lesser than
number of columns in B+n2-1. No action is performed in that case.

3.3.8 Store a Matrix at the Diagonal of the other


STODG,A,B
This command stores a row or column matrix B at the leading diagonal elements of the
matrix A. Previous diagonal entries are destroyed. An error of incompatibility occurs if
number of elements in B is greater or lesser than the order of A. No action is performed in
that case.

3.3.9 Store a Row Vector in a Matrix


STORV,A,B
Nrow
This command stores a row vector B in a matrix A at row number Nrow of the matrix A. The
number of columns of the vector B and matrix A should be identical otherwise an error
occurs. The previous entries at the specified row of the matrix A are destroyed when the
operation is completed. Nrow can not be greater than no of rows of the matrix A.
3.3.10 Store a Column Vector in a Matrix
STOCV,A,B
Ncol
This command stores a column vector B in a matrix A at column number Ncol of matrix A.
The number of rows of the vector B and matrix A should be equal otherwise an error occurs.
The previous entries at the specified column of the matrix A are destroyed when the
20

operation is completed. Ncol can not be greater than number of columns of matrix A.
3.3.11 Solution of Simultaneous Equations
SOLVE,A,B,nl
This command may perform anyone of the following tasks depending upon the value of nl.
(It is fully compatible to the AIT SOLVE.) A is a +ve definite symmetric square matrix and
B may be a matrix or a vector. n1 can have a value from 0 to 5
0. Solution of Symmetric System of Equations
For nl=0 it solves set of equations Bik=AijXjk The values of unknowns X are stored in matrix
B and matrix A is reduced.
1. Forward Reduction of the System
For nl=l. it performs forward reduction by Gaussian elimination of the matrix A alone.
Matrix B remains unchanged. (Matrix A is triangularized or reduced). Thus it is optional
whether to use Solve,A,l or Solve,A,B,l.
2. Backward Substitution in a Reduced System
For nl=2, with a previously reduced matrix A, it solves Bik=AijXjk . The results of X are
stored in B.
3. Inversion of Matrix
For nl=3, it replaces A by its inverse. For nl=3 the syntax may be Solve,A,3

4. Partial or Full Reduction of System

Solve,A,B,n1=4,n2

For n1=4, effect of top n2 equations is eliminated from rest of the equation in the system,
when n2<N, where N is total number of equations in the system. When n2=N, the solution of
last unknown is placed at Nth position in the reduced vector B and A is fully reduced. It may
be noted that n2 can not be zero; if so no action takes place.

5. Backward Substitution in Partially Reduced System

Solve,A,B,n1=5,n2

For n1=5, the backward substitution for top n2 equations is performed and solution is
obtained for top n2 unknowns. A must be partially reduced using n1=4 and B must contain
the solution of bottom N-n2 equations where N is number of total equations in the system.

3.3.10 Solution of Unsymmetrical Matrix Systems


INVERT,A,B,nl (n1 can have a value 0 to 3 only)
This command works like SOLVE. The first four (0-3) facilities of SOLVE are available in
INVERT as well. It performs same tasks as in SOLVE with the same syntax but on
21

unsymmetrical square matrix A. (The AIT did not have any equivalent to INVERT.)

3.3.11 Create Carry Over Factors Matrix


CO,A,n
This command generates a carryover factors matrix A for prismatic members structure. An
error occurs if n is not an even number. Here n represents the number of end moments. This
is useful in performing Matrix Moment Distribution according to the following formula:
M = ( I + D ) ( I -CD )-1 Mf
Where
Mf is vector of fixed ended moments, C is matrix of carryover factors, D is matrix of
distribution factors , I is a unit matrix of compatible order (Order of I equals to the number of
components in vector M) and M is a vector of final end moments.

Matrix D is a square matrix in which all the distribution factors are posted as negative values.
In the following D is given for the continuous beam shown below.

M1 M2 M3 M4

20,2I 20,I

1 0 0 0
0 2 / 3 2 / 3 0
D Distribution of M3 to M2.
0 1 / 3 1 / 3 0

0 0 0 0

A fixed support has a zero distribution factor and a hinge support has -1. An element Dij
gives the Distribution of j'th moment to the i'th moment. (The AIT did not have any
equivalent to CO.)

3.4 SOME ELEMENTARY OPERATIONS


In this section some elementary operations are described.

3.4.1 LOGN,C or LOG,C


This command replaces each element of matrix C by its natural logarithm or decimal
logarithm respectively.

3.4.2 INVEL,B
This command replaces each element of the matrix B by its inverse. That is a new matrix B is
generated in which each element is l/element of the original matrix.
22

3.4.3 SQREL,A
This command replaces each element of matrix A by its square root.

3.4.5 MAX,A,B
This command generates a column matrix B in which each row contains the maximum
absolute value of the respective row in the matrix A.

3.4.6 NORM,A,B,n
This command generates a row matrix B in which each column contains the sum of the
absolute values of the respective columns of the matrix A when n = 0. Otherwise, it creates a
row matrix B whose each column contains the square root of the sum of the squares of the
elements of the respective column of the matrix A.

3.4.7 SCALE,A,nl or SCALE,A,B


This command multiplies the contents of a matrix A by a positive integer nl in first case or by
B(l,l) in second case and stores the results in same matrix A. (The AIT equivalent SCALE
works in the second syntax only.)

3.4.8 Trigonometric Operations


SIN,A
COS,A
TAN,A
ATAN,A
These commands replace every element of array A by Sine, Cosine, Tangent or Arctangent
respectively. The contents of A in case of first three operations should be in radians, where as
in the last case the contents should be real values and output is given in radians.
3.5 FINITE ELEMENT OPERATIONS
The AIT package does not have any equivalent to the commands ?BEAM, TRUSS,
FRAME, GRID and GENT provided in this section, although the former has provided a wide
range of finite elements. In first four of the five commands when nl=l (or any nonzero
integer) it specifies the global coordinates and n1=0 specifies the local coordinates.

3.5.1 Create Stiffness of a Beam Element


CBEAM,A,nl OR GBEAM,A,n1
xl,x2,E,I
CBEAM generates a member stiffness matrix for a continuous beam element (CBE) of size
2x2. GBEAM generates a 4x4 member stiffness matrix for general beam element (GBE).
They generate stiffness in local coordinates if nl=0 and in global coordinates otherwise.
These commands are followed by 4 entries x1, x2, E, I where xl, x2 are length coordinate of
node 1 and node 2 respectively, E is Young's Modulus of Elasticity and I is Moment of
Inertia.
23

1 2 1 3

2 4

CBEAM GBEAM

3.5.2 Create Stiffness of a Truss Element


PTRUSS,A,nl or STRUSS,A,n1
xl,yl,x2,y2,E,A or xl,yl,zl,x2,y2,z2,E,A
This command generates member stiffness matrix A for a truss element. The stiffness is in
local coordinates if nl =0 and in global coordinates otherwise. The stiffness for a plane truss
element is obtained with PTRUSS and for a space truss element with STRUSS. The
command is followed by coordinates of the two nodes in 2D plane for PTRUSS or in 3D

D4
Y D5
D3 2
2 D2 D4
D2 X D6
PTRUSS Z
D3 1 D1 STRUSS
1 D1 Global Coordinates

space for STRUSS, Young's Modulus of Elasticity, E and cross-sectional Area, A.

3.5.3 Create Stiffness of a Plane Frame Element


FRAME,A,nl,n2
xl,yl,x2,y2,E,I,A
This command generates member stiffness matrix A for a plane frame member, in local
coordinates if nl = 0 and in global coordinates otherwise.

The command is followed by 7 entries in which (xl,yl) and (x2,y2) are coordinates of nodes 1
and 2 respectively, E is Young's Modulus of Elasticity, I is Moment of Inertia and A is Area
of X-section.

The axial deformation is considered if n2=0 and neglected otherwise.

The degrees of freedom both in local and global coordinate systems are shown on the
diagram that follows.
24

D5 d5
D6 d4
D4 d6
D2 2
2
d2 d3
D3 D1 d1 1
1

Global Coordinates Local Coordinates

3.5.4 Create Stiffness of a Grid Element


GRID,A,n1
x1, y1, x2, y2, E, I, G, J
This command generates member stiffness matrix A for a grid member. The stiffness is
generated in local coordinates if n1=0 and in global coordinates otherwise.

The command is followed by 8 entries in which (xl,yl), (x2,y2) are coordinates of node 1 and
node 2 of the element respectively, E is Young's Modulus of Elasticity, I is Moment of
Inertia, G is Shear Modulus and J is Polar Moment of Inertia.

The detail of the degrees of freedom and corresponding actions is given on the subsequent
diagram.
M2 P2
5 6
M1 P1 T2 6 5
2 3 4
3 2 4
Z Y
T1 1
` 1
X
Local System Global System
3.5.6 Create Stiffness Matrix of Space Frame Element
SFRAME,A,nl
X1,Y1,Z1,X2,Y2,Z2 When n1=0
E,G,Area,Ixx,Iyy,Izz. where Iyy and Izz are moment of inertias of Principal Axes.
And stiffness in Global Coordinates is generated when n1 <>0. In this case provide
X1,Y1,Z1,X2,Y2,Z2,ISwitch
E,G,Area,Ixx,Iyy,Izz
25

When n1<>0. ISwitch =0 if Principal axes coincide with y, z-axes, and non-zero otherwise.
When ISwitch is nonzero, the data is provided as follows
X1,Y1,Z1,X2,Y2,Z2,ISwitch=1
Xp,Yp,Zp (Coordinates of a point lying in Principal Plane which give direction of one of
the Principal Axes.
E,G,Area,Ixx,Iyy,Izz
3.5.6 Create a Transformation Matrix
GENT,A,n1 (n1= 2,3,4,5: Ptruss, Grid/Pframe, STruss, SFrame))
X1,Y1,X2,Y2 (n1 =2 or 3 for Plane Truss, Frame and Grid)
X1,Y1,Z1,X2,Y2,Z2 (n1 =4, for Space Truss)
X1,Y1,Z1,X2,Y2,Z2,IST (n1=5 for Space Frame)
XP,YP,ZP (Omit this data line when IST=0)
In case n1=5 and the Principal Axes of the section coincide with local y, z axes give IST=0,
otherwise IST is given non-zero value like 1. When IST is nonzero another line of data is
given which provides the coordinates of a point lying on yp-axis.
This command generates a transformation matrix for an element in plane or space.

The command is followed by 4 entries (Xl,Yl), (X2,Y2) when nl=2 or 3; or by 6 entries


(X1,Y1,Z1), (X2,Y2,Z2) when n1=4 or 5.These entries are the coordinates of node 1 and
node 2 in plane or space respectively. Different types of transformation matrices are
generated depending upon the value of nl. A 4x4 matrix is generated for a plane truss
member when nl=2. A 6x6 matrix is generated for a Plane Frame or Grid member when
nl=3. A 6x6 matrix is generated for a space truss member if nl=4. and a 12x12 transformation
matrix is obtained when n1=5 or greater.
Y Z,z
x y Y
y
Plane Frame x Grid
Truss
X X

Z,z

3.5.6 Assemble the Stiffness or Load Matrix


ASMB,A,B
D(l),D(2),...,D(n)
This command assembles matrix B into the structure stiffness matrix A according to the
destination vector D followed by command if the matrices A and B are square. The
destination vector D must have n terms, equal to the order of Matrix B. For any D(i)=0, the
elements corresponding to the row and column equal to i are not assembled. The value of any
of the components of D cannot be greater than the size of A (an error occurs). The right hand
26

side force vector may also be assembled by this command. For that purpose B should be a
Vector. A 1x1 matrix is considered a vector! (The AIT equivalent command is ASSEM.)

3.5.7 Dissemble
DSMB,A,B,nl
Address(1),Address(2), ,Address(n) (all in free I format separated by commas.)
Value(1),Value(2) , ,Value(n) (all in free F format separated by commas.)
This command performs reverse of the ASMB in case of a Vector. A new vector B is formed
such that B(1)=A(Address(1)) and so on. None of the components of Address Vector could
be greater than the size of A. The input destination vector must follow the command line. For
any Address(i)=0, B(i) is set equal to the Value(i) provided on the subsequent line. Any
Value(i) [of B(i)] given to a non zero Address will be ignored. The data line of Value() must
be omitted if all the components of Address are nonzero. None of the Addresses can be
greater than the size of the matrix A. (The AIT equivalent is DISSEM.)
Examples:
Let: A=(-90,5,7,8,9,100)
DSMB,A,B,8 (Creat an 8x1 vector B from 6x1 vector A)
0,0,0,3,1,5 (B1,B2,B3 from next line,B4=A3, B5=A1,B6=A5)
0,200,-300,0,0,0
The created Vector B=(0,200,-200,7,-90,9)

Let C=(10,20,30,40,50,60,70,80,90,100)
DSMB,C,A,4 Create 4x1 A from C
3,4,9,1 This time all elements of A are available from C hence second line must be
omitted.
A=(30,40,90,10)
3.5.8 Modify a Set of Equations
This command may be used in either of the two forms
MODIFY,A,B,C,D,nl (n1 can not be less than 1)
i(l),x(l) (repeat the data line for n1 times)
i(2), x(2)
---,----
OR

MODIFY,A,B,C,D
nl (if n1 is zero the subsequent lines must be omitted essentially)
i(l),x(l) (repeat for n1 times when n1 > 0)
i(2), x(2)
---,----
This command modifies a system of equations AX=B to CX*=D to conform to the
prescribed values of X. If first system consists of n equations, the new system will consist of
n-n1 equations. That is it consists of equations corresponding to the unknown values only
27

and is stored in C and D respectively. Here n1 is the number of the prescribed values and as
many data lines specifying equation number i() and prescribed value x() must follow the
command line. None of the i() can be greater than the total number of the equations. The
second syntax is useful for placing inside a loop. It may be noted that when n1 is given zero,
the system of equation A, B is duplicated into C, D without any modifications.

3.5.9 Generate H Matrix for Beam


GENHB,A,n
X1,X2
This command generates equilibrium matrix for a beam element. When n=0, it generates H
with two end moments taken as the two element actions/forces. The two coordinates of beam
are given by X1 and X2 respectively. Matrix A stores the H and it relates four global loads
with two internal forces. When n=1 it creates H with a shear and moment at end 1 taken as
element forces. When n=2, an H is created with shear and moment taken at end2 as basic
forces. The size of A is 4x2 in all the three cases.

3.5.10 Generate H Matrix for Truss


GENHPT,A or GENHST,A
X1,Y1,X2,Y2 or, X1,Y1,Z1,X2,Y2,Z2
These commands generate equilibrium matrix for a plane or space truss element in global
coordinates respectively. It relates global nodal forces of the element with element axial
force. The command is followed by 4 or 6 global coordinates respectively for plane or space
truss element. The size of A is 4x1 or 6x1 depending upon plane or space.
3.5.11 Generate H matrix for General Plane Flexure Element or Gird
GENHF,A,n
X1,Y1,X2,Y2
This command generates equilibrium matrix for plane frame element where 6 nodal forces in
global coordinates are related to the three element forces, axial tension, end-1 moment and
end-2 moment when n=0. When n=1, the member forces taken are axial force, shear force
and moment at end 1 of the element. When n=1 the member forces taken are axial forces, and
shear force and end moment at end 2.
The size of A is 6x3 in all cases and the six nodal forces are 2 loads along X, Y axis and a
moment about Z-axis at each node.

If H matrix for Grid is required use the following command.


GENHG,A,n
X1,X2,Y1,Y2
The same job as above is performed for Grid instead of plane frame. When n=0, the element
forces are axial torsion, end-1 moment and end-2 moment taken in same order. The 6 nodal
forces are 2 moments one each about X and Y axis and a force along Z-axis. In case n=1 the
moment and shear at end1 and for n=2 the moment and shear at end 2 are taken as basic
element forces.
28

3.5.12 Plant element HE into Structure HS


PLANT,HS,HE
Row address vector
Column address vector
The plantation of non-symmetric and non-square matrices is facilitated by this command.
The matrix HE is planted into matrix HS with the address vectors given by row and column
wise on the subsequent lines. The number of entries in row address should be equal to
number of rows of HE and none should be greater than the number of rows in HS, otherwise
error occurs. Same is applicable for column address vector. If certain row or column is not to
be transferred to HS, its address may be specified as zero.
3.5.13 Generate Flexibility Matrix for Beam
FLEXB,A,n
E, I, LENGTH
This command generates flexibility matrix for 1-D beam for two end moments as internal
forces when n=0. When LENGTH=L, the result is
L / 3EI L / 6 EI
L / 6 EI L / 3EI

For n=1 and n=2 the following flexibility matrices are generated for shear and moments at
end 1 and end 2 respectively.

L3 / 3EI L2 / 6 EI
2 n=1
L / 6 EI L / 3EI

L3 / 3EI L2 / 6 EI
2 n=2
L / 6 EI L / 3EI

3.5.14 Generate Flexibility Matrix for Truss


FLEXT,A
E, A, LENGTH
This command generates flexibility matrix for truss 2d/3d with axial tension as internal force.
The result is a 1x1 matrix LENGTH / EA
3.5.15 Generate Flexibility Matrix for Plane Frame
FLEXF,A,n
E, A, I, LENGTH
This command generates a 3x3 flexibility matrix for plane frame element. When n=0 it
creates flexibility matrix with axial force and two end moments as internal forces taken in the
same sequence. The relationship is
v1 L / EA 0 0 S1
v 2 0 L / 3EI L / 6 EI . S 2

v3 0 L / 6 EI L / 3EI S 3
29

It may be noted that we require stiffness matrices corresponding to each of the 5 element
flexibility matrices for use in analysis by Displacement Methods, when element deformation
vector is taken compatible to the element force vector the inverse of flexibility matrix is
stiffness matrix required for that case. So user can generate a flexibility matrix and then take
its inverse by using the command "SOLVE, MatrixName, 3" to accomplish the job. The
direct process for such stiffness is not implemented due to this reason.

The following flexibility matrices are generated respectively for n=1 and n=2. The
corresponding member forces are axial force, shear and moment at end 1 and axial force,
shear and end moment at end 2 respectively. The deformation-force relationships are

v1 L / EA 0 0 S1
v 2 0 L / 3EI L / 2 EI . S 2
3 2
when S2=Shear, S3=moment at end1

v3 0 L / 2 EI
2
L / EI S 3
v1 L / EA 0 0 S1
v 2 0 L / 3EI L / 2 EI . S 2 when S2=Shear, S3=moment at end2
3 2

v3 0 L2 / 2 EI L / EI S 3

3.5.16 Generate Flexibility Matrix for Grid


FLEXG,A,n
E, I,G,J, LENGTH
This command generates a 3x3 flexibility matrix for GRID element. When n=0 it creates
flexibility matrix with axial TORSION and two end moments prescribed as internal forces
taken in the same sequence. The relationship is
v1 L / GJ 0 0 S1
v 2 0 L / 3EI L / 6 EI . S 2

v3 0 L / 6 EI L / 3EI S 3
For n=1, the three forces are axial torsion, moment ad shear at end 1. The deformations are
member twisting, displacement and rotation at end 1 and deformation-force relationship is
v1 L / GJ 0 0 S1
v 2 0 L / EI L / 2 EI . S 2
2

v3 0 L2 / 2 EI L3 / 3EI S 3
And for n=2, the three forces are axial torsion, moment and shear at end 2. The deformations
are member twisting, displacement and rotation at end 2 and the deformation-force
relationship is
v1 L / GJ 0 0 S1
v 2 0 L / EI L / 2 EI . S 2
2

v3 0 L2 / 2 EI L3 / 3EI S 3

3.5.16 Generate compatibility matrix for Beam, Truss, Frame and Grid
GENC?,MATRIXNAME
30

where ? can be replaced by one of B, PT, ST, F or G

(GENCB, GENCPT, GENCST, GENCF, GENCG) commands works just like commands
(GENHB, GENHPT, GENHST, GENHF, GENHG) and create Compatibility Matrix for the
desired element.

The compatibility matrix C of an element is transpose of its H matrix. It can be obtained by


transposing H matrix created
by GENH? or can be directly created by using the command
GENC instead of GENH. Rest of the data entries and syntax remains unchanged. To create
compatibility matrix for beam use GENCB instead of GENHB and so on so forth. The data
following GENH commands have to follow the GENC commands in the same format. Use
all the commands 3.5.9-3.5.11 just by replacing H by C in GENH and keeping rest of the
syntax unchanged.

3.6 FINITE ELEMENT MESH GENERATION


3.6.1 MESH,A
NNODES, NELEM, NMATS, NCD, NDOF, NMNPE
This command generates data for a finite element mesh. Matrix A is used to store all the data.
Various Finite Element Operations will refer to this matrix. The command line is followed by
six entries in free I format where,
NNODES is number of nodes,
NELEM is number of elements,
NMATS is number of material sets,
NCD is number of coordinate dimensions: 2 for plane and 3 for space,
NDOF is number of degrees of freedom per node, and
NMNPE is number of maximum nodes per element.
(The MESH command is made fully compatible to the AIT MESH as far as data input and
output are concerned. However, the inside working is different altogether.) The MESH
command may be followed by the sub-commands COOR, ELEM, MATE, FORC, TEMP,
BOUN and END. These sub-commands may be given in any order except END, which shall
be the last sub-command. In the following sections details of these seven sub-commands are
given.

3.6.2 Coordinate
COOR
NN,NG,X(l,nn) ,X(2,nn),X(3,nn), , X(NNODE,nn) (Repeat for all)
(A BLANK LINE for termination of COOR sub-command)
This sub-command reads the nodal coordinates data that follow the command and generates
nodal coordinates of the missing nodes along a line described by the values input on two
successive lines. Nodes need not be in order. The following portion of the command
COOR
1,3,0,0
31

10,0,120,0
(Terminator BLANK LINE)
will generate nodal coordinate as node=4, x=40, y=0, node=7, x=80, y=0. A blank line must
terminate the data. The automatic generation technique is adopted from FEAP [2].

3.6.3 Element Connectivity


ELEM
NE, NMAT, NG, node 1, node 2, ,node last
(Here repeat for all the elements) & (terminate with a Mandatory Blank Line)
This command reads the element connectivity and materiel set number. If there are less than
maximum number of nodes per element in an element provide, zeros at appropriate places.
NE is element number under consideration, NMAT is Number of Material Set, NG is
generation increment, and node 1,node i are all the nodes of that element.

The element nodes are incremented by generation increment on the previous element. The
data lines must be in order according to the element number, other wise an error occurs. This
automatic generation technique is adopted from TABS [5]. Terminate the data by a blank
line.

3.6.4 Material Properties


MATE
MATERIAL NUMBER, ELEMENT TYPE, COMMENTS
(Data for Element from Tahir Softwares Finite Element Library)
(Repeat the above if NMATS is more than 1) & (Terminate it with a Mandatory Blank Line)
This command reads material property data lines, which follow command line. Each material
property set also selects the element type, which will be used for the material property data.
Material data for element type as explained in "Tahir Softwares Finite Element Library"
must follow immediately. The two line data is repeated for all material sets. A Blank Line
terminates the command.

3.6.5 Boundary Conditions


BOUN
Node Number, Generation Increment, Boundary Codes for the Node.
(Repeat above According to the requirements)
(Terminate with a mandatory blank line)
This command reads or generates restraints data. A zero specifies freedom and nonzero
specifies a restraint in that direction. Code for all degrees of freedom of that node is to be
given on the same line in free I format. Generally 1 is given as a non-zero value for a fixed
displacement. However, a value of -1 must be specified if codes are to be generated from
missing nodes. Terminate this subcommand with a blank line.

3.6.6 Force
FORC
32

Node Number, Generation Increment, force 1, force 2,., force last


(Repeat data lines)
(Mandatory Blank Line)
This subcommand reads nodal forces or prescribed nodal displacements. Intermediate nodal
values can be generated the same way as COOR. For each node that has a nonzero nodal
force or displacement, data must be input or generated. The value specified is a force if the
corresponding restraint code in BOUN is Zero and a displacement if the corresponding
restraint is nonzero. (See BOUN for more details). A blank line must terminate the data.

3.6.7 Temperature
TEMP
Node Number, Generation Increment, Nodal Temperature.
(Repeated data lines)
(MANDATORY BLANK LINE)
This subcommand reads nodal temperatures one from a line and generates the same way as
COOR. For each node that has a prescribed temperature the value must be input as specified
in the first line. The last line must be a blank line.

3.6.8 End of Mesh Data


END
This subcommand indicates the end of sub-command set for the given MESH. The control
returns to MAIL command level. (The seven sub-commands in the MESH, for inputs and
outputs are made compatible to the AIT MESH. However, the data input is provided in
certain fixed format in AIT.)

3.6.9 Change in Mesh Data


RMSH,A
(Sub-commands COOR/ELEM/BOUN/MATE/FORC/TEMP and associated Data)
END
This command is used to introduce changes in mesh A with respect to Coordinates,
Elements, Boundary Conditions, Material Properties, Nodal Forces, and Temperatures. It
must be followed by one or more appropriate sub-commands that require data change
(among COOR, ELEM, BOUN, MATE, FORC and TEMP) and terminated with END. (The
AIT equivalent is REMESH and that incorporates changes in MATE, FORC and TEMP sub-
commands only.)

3.6.10 Form Stiffness Matrix.


STIF, A, B
This command forms the stiffness matrix B for the mesh A. The stiffness matrix is formed in
Profile format. Stiffness corresponding to prescribed DOFs is not assembled. A counter
indicates the element under process during the assembling.
33

3.6.11 Form Mass Matrix.


MASS, A, B, n
This command forms mass matrix for the Mesh A under the name B. A Lumped Mass Vector
B is generated for n=l and a Consistent Mass Matrix B is generated in profile format for n=2.

3.6.12 Form Force Vector.


RHSF, A, B
This command generates the right hand side load vector B for the mesh A. The loads are
already specified by FORC sub-command of MESH.

3.6.13 Print Displacement Vector


DISP, A, B
This command prints the nodal displacements for mesh A together with the node numbers
and coordinates. The solution to displacements B should be obtained by PROF command
before using this command. The printing is directed to output device.

3.6.14 Calculate Element Stresses


STRS, A, B
This command calculates stresses from the displacement vector B of the finite element mesh
data A and prints them to the output device. The displacements B must have been obtained
before hand.

3.6.14 Eigen-value and Eigen-vectors


EIGN, A, B, C, n1
This command solves the following eigen-value problem:

K M

where A is a square positive definite symmetric matrix K, C is a diagonal matrix of positive


terms and must be a row or column matrix containing only the diagonal terms of M (Lumped
mass matrix). The eigen-values are stored in C and ordered in the numerically increasing
order. The eigen-vectors are stored in corresponding columns of the matrix B. The
parameter n specifies the approximate number of significant digits of the eigen-values. The
built-in value (for n=0) is 4.

ROOT, A, B, C, D

This command solves the general eigen-value problem: K M

where A is real symmetric square matrix K, B is a real symmetric square matrix M


(Consistent Mass) , C is a vector of eigen-values and D is matrix of eigen-vectors .
34

3.6.15 Static Condensation


COND, A, B, C, D, nl, n2
This command performs static condensation or substructuring to a system of equations
A.X=B , where top n2 equations are eliminated from the total nl equations. A is stiffness
matrix and B is a column vector. C is the retained part of A stored in profile form and D is
the retained part of B.

Acc Acr X c Pc

Arc Arr X r Pr

After static condensation the above system reduces to

Acc Acr X c Pc

0 Arr* X r Pr*

3.6.16 Solution of Equations: Profile Form


PROF, A1, B1, n1, n2, n3
This commands performs the Gaussian elimination fully or partially to a system of equations
Al X = Bl. Bl may be a matrix or a column vector and Al is a square symmetric matrix stored
in profile or rectangular form; in latter case the matrix Al is first converted to profile form.
The n2 is number of equations of a system and n3 is number of equations starting from top to
be partially eliminated. The Final solution to X is stored in the original load matrix/vector Bl.

The number nl is mode of solution. It must be a number 1 to 5.

When nl=l, then n2 must be equal to n3 and system is solved for unknowns X. X is stored in
Bl and Al is triangularized.

For nl=2, (n3 n2) and forward reduction of both Al and Bl is carried.

For nl=3, (n3 n2) forward reduction of Al alone is carried and Bl remains unchanged.

For nl=4, (n3<n2) Forward reduction of B1 is performed. A1 must already contain the
triangularized or partially triangularized matrix Al so that it can be used to perform forward
reduction on B1.

For n1=5, (n3<n2) backward substitution is carried. Here n2 is the number of equations
starting from top whose solution is to be obtained by backward substitution. A1 and B1 must
contain the factorised or partially factorised A1 and B1. In case of partial Gaussian
elimination, part of X, Xr that has been retained in the condensation must be known and
stored in the corresponding points of Bl. The rest of X , Xc is then obtained by partial back
35

substitution.
36

4. TAHIR SOFTWARE'S FINITE ELEMENT LIBRARY

The following document is presented here to facilitate the data input for MAIL command
MATE. At present only five elements are available to undergraduate students. The detail of
these and other additional elements can be found in a separate document [7].

4.1 ELEMENT 01 : Plane Truss Element.


This is a linear elastic element employed in the analysis of plane trusses composed of
prismatic straight members. The element has 2 nodes and 2 DOF per node in the 2D space.

The data is input in the following sequence.


MATE
l, 1 Description of element or problem.
E, A, M ' Data of material type 1
(repeat for all material types)
(A blank line)
Where E = Modulus of elasticity A = Area of x-section and M = Mass density.

4.2 .ELEMENT 02: Space Truss Element.


This is a multi purpose truss element. It may be employed in the analysis of space trusses
composed of straight members. The material may be linear elastic or a geometrically non-
linear truss with linear elastic element. The element has 2 nodes and 3 DOF per node in the
3D space.

The data is input in the following sequence.


MATE
l, 2, Description of element or problem.
E, A, M, OM, OCL, OGE
(repeat for all types)
(A blank line for termination)
Where
E = Modulus of elasticity, A = Area of X-section, M = Mass density.
OM = Option for mass matrix, =0 is lumped mass matrix, 0 consistent mass matrix.
OCL = Option for Constitutive law, -1.0 linear elastic without geometric stiffness; 0.0
geometric nonlinear case with linear Cauchy stress unit elongation relation; 1.00 geometric
nonlinear case with linear Piola-Kirchhoff's stress-Green strain relation.
OGE = option for geometric effect; 0.0 Geometric effect not neglected.
4.3 ELEMENT 03 : Plane Flexure Element.
This element is employed for analysis of prismatic thin or deep beam in 2D space. It is a
linear elastic element with 2 nodes and 3 DOF per node. It is provided with optional Shear
Deformation, Rigid End Zone and Pinned End.
37

The data is input in the following sequence:


MATE
1, 3, Description of element or problem.
E, A, I, W, M, GA, Pin, Rigidl, Rigid2
(repeat for all types)
(A blank line)
Where
E= modulus of Elasticity, A is Area of X-section, I is Moment of Inertia.
w= Uniformly Distributed Load in y-direction (local y-direction) .
M= mass density.
GA= Shear rigidity (=0 Shear Deformation neglected) pin= 1.00 for pinned end at node 1
(0.0 no pin end. Rigid1= Normalized distance of rig1d zone at node1 =d1/L Rigid2=
Normalized distance of rigid zone at node2 =d2/L.
4.4 ELEMENT 04 : Plane Stress or Plane Strain Element.
This is a linear elastic element which may have 3 to 8 nodes per element i.e; from triangular
element up to quadratic serendipity element. There are 2 DOF per node in the 2D space.

The data is input in the following sequence


MATE
1, 4, Description of the problem or element
E, TH , v, a, N, T, M, I, X, Y
Repeat for all materials
(A blank line)

E= Modulus of elasticity, TH= Thickness of element, v= Poisson's Ratio


T= Coefficient of thermal expansion.
N= Type of problem: 1.0=Plane stress, 2.0=Plane strain. T= Uniform temperature change; a
decrease is positive.
M= Mass density, I= Incompatible modes not added if i = 0 . X= Body force in direction 1
and Y= Body force in direction 2.
4.5 ELEMENT 05 : 2d Torsion Element.
This is St. Venant torsion element in 2D space with linear elastic material. It may have 2 to 6
nodes per element with 1 DOF per node in a 2D space.
The data is input in the following sequence:
MATE
l, 5, Description of element or problem.
G, Txz, Tyz
Repeat for all materials
(A blank line)

where
G= Shear modulus.
38

Txz , Tvz = Initial Shear stresses in z direction of x and y planes.


4.6 ELEMENT 6 : Grid Element
This is standard flexure element with axial torsion.

The data is input in the following sequence


MATE
1, 5, Description of the problem or element
G,Ixx,E,Iyy,w,,A,Polar Mass Inertia
Repeat for all materials
(A blank line)

4.7 ELEMENT 7 : PLATE Element


This element is based on Prof Worsak's paper on bilinear palte analysis. It may handle thin or
thick plate problems The material is taken as linear elastic and the element may have 4
elements with 3 dofs per node in a 2-D space. The date is provided as
MATE
1,7 Element despcription
E, Poisson's ratio, Plate Thicknes, shear correction factor, UDL, , IB, IS
Repeat for all materials
(A balnk line to end)
Where default shear correction factor is 5/6. IB and IS or number of Gauss Point for bending
and shear in each direction. A blank line is given to terminate the MATE command.

4.8 ELEMENT 8 : AXISYMMETRIC ELEMENT

This element provides facility of analysis of axisymmetric solids under axisymmetric loads
using linear elastic material properties. The element may have 3-8 nodes per element with 2
dofs in 2-D space.
MATE
1,8 Element Description
E,v,,T,,IB,IS
Repeat for all Materials
(A blank Line to terminate)
where E is Young's Modulus, v is Poisson's ration. a is coefficient of temperature expansion,
T is uniform temperature change, r is mass density. IB and IS are number of Gauss
quadrature for bending and shear respectively.

4.9 ELEMET 9 :SPACE FRAME ELEMENT

This element provides facility of analysis of 3-D space frames for straight prismatic beams in
3-D with considering the axial, shear and torsional deformations. The material properties
39

used are linear elastic. There would be three nodes per element where third node did not lye
on the beam-axis itself and it provides orientation of principal axes for bending. This third
node did not have any stiffness. There would be six dofs per node. The date is provided
through MATE command as usual; as follows.
MATE
1,9 Description
A,Ixx,Iyy,Izz,E,G, mass per unit length, udl, direction of udl, y or z as 2,3
Repeat for all materials
(A blank line to end)
4.10 ELEMENT 10: CONTACT ELEMENT

This element solves the Hertzian Contact problem using the Lagrange multiplier method.
There are two type of material property either STICKY or FRICTIONAL contact. There
would be 3 nodes of this element with middle node for contact forces. Any fictitious
coordinates can be assigned to middle node. The middle node should be given in the middle
of three nodes in any order. The data is provided through MATE
MATE
1,10 Description
DIR,TYPE,TOL
repeat for all Materials
(A blank Line to terminate Mate Data)
Where DIR is the coordinate axis (1,2,3) with which the direction of contact is collinear.
TYPE is contact type; 1 is for slip or frictionless contact and 2 is for sticky contact and TOL
is tolerance.
4.11 ELEMENT 11 : SHELL ELEMENT

5. EXAMPLES

Examples on Use of SOLVE Command

Case 1:

Solution of the system:

4 8 4 X 1 4
8 19 14 X 2 17

4 14 18 X 3 26

Program
No
40

read,A,3,3,1
4,8,4
8,19,14
4,14,18
read,B,3,1,1
4,17,26
Solve,A,B
C,1
The solution for AX=B
write,B
c,1
The matrix A has been reduced
write,A,1
Stop
Results
No
>>> 3 Row(s) and 1 Column(s) Matrix B is Printed. <<<
1
1 .1000000E+01
2 -.1000000E+01
3 .2000000E+01
>>> 3 Row(s) and 3 Column(s) Matrix A is Printed. <<<
1 2 3
1 .4000000E+01 .2000000E+01 .1000000E+01
2 .8000000E+01 .3000000E+01 .2000000E+01
3 .4000000E+01 .6000000E+01 .2000000E+01

Case 2:

Solution of the system:

4 8 4 X 1 4
8 19 14 X 2 17 AX=B

4 14 18 X 3 26

Where Matrix A will be reduced first. In the next step the forward reduction & backward
substitution of B will be carried out in order to get solution for X

Program
No
41

read,A,3,3,1
4,8,4
8,19,14
4,14,18
read,B,3,1,1
4,17,26
C,1
Forward reduction of A is performed
Solve,A,1 Solve,A,B,1 can also be used
Write,A
C,1
The solution for AX=B
Solve,A,B,2
write,B
Stop
Results
No
>>> 3 Row(s) and 3 Column(s) Matrix A is Printed. <<<
1 2 3
1 .4000000E+01 .2000000E+01 .1000000E+01
2 .8000000E+01 .3000000E+01 .2000000E+01
3 .4000000E+01 .6000000E+01 .2000000E+01
>>> 3 Row(s) and 1 Column(s) Matrix B is Printed. <<<
1
1 .1000000E+01
2 -.1000000E+01
3 .2000000E+01

Case 3:

Solution of the two systems:

4 8 4 X 1 4 4 8 4 X 1 8
8 19 14 X 2 17 and 8 19 14 X 2 7

4 14 18 X 3 26 4 14 18 X 3 14

In the first solution AX=B is solved for first system and then Solve,A,B,2 is used for solving
the second system. In the second solution B is read as a 3x2 matrix and solved so.
Program 1
No
42

read,A,3,3,1
4,8,4
8,19,14
4,14,18
read,B,3,1,1
4,17,26
C,1
Forward reduction of A is performed
Solve,A,B
Write,A
C,1
The solution for AX=B (first system)
Write,B
Read,B,3,1,1
8,7,-14
Solve,A,B,2
write,B Solution for second system
Stop
Results:
>>> 3 Row(s) and 3 Column(s) Matrix A is Printed. <<
1 2 3
1 .4000000E+01 .2000000E+01 .1000000E+01
2 .8000000E+01 .3000000E+01 .2000000E+01
3 .4000000E+01 .6000000E+01 .2000000E+01
>>> 3 Row(s) and 1 Column(s) Matrix B is Printed. <<<
1
1 .1000000E+01
2 -.1000000E+01
3 .2000000E+01
>>> 3 Row(s) and 1 Column(s) Matrix B is Printed. <<<
1
1 .2000000E+01
2 .1000000E+01
3 -.2000000E+01
Program 2:
No
read,A,3,3,1
4,8,4
8,19,14
4,14,18
read,B,3,2,1
4,8
17,7
26,-14
C,1
Solution of Both the systems
Solve,A,B
43

Write,A
Write,B
Stop
SOLUTION
No
>>> 3 Row(s) and 3 Column(s) Matrix A is Printed. <<<
1 2 3
1 .4000000E+01 .2000000E+01 .1000000E+01
2 .8000000E+01 .3000000E+01 .2000000E+01
3 .4000000E+01 .6000000E+01 .2000000E+01
>>> 3 Row(s) and 2 Column(s) Matrix B is Printed. <<<
1 2
1 .1000000E+01 .2000000E+01
2 -.1000000E+01 .1000000E+01
3 .2000000E+01 -.2000000E+01

ANALYSIS OF STRUCTURE by DISPLACEMENT APPROACH


Start
NO
read,ar,4,2,1 1
1,0,0.208333,1
0,1,-1.25,0
read,ax,4,2,1
0,0,0,.208333 4.8 m
-.1,-.075 3
2
-.6,-.45
read,temp,4,1,1
1e4,5e4,3.75e4,12.5e4
0.05 m
zero,k,4,4 3.6 m 6.4 m
stodg,k,temp
trans,ar,art
mul,art,k,temp
mul,temp,ar,K
read,x,2,1,1
0.05,0
mul,ax,x,vx
mul,temp,vx,R1
read,R,2,1,1
0,1
sub,R,R1
solve,K,R
ren,R,r
c,1
Solution for Displacements Completed
mul,ar,r,vr
add,vr,vx,v
44

mul,k,v,Sxrt
trans,ax,axt
mul,axt,Sxrt,X
read,cx,1,2,1
-1,-.75
read,cr,1,2,1
-.75,0
mul,cr,r,qr
mul,cx,x,qx
add,qx,qr,q
write,q
write,r
write,X
Write,Sxrt
stop
Results of Mail Program

>> Total Core: [666000] Core Used= 0 Time = .00 Seconds <<
Start
++++:+++ Startup Operation +++:++++
>> Total Core: [666000] Core Used= 0 Time = .00 Seconds <<
NO
>>> 1 Row(s) and 1 Column(s) Matrix q is Printed. <<<
1
1 -.3287233E-01
>>> 2 Row(s) and 1 Column(s) Matrix r is Printed. <<<
1
1 -.2283690E-01
2 .4872960E-02
>>> 2 Row(s) and 1 Column(s) Matrix X is Printed. <<<
1
1 .1095171E+03
2 .8333867E+02
>>> 4 Row(s) and 1 Column(s) Matrix Sxrt is Printed. <<<
1
1 -.2283690E+03
2 .5764007E+01
3 -.4764007E+01
4 -.1817345E+03

Alternate solution by Direct Stiffness method


Start
c,1
Alternate solution by Direct Stiffness method
MESH,a
4,3,2,2,3,2
COOR
1,0,0,0
2,0,3.6,4.8
3,0,10,0
4,0,0,4.8
45

ELEM
1,1,0,1,2
2,1,0,3,2
3,2,0,4,2

MATE
1,3, Beam Element
1e5,10,1,0,0,0,0,0,0
2,1, Plane Truss Element
1e4,3.6,0

BOUN
1,0,1,0,0
3,0,1,1,0
4,0,1,1,1

FORC
2,0,0,0,1.0

END
stif,a,K
rhsf,a,R
read,t,6,5,1
1,0,0,0,0
0,1,0,0,0
0,0,1,0,0
1,0,-0.75,0,0
0,0,0,1,0
0,0,0,0,1
tmul,t,K,atK
mul,atK,t,k
tmul,t,R,r
modify,k,r,k1,r1,1
1,-0.05
solve,k1,r1
dsmb,r1,r,5
0,1,2,3,4
-0.05,0,0,0,0
mul,t,r,R
disp,a,R
strs,a,R
stop

Results of MAIL Program

>> Total Core: [666000] Core Used= 0 Time = .00 Seconds <<
Start
++++:+++ Startup Operation +++:++++
>> Total Core: [666000] Core Used= 0 Time = .00 Seconds <<
c,1
Alternate solution by Direct Stiffness method
>> Total Core: [666000] Core Used= 0 Time = .00 Seconds <<
46

MESH,a

Name of Domain = a

Number of Nodal Points = 4


Number of Elements = 3
Number of Material Sets = 2
Dimension of Coordinate Space= 2
Degrees of Freedom per Node = 3
Nodes per Element (Maximum) = 2
>> 275 Rows and 1 Columns Matrix a <<

NODAL COORDINATES

NODE 1 COORDIN 2 COORDIN


1 .0000 .0000
2 3.6000 4.8000
3 10.0000 .0000
4 .0000 4.8000

ELEMENTS

ELEMENT MATERIAL 1 NODE 2 NODE


1 1 1 2
2 1 3 2
3 2 4 2

Material Properties

Matreial Set 1 for Element Type 3


Beam Element
>> Tahir Softwares Finite Element Library <<
Beam Element Material Properties

Modulus .1000E+06
Area .1000E+02
Inertia .1000E+01
U.D.L. .0000E+00 (+ Along Positive Local Y-Axis)
Density .0000E+00

Matreial Set 2 for Element Type 1


Plane Truss Element
>> Tahir Softwares Finite Element Library <<
2-D Truss Element

Modulus = .10000E+05
Area = .36000E+01
Density = .00000E+00

Nodal Boundry Conditions


Node 1 -B.C. 2 -B.C. 3 -B.C.
1 1 0 0
3 1 1 0
4 1 1 1

NODAL FORC/DISP
47

NODE 1 FORC/DI 2 FORC/DI 3 FORC/DI


2 .0000 .0000 1.0000
>> Total Core: [666000] Core Used= 277 Time = .05 Seconds <<
stif,a,K
>> 6 Rows and 6 Columns Matrix K <<
>> Total Core: [666000] Core Used= 329 Time = .05 Seconds <<
rhsf,a,R
>> 6 Rows and 1 Columns Matrix R <<
>> Total Core: [666000] Core Used= 349 Time = .05 Seconds <<
read,t,6,5,1
>> 6 Rows and 5 Columns Matrix t <<
>> Total Core: [666000] Core Used= 417 Time = .05 Seconds <<
tmul,t,K,atK
>> 5 Rows and 6 Columns Matrix atK <<
>> Total Core: [666000] Core Used= 513 Time = .11 Seconds <<
mul,atK,t,k
>> 5 Rows and 5 Columns Matrix k <<
>> Total Core: [666000] Core Used= 571 Time = .11 Seconds <<
tmul,t,R,r
>> 5 Rows and 1 Columns Matrix r <<
>> Total Core: [666000] Core Used= 589 Time = .11 Seconds <<
modify,k,r,k1,r1,1
Equation No : 1 Prescribed Value = -.5000000E-01
Sizes of the Condenced Matrices ...
>> 4 Rows and 4 Columns Matrix k1 <<
>> 4 Rows and 1 Columns Matrix r1 <<
>> Total Core: [666000] Core Used= 645 Time = .11 Seconds <<
solve,k1,r1
>> Total Core: [666000] Core Used= 645 Time = .11 Seconds <<
dsmb,r1,r,5
++ (DISEM) ++ Destination Vector
0 1 2 3 4
++ Matrix r is Deleted ++
>> 5 Rows and 1 Columns Matrix r <<
++ Dissemble ---- Prescribed Array ++
-.50E-01 .00E+00 .00E+00 .00E+00 .00E+00
>> Total Core: [666000] Core Used= 645 Time = .11 Seconds <<
mul,t,r,R
++ Matrix R is Deleted ++
>> 6 Rows and 1 Columns Matrix R <<
>> Total Core: [666000] Core Used= 645 Time = .11 Seconds <<
disp,a,R

Nodal Displacements
Node 1-COORD 2-COORD 1-DISPL 2-DISPL 3-DISPL
1 .0000D+00 .0000D+00 .0000D+00 -.5000D-01 .4700D-02
2 .3600D+01 .4800D+01 -.2284D-01 -.3287D-01 .4873D-02
3 .1000D+02 .0000D+00 .0000D+00 .0000D+00 .5064D-02
4 .0000D+00 .4800D+01 .0000D+00 .0000D+00 .0000D+00
>> Total Core: [666000] Core Used= 645 Time = .11 Seconds <<
strs,a,R

+++ Beam Element Actions +++

Element Matter Node1 Node2 1-Ax.Force 1-Shear 1-Moment


Central Moment 2-Ax.Force 2-Shear 2-Moment
1 1 1 2 .0000E+00 .9606E+00 .5684E-13
48

.2882E+01 .0000E+00 -.9606E+00 .5764E+01


2 1 3 2 .1817E+03 -.5955E+00 -.2842E-13
-.2382E+01 -.1817E+03 .5955E+00 -.4764E+01

2-D Truss Element

Elem Mater 1-Coord 2-Coord Stress Strain


Force Elongation
3 2 1.8000 4.8000 -.63436E+02 -.63436E-02
-.22837E+03 -.22837E-01
>> Total Core: [666000] Core Used= 645 Time = .11 Seconds <<
stop
i

S-ar putea să vă placă și