The foundation of Julian is its library, libelem, which is a Unix shared library designed to provide all of the boundary element and finite element functionality to any front end or larger program which decides to use it. libelem is composed of the three object classes: matrix, mesh and bem, with a fourth, fem, to be completed in the future. It is object-oriented in design, and written in the C language for maximum speed, portability, and efficiency in memory use.
In addition to the C language library calls given here, there are header files which serve as very thin wrappers for a C++ language class library. Class names are capitalized, and method names are given by the uncapitalized C method name stripped of its prefix, e.g. matDecompose() becomes Matrix::decompose(). Exceptions include constructors, destructors, and operators, such as the matrix multiply operator which allows one to write, for example, Matrix C = A * B. Error handling is done by assertion.