Modulefpreviousupnextcontents[BIG][Normal][small]
Next: Part II: How do I use Up: 2 The MODULEF library Prev: 2.1 Capabilities Contents


2.2 The MODULEF code

The MODULEF system, illustrated in the flow-chart below, consists of logically ordered entities which have a hierarchical structure such that lower levels in this structure do not reference higher levels. Furthermore, each of these abstract entities incorporates operators and data structures which are transparent to the user.

 
Figure 2.1: The MODULEF environment 

By inspecting the flow-chart we see that the MODULEF environment consists of three levels, which corresponds to three ways of using the software:

In the last two cases it is of utmost importance that the user respect the MODULEF programming norms.

2.2.1 Use of MODULEF

The classical use

This corresponds to level 3 in figure 2.1, where the user is required to:

At each call of the module the O.D.S. can be saved on secondary memory. In order to effect this, it suffices to input a non-zero file number. The user remains the master of his saves. This is very useful for a non-linear or time-dependent problem where the amount of input/output must be minimized.

Naturally, if the usage of a suite of modules is intensive, a module to be loaded can be fixed and called back in order to avoid compilation and linking. Similarly, if certain problem steps are not programmed, then as many modules must be realized according to the norms and integrated in the library. The user is thus returns to the previous case.

Library TEST treats some complete examples for which the input data is given. These sequences allows us to test the implementation of the version and the quick solutions of new problems.

The conversational use

Conversational programs are designed to communicate and transfer information through the use of menus, questions, etc. They generally create formatted data files which can then be used as input for batch processing, especially useful when the execution time is considerable.

The majority of modules running can be activated conversationally. These programs are used to treat relatively simple problems, or to prepare the data for an important step in a more complex problem. There are two types of conversational programs:

Some of the features available are:

2.2.2 The modules

The main programs mentioned above, should only consist of a succession of calls to the various modules. This flexibility, which is particularly important for research and development, is an important feature of the MODULEF software. Furthermore, it is the aim of the software to be as user-friendly and programmer-friendly as possible.

The main advantages of a modular code are reliability, simplicity and, most important, modifiability. The latter is a crucial aspect of the MODULEF code as mathematical operators can frequently be solved by several different methods, each corresponding to a different module. With MODULEF, the user generally only needs to modify the name of the module, leaving the arguments the same, when choosing a different method. Furthermore, new numerical methods can easily be incorporated into the library. For example, the following modules correspond to different direct methods for matrix factorization:

All the modules above have the same list of arguments.

Moreover, thanks to the modularity of the code, it is possible to execute modules either with single or double precision. In this case the module calls one of two similar subroutines whose names differ only by the last letter, " R" and " D", corresponding to Real (single precision) and Double precision, respectively. For example, module CHOLPC calls:

Modules communicate through standardized data structures, in terms of sets of Fortran arrays, whose internal representation is transparent to the user. The data structure management and the numerical algorithm are distinct in each module. The algorithm is confined to a standard Fortran subroutine which only accesses those arrays necessary, without referencing the dynamic storage. This enables us:

As mentioned above, in the event that a module performing some desired operation does not exist in the MODULEF library, the user might want to write the complete module himself. In order to maintain the coherence and homogeneity of the library, the programming must conform to predefined standards set by the MODULEF club [MODULEF User Guide - 2].

A list of some of the main modules and their functions which are presently available is given in appendix A.

2.2.3 Supplementary features

Among the computer utilities to aid the user with the utilization of the MODULEF library is the expert system, DOMINO, incorporating the know-how of MODULEF specialists: application field of the algorithms, choice of the optimal algorithms, respecting of external specifications of each module, etc. Its aim is to relieve the engineer of all this algorithmic, numeric and computer knowledge. DOMINO guides the user during the specification of his/her problem, generates the sequence of programs and controls their execution.

As far as teaching is concerned, two instructural software packages have been developed on the MacIntosh:

An interactive graphic mesh generation software package, EMC2, is the product of two INRIA projects, the one being MODULEF. This software package includes the following three functions:

2.2.4 Conclusion

The MODULEF library, based on the finite element method, enables numerous researchers, university as well as industry, to solve their application problems such as: mesh generating, solution of time-dependent heat transfer problems, dynamic problems, eigenvalue problems, incompressible and compressible viscous fluid flow, non-linear problems, plate problems, etc.

Taking the increasing number of members and growing interest in the MODULEF club into account, as much as in the industrial as in the university environment, the MODULEF library is fast becoming a complete, reliable and easy-to-use library of modules and programs adapted to more and more diverse problems.


Modulefpreviousupnextcontents[BIG][Normal][small]
Next: Part II: How do I use Up: 2 The MODULEF library Prev: 2.1 Capabilities Contents