banner.jpg (7086 bytes)
            Finite Element and Numerical Methods with Integrable / Differentiable Objects.
       Numerical Programming Made Easy !
       Home Feedback Press Release Tech Support Search Site Map

_____________ 
smalllogo.gif (4178 bytes)
_____________
Express Tour
Online Workbook
Graphic Gallery
Products/Purchase
Review/Testimonial
About VSP
Free Downloads
FEM Links
O-O FEM World
FEM Books

_____________



Finite Element Analysis

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]  

Object Oriented, Finite Element Analysis for a perforated strip in Computational Mechanics.
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.)

   checker[1].gif (535 bytes) Click to Take a Finite Element Quiz!

ivbar1[1].gif (3412 bytes)

sitebanner[1].gif (12135 bytes)
                                                                          VectorSpace Programming
Home Page Index :

An Object-Oriented Numerical Programming Tool--vs.lib
A Revolutionary Step in Numerical Programming
FAQ about vs.lib (Join our Express Tour)

An Object-Oriented Finite Element Library (fe.lib; free source code)
FAQ about fe.lib
How does the finite element library, fe.lib, fundamentally differ from other object oriented Finite Element programs?
Who are the audience that the finite element library, fe.lib, is intended for?
[ Scientists, Engineers, and Mathematicians ]
[
Object-Oriented FE Developers
[
Designing Engineers and Consultants ]
[
Industrial Finite Element Companies ]

[ Back to Top ]

ivbar1[1].gif (3412 bytes)

VectorSpace C++ Library--vs.lib:
An Object-Oriented Numerical Programming Tool

[click here for prices and how to order vs.lib]

    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 !     

logo.gif (15315 bytes)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 ...

FAQ about fe.lib
How does the fe.lib fundamentally differ from other object oriented FE programs?
Who are the audience that fe.lib is intended for?
[ Scientists, Engineers, and Mathematicians ]
[
Object-Oriented FE Developers
[
Designing Engineers and Consultants ]
[
Industrial Finite Element Companies ]

[ 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.libfe.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.libfe.lib is most valuable to finite element companies. It facilitates the formal cooperate software engineering efforts:
Development team managers can use vs.libfe.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 ]

Hit Counter hits, since Jan 1, 1999.

_______________
Go To
  Home Page Index  

_______________
Free Box: 
(c0.lib + application sources) Sorry, your browser doesn't support Java.     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:

Source Code Demo...
sftrolley{1].gif (15971 bytes)
_______________
Click here to
View Online Workbook :

bookcover.gif (9238 bytes)

Click here for
Table of Contents

_______________
vs.lib & fe.lib

supported compilers
8875fs[1].jpg (11103 bytes)cbuilder.gif (7612 bytes)
watcombox[1].gif (13489 bytes)
run under PC platform:
windows[1].gif (2622 bytes)
[back to Free Box]
_______________

[ Home ] Express Tour ] Online Workbook ] Graphic Gallery ] Products/Purchase ] Review/Testimonial ] About VSP ] Free Downloads ] FEM Links ] O-O FEM World ] FEM Books ]

© Copyright 1999, VectorSpace Programming. Site privacy policy statement. 
sf[1].gif (32887 bytes)mailbox.gif (1717 bytes) webmaster@vector-space.com with questions or comments.

 linkbutton.gif (1755 bytes) Your are welcome to use this button to link your web page to us.

FPCreated[1].gif (9674 bytes) ie4getan[1].gif (7090 bytes) ntsc[1].gif (7197 bytes) getacro[1].gif (712 bytes)