Second-Generation BEM Software Architecture
This is the description of a software tool to be written primarily at the
CTCMS (Vinod Tewary and Adam Powell) to do boundary element analysis using
the Green's Function library (referred to here as a "database" to avoid
confusion) concept for (primarily) solder applications.
Tasks:
-
DONE! Define a data file format (or CORBA interface?) for BEM models
which will include:
-
Title, author, description
-
Mesh geometry
-
Problem type
-
Number and descriptions of degrees of freedom at each node
-
LU-decomposed or inverted matrix (if available) in little-endian byte order
-
Model parameters including bounding values (so they can be controlled by
sliders in a GUI)
-
Scripting, in scheme (guile)? lex?
-
In progress, documentation is here.
Write a library of functions called libBEM for importing, manipulating
and saving these data. This library will be used by our own software,
but should also be written as a library so it may be incorporated into
the proprietary software of our industrial partners, such as Caterpillar's
internal software, or IDEAS. Library features:
-
Surface specification routines, specifying node coordinates and element
node numbers and surface numbers. A routine to import Surface Evolver
files.
-
"Modular" elemental matrix calculation, easily extensible to allow addition
of new problem types.
-
Use of elemental matrices to calculate H and G matrices for
sets of surfaces.
-
Boundary condition specification routines, including Dirichlet, vonNeumann,
and nonlinear Robin boundary conditions.
-
One step solution of problems with Dirichlet, Neumann or linear Robin BCs
by column switches; fast Newton-Raphson iterative solution of problems
with nonlinear Robin BCs.
-
Composite solution on two sets of surfaces by separate LU-decomposition
of "S1" and "S2" surface matrices.
-
Simple wrapper for matrix multiply, solve, invert and back-substitute routines
for easy substitution of alternative approaches to these tasks (defaults
to native BLAS/LAPACK routines).
-
GNU autoconf/automake file system for simple installation on any Unix platform.
-
Write a CORBA server interface called CBEM, and a simple text-based
CLI CORBA client BEM.
-
Write a GUI CORBA client gBEM.
The software will be built upon the standard BLAS/LAPACK (Basic Linear
Algebra Subroutines, Linear Algebra Package) libraries, which are hand-coded
for maximum performance on many architectures. Those who do not have
these libraries may get them at ftp://info.mcs.anl.gov/pub/petsc/blas_lapack.tar.gz,
and Kazushige Goto's accelerated dgemm routine for Linux-Alpha (21164A)
is available at ftp://ftp.eni.co.jp/.2/Linux-Alpha-JP/ftp.statabo.rim.or.jp/BLAS/.