|
_____________

_____________










_____________
| |

Finite Element / Numerical Methods with
VectorSpace C++ Library (vs.lib)
vs.lib is a math
library in C++ with a set of linear algebra and integrable
/ differentiable objects. vs.lib is a rapid-proto-typing tool which makes programming in numerical
applications as easy as writing mathematical expressions.
This library, with special emphasis on
applications in object-oriented finite element methods, is in general for applications in advanced numerical analysis such as computational linear algebra, linear
programming, unconstrained / constrained optimization, finite difference method, boundary element method, and variational methods. vs.lib is a product of VectorSpace Programming (VSP).
[click here for prices and how to
order vs.lib]

Finite Elastoplastic Deformation of a
perforated strip (up to 1/3 stretching)
with the Finite Element Method (written in "vs.lib"
and "fe.lib"--a finite
element library. fe.lib source code is
free.)
Click to Take a Finite Element Quiz!
![ivbar1[1].gif (3412 bytes)](images/ivbar1[1].gif)
![sitebanner[1].gif (12135 bytes)](_borders/sitebanner1.gif)
VectorSpace Programming
Home Page Index :

[ Back to Top ]
![ivbar1[1].gif (3412 bytes)](images/ivbar1[1].gif)
Numerical
programming is made as easy as writing mathematical expression. Classes such as
integrable / differentiable objects, submatrix object, basis object, ...etc. are designed using data
abstraction and object-
oriented programming. These classes in the VectorSpace C++ Library (vs.lib) are modeled after mathematical objects in Cn and Hn
spaces (n = 0, 1, 2). vs.lib, version 1.1, is currently available
on the PC platform under Windows 95/98/NT
4.0 with compliers (1) Microsoft Visual C++ 6.0, (2) Borland/Inprise C++ Builder 4.0, or (3) Sybase/Powersoft Watcom C/C++ 11.0 .
[ Back to Home Page Index
] [ Back to Top ]

A Revolutionary Step--
Numerical
Programming Made Easy !
The computer languages used in numerical
programming nowadays are either Fortran or C. They are
both type-compiled languages. These two languages only support simple arithmetic operations on
scalars. On the other hand, symbolic languages can be made ver expressive. However, the symbolic languages are intrinsically
too slow for large-scale numerical computation. Since the underlying constructs of the two
types of languages are so different, a smooth reverse
engineering (or optimization) from symbolic codes to type-compiled codes is simply impracticable.
With the advent of the object-oriented programming paradigm,
the high-flown mathematical objects can be modeled in C++. The object-oriented numerical model has the
advantages of both worlds. The C++ code can be as expressive as the symbolic codes, while
the underlying object models are consistent with the numerical computation algorithms.
This makes the C++ program using vs.lib a perfect Rapid-Proto-Typing tool. The reverse
engineering of the C++ codes into plain C codes is completely seamless within a single
language environment.
vs.lib is a component library which enables C++ with mathematical literacy. The application examples,
free-downloadable from this site, show that the programming in many advanced numerical
applications such as computational linear algebra, optimization and variational method is
made so easy. A revolution in numerical programming is now clear and present!
[ Back to Home Page Index
] [ Back to Top ]

A Framework-based Finite Element
Library (written with vs.lib)--fe.lib:
An Object-Oriented Finite Element Library
We have strong application examples
from basic up to advanced finite element methods. These finite element examples are based
on fe.lib (free
source code), written in VectorSpace C++ Library (vs.lib). That is the fe.lib is used to demonstrate the
advantage of object-oriented method in general, and specifically to show the power of the VectorSpace
C++ Library for a non-trivial numerical programming problem. The fe.lib is a framework-based object-oriented finite element
library.
Two major features in C++, data abstraction and object-oriented method, are used
intensively to model the finite element method. We show, in the design of fe.lib, that the object
oriented analysis is applied to examine the potentially
complicated object dependency relationships, and the object
oriented design is the discipline enforced to manage the
object dependency relationships. The result is that the object-oriented model in fe.lib is completely parallel to how a mathematician will
describe what the finite element method is. The object-oriented finite element model in fe.lib is very general and very inclusive for encompassing ever
widely ranging subject areas in finite element method.
In contrast, a plain finite element
program in Fortran / C languages is known to easily become ugly and disorganized, after
adding, e.g., transient,
non-linear, matrix sub-structuring, ... and so on.
As an object-oriented finite element library, fe.lib shows its beauty of being capable of undertaking much greater
"impact of change", while still keeping its program structure simple and
coherent. This advantage is derived from the code-reuse and programming by specification inherited from the object-oriented programming paradigm. In fact, fe.lib is the most extensible finite element program
known to date.
With such extensible fe.lib
together with expressive vs.lib, our application
examples cover extensive finite element formulations, which include almost all advanced
subjects that are presented in "Zienkiewicz and Taylor, The Finite Element
Method, vol 1
[1989] & vol.
2 [1991]", and beyond (include many advanced works in finite element
by a brilliant young Stanford Prof. J.C. Simo who passed away in 1994; see Simo,
J.C. and T.J.R. Hughes, 1998, "Computational Inelasticity".)
These finite element examples are explained in details in our Application
Workbook. The advanced finite element examples covered include mixed and hybrid
methods (with or without matrix sub-structuring), mixed plate bending, contact mechanics,
elastoplasticity, finite deformation, and more ...
[ Back to Home Page Index
] [ Back to Top ]

FAQ about fe.lib
 | How does the fe.lib fundamentally differ from other
object-oriented FE programs?
|
There are quite a few implementations
of object-oriented finite element programs available. The fe.lib
differs from all of them in a very fundamental way on how the object-oriented programming
is applied to model the finite element method. Other implementations tend to model variational formulation, its
corresponding finite element approximation, and solution algorithm, which are kernels to a finite element problem, directly into objects (in
some cases even into their own "finite element language"). The objects just become a better subroutines, which are still black boxes to users. Extending such
programs will be very difficult for users other than the original authors. Chances are
that you still have a steep learning curve, if your variational
formulation and your preferred finite element approximation for
that variational formulation do not match something close to their programs' bag of
tricks. We seriously doubt that any Fortran programmer should toss away his long proven
finite element codes, and be persuaded to participate in such an incrementally better
evolution.
What we really need is a revolutionary step in numerical programming. The key
problem with Fortran and plain C is that they do not support high-flown mathematical types
that are required in numerical programming. fe.lib
is such an overhaul in finite element programming. It provides a programming environment, an open finite element framework, to
help you implementing variational formulation, finite element approximation, and
solution algorithm. In contrast to other object-oriented finite element programs which
provide you a set of hard-wired objects of variational formulation, finite element
approximation, and solution algorithm. The variational formulation, finite element
approximation, and solution algorithm are the bases for the definition of a numerical
problem. They should not be hidden from the programmers. On the contrary, they are at the
heart of the programming activities. Therefore, they need to be explicitly written, but
only with more concise expressions to avoid getting lost in the details. With the aid of vs.lib, the details of the variational
formulation, finite element approximation, and solution algorithm can be made visible
again. This is because that vs.lib, in turns, hides the routine
mathematical definitions under the hood.
That is, the different levels of complexities are to be selectively amplified or
suppressed. The combined usage of both vs.lib and fe.lib
is an open framework ideal for tackling full spectrum of different variational
formulations, finite element approximations, and solution algorithms. This design
philosophy to selectively express the complexities is known as object-inversion, in which we emphasize the essential and eliminate the irrelevant. As in the framework software
development, we provide mechanisms (nuts & bolts) not policies (end-products) to achieve a versatile open framework for finite element
programming. As a result, a program written in both vs.lib and fe.lib
is capable of describing very different variational formulations, finite element
approximations, and solution algorithms. It is evident that our application examples have
covered an un-precedented wide subject areas in finite elements. All other object-oriented
finite element programs promise the advantage of being more extensible than FORTRAN / C
programs, and some of them also claim they can be used as rapid-application-development
tools. However, in these regards, none of these programs come even close to rival the
combined power of vs.lib
and fe.lib. Moreover, vs.lib can even be used as a
stand-alone library by other object-oriented finite element programs
as a rapid-appication-development tool to develop new elements effectively.
[ fe.lib ] [ Back to Home Page Index ] [ Back to Top ]

 | Who are the audiences that fe.lib is intended
for?
 | Scientists, engineers, and mathematicians: fe.lib is ideal for people who are highly
mathematics literate, such as scientists, engineers, and mathematicians. They do not like to use canned programs, because what is really going on
under the hood can't be known. Moreover, no canned program can be expected to solve PDE
and its variational formulation to suit whatever their
specific research interests are. These scholastic users may range from students who are learning the basics
of finite element methods to professors who are developing new finite elements. It is also perfect for professors
teaching basic to advanced finite element courses. With fe.lib,
students now can be expected to hand in their finite element program assignment at
the next class meeting, not at the end of a semester. [ Back to Top ] |
 | Object-oriented finite element developers
: fe.lib is completely
depending on vs.lib,
while vs.lib is independent from fe.lib. In fact, vs.lib can be used as a rapid-application
development tool to develop new elements for other object-oriented finite element programs. In such a case, fe.lib
serves as an example to demonstrate how vs.lib is
used in the framework of finite element programming. [ Back to Top ] |
 | Designing engineers and Industrial
consultants: vs.lib & fe.lib is a great tool for designing
engineers and industrial consultants, who after using
$10k+ FE programs, want to have a deeper understanding, and to implement the theories and
formulations described in their FE programs' "theory manuals". fe.lib
may help them realistically implement many advanced formulations in hours or days, not in
months. A substantial amount of knowledge has been added to finite
element pathology in the last two decades (see
e.g., MacNeal, R.H., 1994,
"Finite elements: their design and performance".)
Without an adequate understanding of an element, there are simply too many traps and
pitfalls, if a hands-off number crunching attitude is taken. The computed results may bear
no implication whatsoever on physical reality. [ Back to Top ] |
 | Industrial flag-ship finite
element companies: vs.lib & fe.lib is
most valuable to finite element companies. It
facilitates the formal cooperate software engineering efforts:
 | Development team managers can use vs.lib
& fe.lib : to write specifications, which are actually executable proto-type codes, for new elements and
algorithms. |
 | After the proto-type codes are completed, they can be used
by development team members to generate intermediate results to debug the optimized production codes (in plain C or Fortran). |
 | After the optimized production codes are completed, the
proto-type codes can be left as comments or conditional compiled code segments in the
optimized production codes for improving the production codes readability
and maintainability. |
 | The proto-type codes can be included in the company theory
manual for their users. So, the users feel more solid about what is really going on in the
optimized production codes. Users can use these proto-type codes to have some hands-on
experience on the elements they are using. This improves the transparency from the users' perspective. |
|
|
[ fe.lib ] [ Back to Home Page Index ] [ Back to Top ]

hits, since Jan 1, 1999.
| |
_______________
Go To
Home
Page Index
_______________
Free Box:
(c0.lib + application sources)
c0.lib is a C++ class library including
scalar, vector, matrix, subvector, submatrix and basis classes. c0.lib is the kernel of
vs.lib. See supported compilers and OS.
If the Free Box java applet doesn't work on
your browser, click here to a download webpage for all
c0.lib related files.
_______________
Join Express Tour:
![sftrolley{1].gif (15971 bytes)](_borders/sftrolley1.gif)
_______________
Click here to View Online Workbook :

Click here
for
Table of Contents
_______________
vs.lib & fe.lib
supported compilers
![8875fs[1].jpg (11103 bytes)](_borders/8875fs1.jpg) 
![watcombox[1].gif (13489 bytes)](_borders/watcombox1.gif)
run under PC platform:
![windows[1].gif (2622 bytes)](_borders/windows1.gif)
[back to Free Box]
_______________
|