Impact is written in Java

Impact is written in Java for two reasons:

  1. Java is an Object Oriented language and that suits Finite Element Programming perfectly

  2. Java is clean, simple and extremely portable.

On the other hand, Java might seem like a strange choice since this is a high performance number crunching type of software and Java is not known to be competitive to ex. Fortran or C++ in this area. True, it is slower but with the new interpreters from IBM and Sun, the built in runtime compiling actually gets the speed up quite a bit so this is not such an issue after all.

The explicit code is based on the simple formula of F=M*A where F represents a force, M is the mass of a body and A is the resulting acceleration of that body.

All the code does is to calculate the acceleration for the body, use a small step in time to translate this acceleration into a little displacement of the body. This displacement is then used to calculate a responding force since the body is elastic and can be stretched (thus creating a reaction force). This force is then used to calculate an acceleration and then the process is repeated again from the beginning.

As long as the timestep is sufficiently small, the results are accurate.


Literature of Interest

There are a large number of books available on Finite Element Theory. Most of them describe Finite Element from a static point of view and is therefore of limited interest to the potential Impact programmer.

On the other hand, the theory of element formulation is often usable to a large extent and having that in mind, here are a few proposals:

  • Concepts And Applications Of Finite Element Analysis, Third edition - Robert D. Cook, David S. Malkus, Michael E. Plesha, ISBN 0-471-84788-7

  • The Finite Element Method - Linear Static and Dynamic Finite Element Analysis - Thomas J. R. Hughes, ISBN 0-484-41181-8

  • Nonlinear Finite Elements for Continua and Structures - Ted Belytschko, Wing Kam Liu, Brian Moran. ISBN 0-471-98773-5

The first book is recommended to beginners and engineers in general since it deals with most issues from a linear algebra perspective. This makes the code writing quite close to the Impact format. It is also a very good book and the one I have had best feedback from.

Ted Belytschko's book is the "bible" in this field. The man behind explicit codes have finally written a compendium on the theory and some principle algorithms are also shown. However, for an engineers perspective, this book is quite deep in its places and is more suitable as a reference than as a learning book for beginners.

There are also some papers written which are of interest. These papers form the basis of coming shell element extension to Impact.

To understand the concept behind object orientation, inheritance etc, the following book is a pleasure to read: