2.2 The MODULEF code HREF="./Modulef.css" TITLE="Modulef CSS"> ALT="Modulef"> ALT="previous"> ALT="up"> ALT="next"> ALT="contents"> ALT="[BIG]"> ALT="[Normal]"> ALT="[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: The easiest case corresponds to a configuration where the entire mathematical problem has been solved, i.e. incorporated in the system, at a previously stage. In this case the main program exists in the MODULEF code and the user merely needs to execute this program (or "black-box") and supply the corresponding data. If the main program does not exist in the MODULEF code, but all the modules required for the solution of the problem under consideration are available, the user must write the main program himself which calls one or several modules successively. Finally, it may be necessary for the user to program an entire module himself which in turn calls the numerical algorithms and utilities. 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: write a main program constituting all the calls to the Fortran subroutines, and open sequential or direct access files for the I.D.S. and/or O.D.S. which the user wants to save, write one or several Fortran subroutines to define the analytical expression of the boundary, loads, non-linear dependence of the physical characteristics of the materials, etc., compile the different programs, link the program with external references (modules, subroutines and supplementary functions) (to facilitate this step, a data (or procedure) base is available containing the relationships between libraries, subroutines, etc.), supply the data according to the MODULEF free format rules [4] ([MODULEF User Guide - 2]). The amount of data is often very little or nothing at all. 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: Programs of type 1 requires little data and corresponds to on-line processing. Programs of type 2 requires a larger set of data, and consists of two steps. Firstly, we need to enter the data from which the data file is created. Thereafter, the program is executed in batch or on-line using the data file created in the preceding step. Some of the features available are: two- or three-dimensional mesh generation modules, two- and three-dimensional mesh modification modules, graphics (plotting of meshes, stresses, isovalues, etc.) modules, and general modules (related to the solution of linear thermal and elastic problems). 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: Cholesky factorization of a skyline matrix: : matrix in core: module CHOLPC matrix out of core: module CHOLPS Crout factorization of a skyline matrix: : module CROUPC Gauss factorization of a non-symmetric matrix: : module DRGAPC 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: CHMC1R ( list of parameters) : Cholesky algorithm in single precision, and CHMC1D ( same list of parameters) : Cholesky algorithm in double precision. 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: to reduce the number of input/output operations during a loop in a non-linear or time-dependent problem, and to use a mathematic operator, included in MODULEF, in an external context. 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: FEMSOLID: solution of plane linear elastic problems with element TRIA 2P2D, including the calculation of displacements and stresses and plotting of deformations and isostresses; TREILLIL: solution of beam grid problems with element SEGM 2POR. 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: interactive editing of plane objects consisting of segments, arcs and splines, defining the node and line reference numbers, the domains and their corresponding numbers, the line discretization, the mesh type, and generating the data file for module APNOXX, and meshing the domains in triangles, editing the resulting mesh, and generating binary files in the NOPO format. 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. ALT="Modulef"> ALT="previous"> ALT="up"> ALT="next"> ALT="contents"> ALT="[BIG]"> ALT="[Normal]"> ALT="[small]"> Next: Part II: How do I use Up: 2 The MODULEF library Prev: 2.1 Capabilities >Contents