Download Latest Version symsap-0.04.zip (61.1 kB)
Email in envelope

Get an email when there's a new version of SymSAP

Home
Name Modified Size InfoDownloads / Week
README.mkd 2012-06-02 11.6 kB
symsap-0.04.zip 2012-05-27 61.1 kB
symsap-0.03.tar.gz 2010-12-02 35.6 kB
symsap-0.02.tar.gz 2009-12-18 28.5 kB
symsap-0.01.tar.gz 2009-12-16 27.5 kB
Totals: 5 Items   164.3 kB 0

SymSAP - A Symbolic Structural Analysis Program

SymSAP is a little program for performing symbolic matrix structural analysis. It is designed to help students in Civil/Mechanical/Aerospatial Engineering learn structural analysis. Because learning means an understanding of the functional relations between all the involved variables (loads, geometry, mechanical characteristics) it is useful to have a program that can give symbolic results. Of course, numeric values can easily be retrieved.

SymSAP runs as a set of scripts that must be interpred by Maxima, a CAS (Computer Algebra System) freely available at http://maxima.sourceforge.net

SymSAP is cross-platform, ad it is available for every operating system where Maxima can be installed. GNU/Linux, Mac OS X, Windows, and BSD systems are supported, and maybe others too.

FEATURES

  • symbolic matrix structural analysis, according to Euler-Bernoulli model
  • ability to compute analytical expressions for displacements, elastic deformed shapes and strains (axial force, shear and bending moment)
  • support for deformability hypotheses: for example, it is possible to suppose axial or flexural deformability negligible (useful for a lot of exercises)
  • support for every type of constraint or restraint, elastic and internal, and even in skewed directions
  • support for concentrated distortions and thermal loads

REQUIREMENTS

As SymSAP is written in Maxima programming language, it needs Maxima to be executed. Maxima can be freely downloaded from http://maxima.sourceforge.net , and it is available for all the most known operating systems. Important: Maxima >= 5.19.2 is recommended, since earlier versions have a bug in definite integrals computation. At present (May 2012) version 5.27.0 is available.

INSTALLATION

Unpack symsap-0.x.tar.gz (where x is the version number) wherever you want. You will see some files and a subfolder, named input_files, containing the example files defining the structures to be solved, and where you should place your own input files.

You need Maxima installed before you can start (see REQUIREMENTS section). Then, you need to make Maxima aware of the new files. Maxima searches for files in some directories defined by a special variable, named file_search_maxima. You have to add your path to this variable, and this can be done by creating an init file for Maxima, or by modifying it if if already exists.

First of all, launch Maxima. You have two choices:

1 - open a shell (for example, bash on Linux), then type maxima to start Maxima. On Windows it may be better to open Maxima by clicking on the proper shortcut (command line Maxima) because the installer doesn't add the maxima to the system path

or

2 - open a graphical user interface, which launches Maxima automatically. For example, there is wxMaxima, included in Windows distribution and available for a separate installation on GNU/Linux systems.

At this point you will see the Maxima prompt. Type:

maxima_userdir;

and hit enter (shift-enter on wxMaxima). The output will be something like this (ste is my user, therefore in the following sections substitute it with yours):

/home/ste/.maxima (on GNU/Linux systems)

C:/Documents and Settings/ste/maxima (on Windows systems)

Now, go with your file manager into the directory given by the above output. Keep in mind that, on Linux/Unix systems, .maxima is a hidden folder, so your file manager must show hidden elements. If the directory indicated by maxima_userdir is not present, you have to create it. On Windows XP, for example, I've noticed that it is absent, as well as on Ubuntu and Kubuntu, while on Slackware it is present. So, you may have to create the directory called called "maxima" or ".maxima", if not present. Into this directory, look for a file called maxima-init.mac : if not present, copy into this folder the maxima-init.mac contained in the SymSAP package, and edit the strings contained in it. Imagine you have unpacked SymSAP in /home/ste/symsap-0.04/ ; you have to edit maxima-init.mac and modify the variable symsap_home:

symsap_home : "/home/ste/symsap-0.04/" $

another example, on Windows, symsap unpacked to C:\symsap-0.04 :

symsap_home : "C:/symsap-0.04/" $

Don't forget the slash at the end. Note that, even on Windows, you always have to use slashes / and not backslashes \ when specifying paths in Maxima code.

If the file maxima-init.mac already exists, just add to it the content of the maxima-init.mac shipped with SymSAP.

You are ready: quit Maxima by typing quit(); or by closing the shell or the GUI, and then restart it. You can verify that all has been properly done by typing, in Maxima

file_search_maxima;

At the end, you should see the directory contained in the maxima-init.mac

USAGE

HOW TO DEFINE AN INPUT STRUCTURE

To see how a structure can be defined, first of all have a look at the included examples in the directory called input_files. In the main directory there is also a file called "input_scheme.mac" that shows the most complete structure of an input file.

You need to specify some input quantities to define a structure: geometry, mechanical properties, loads, etc. All inputs are contained in matrices with a specific meaning.

There are MANDATORY matrices for defining

  • nodes and their coordinates (NodeCoord)
  • beams, which connect nodes (ConnectMatrix)
  • constraint conditions (ConstrCond and ElasticConstrCond)
  • geometric and mechanical properties (BeamChar)

and OPTIONAL matrices for defining

  • internal disconnections (Disconnections)
  • deformability hypotheses (DefHyp)
  • nodal loads (NodalLoads)
  • nodal moments (NodalMoments)
  • distributed loads (DistributedLoads)
  • distributed moments(DistributedMoments)
  • concentrated distortions (ConcDist)
  • thermal distortions (ThermalDist)

==> Have a look at the file input_scheme.mac for a more detailed explanation and the exact syntax for the inputs, and at the examples contained in the input_files directory, which will surely make you better understand how inputs should be entered.

Remember that Maxima is case-sensitive: NodeCoord is different from nodecoord!

It is advisable to save all input matrices in a file in the input_files directory paying attention that it has a .mac extension. The same thing has been done for the examples contained in the directory input_files, so it is advisable for you to do the same.

About the reference frame:

y

^
|
|
|
|
|
|
|                  
| <--.  phi
|     \
|-----------------------> x

Be careful to respect the above conventions:

an x component is positive if right-directed an y component is positive if up-directed a rotation is positive if counterclockwise

CALLING THE SOLVER

To begin a computation, first of all you have to open Maxima, and if you have properly modified the maxima-init.mac file, you are ready to start.

At this point you can tell SymSAP which structure has to be solved. Type:

solve_struct(name_of_your_input_file);

(if the above command doesn't work, try solve_struct("name_of_your_input_file.mac"); ).

name_of_your_input_file.mac is the name of the file that defines the structure, which must be located in the input_files directory. You can start with the included files, for example cantilever.mac (have a look in the input_files directory).

RESULTS

If all goes right, in a few seconds you will get the results. To display some results, you can type

show_results();

that shows displacements and constraint reactions.

It is also possible to manually retrieve more results. Symbols are the following:

u is the displacements vector, expressed in the global reference frame. It reflects node numbering, implicit in NodeCoord structure (see the specific input file). For each node, the three displacement components are listed, in the order x, y, phi (respectively, displacements along x axis, y axis, rotation).

For example, displacements of node number 1 are contained in the first three elements of u:

-1st element of u: displacement along the x axis of node number 1 -2nd element of u: displacement along the y axis of node number 1 -3rd element of u: rotation of node number 1

for node number 2:

-4th element of u: displacement along the x axis of node number 2 -5th element of u: displacement along the y axis of node number 2 -6th element of u: rotation of node number 2

and so on: each node has three entries in vector u, one for each displacement component.

A more human-readable version of displacements is matrix displ: In each row, it contains:

-1st column: node index -2nd column: displacement component index (1=x, 2=y, 3=phi) -3rd column: displacement value, expressed in the global reference frame.

ConstrReact is the matrix of constraint reactions. In each row, it contains:

-1st column: node index -2nd column: component index (1=x, 2=y, 3=phi) -3rd column: related component of the constraint reaction, expressed in the global reference frame.

Analytical expressions for stesses and deformed shapes:

  • N[i] is the equation of the axial force
  • T[i] is the equation of the shear force
  • M[i] is the equation of the axial force
  • w[i] is the equation of the deformed beam along its axis
  • v[i] is the equation of the deformed beam orthogonal to its axis
  • phi[i] is the equation of rotations

where i is the beam index (implicitly defined by the correspondant row in matrix ConnectMatrix), and x (see an equation) is the local abscissa. The above equations are expressed in the local reference frame of each beam. Keep in mind that the signs of the above quantities are determined by specific conventions:

  • N is positive if it is a traction stress
  • T is positive if it gives a clockwise moment on the following section, that is, a section with a greater local abscissa
  • M is positive if it stretches the lower fibers (lower fibers depend on the choice of the orientation of the local reference frame): so, if you want to plot M, you have to invert its sign.

These are just convention, and may change in further versions of SymSAP, if needed.

Displacement components w, v are positive if they have the same sense of global reference frame versors, rotations (phi) are positive if counterclockwise.

  • K is the global stiffness matrix
  • _k[i] is the stiffness matrix of the i-th beam in the local reference frame
  • _kg[i] is the stiffness matrix of the i-th beam in the global reference frame
  • S[i] is the vector of beam nodal forces, expressed in the local reference frame

There are many other symbols, just have a look at the source code.

HELP AND CONTACTS

If you have questions or suggestions, please visit http://sourceforge.net/projects/symsap

For Maxima-related questions, you can ask on the mailing list: http://maxima.sourceforge.net/maximalist.html

You can also write to me by email. To see my address, look for the help and contacts section in the README included in the SymSAP archive.

A more detailed readme, tutorials and some documentation will be available as soon as possible.

AUTHORS

Copyright (C) 2009-2012 Stefano Ferri

Source: README.mkd, updated 2012-06-02