1. General presentation#

1.1. Introduction#

Managing the memory areas assigned to each data structure is an important part of the organization of a scientific computing application written in Fortran language.

The Fortran 77 standard offers a very limited number of possibilities for implementing these data structures:

  • simple variable,

  • fixed size table,

  • common area of fixed size shared between several program units.

These possibilities are insufficient to achieve dynamic resource management.

Moreover, for any application leading to quantities of data of a volume greater than that of the memory available on a given machine, the editor of the application must take care of the memory overflows and program all the exchanges between the central memory and the auxiliary memory (files).

The JEVEUX software package makes it possible to handle several levels of operations directly in the Fortran source text:

  • the standardization of Fortran types that can be used on different machines (integer, real, complex, logical, character). The portability criteria are those defined with the software package ENVIMA (Development Manual - Paper [D6.01.01]: the machine environment descriptor),

  • the creation of elementary data structures (objects JEVEUX) of a size defined at runtime, shareable between several program units and self-documented,

  • Support for all transfers between main memory and auxiliary memory.

Notes:

R1:This document presents all the functions of the software package Jeveux. A number of these functions don’t have to be*known* es*to the « lambda » programmer (those that should only be called by the supervisor, cf. §* 4.21 The initialization routines used by the supervisor.). It should also be noted that the vast majority of uses of Jeveux in Aster concern the management of « simple » objects (vectors). The reader in a hurry (or frightened by the whole of this document) will be able to convince himself that the management of a vector by Jevous*is very simple by looking at the example in §* 5.1 Creation and reuse of a real vector.

R2: The Code_Aster developer who uses Jeveux must (in addition to this document) have read another document: « Use of Jeveux » [D2.06.01].

1.2. Objects JEVEUX: simple object and collection#

1.2.1. The simple object#

The simple object is the basic data structure of the software package. A simple object consists of the descriptor and a single value segment. The number of attributes of a simple object descriptor is fixed for a version of the software package.

Note:

The number of attributes is the same for all simple objects.

Simple object = Name + Attributes + 1 Value segment

The name of a simple object consists of 24 characters taken from the following:

  • uppercase letters from A to Z, lowercase letters from a to Z and numbers from 0 to 9;

  • four special characters:

  • the special character $ is legal but not accessible to the user.

The main attributes are as follows:

  • genre: describes the structure of the simple object

E

simple element (variable)

V

vector (one-index array)

N

name directory (this genre will be defined in the next paragraph)

Gender makes it possible to associate the value segment with classical concepts of variables, Fortran arrays, or to define a more complex data structure.

  • the type: defines the Fortran type of the object’s scalar variables

I

integer

(Fortran type INTEGER)

S

integer

(Fortran type INTEGER *4)

R

real

(Fortran type REAL *8)

C

complex

(Fortran type COMPLEX *16)

L

logical

(Fortran type LOGICAL)

K8, K16, K24, K32, or K80

characters

(Fortran type CHARACTER)

  • length: defines the length of the associated value segment (the number of scalars).

1.2.2. The collection#

Collection:

A collection is a data structure that makes it possible to share certain attributes of all the objects that make it up. It allows both access by name or number to collection objects and to manage objects of variable length.

Two types of collection are possible:

  • one with a segment of values per collection object: the dispersed collection,

  • the other has only one value segment for all objects in the collection: the contiguous collection.

Note:

A collection cannot be built retrospectively by grouping simple objects together.

A collection is created using the collection descriptor and one or more value segments.

Collection descriptor:

The collection descriptor is the set of information that defines the collection: the name and the attributes.

The attributes common to all the objects in the collection include: the genre, the type, the length if it is constant, etc…

Attributes that are specific to each collection object are managed separately. From the user’s point of view, a collection object has all the attributes of a simple object, it can be used in the same way.

Collection = Name + Attributes + 1 or more Value Segments

The name of a collection is constituted in the same way as that of a simple object.

The specific attributes of a collection are:

  • access:

which defines the mode of access to the objects in the collection: access can be carried out by name (the collection is then said to be named), by number (the collection is said to be numbered),

  • storage:

which describes the organization in memory of the values associated with the objects in the collection, the values can be contiguous (a single segment of values), or scattered (one segment of values per collection object). All the objects in a contiguous collection follow each other in the associated value segment,

  • the length:

it is constant if all the objects in the collection share the same length, it is variable if the objects are of different lengths,

  • the maximum number of objects in the collection.

Two collection attributes can be shared across multiple collections. In the case of a collection of objects of variable length, the length vector can be reused for another collection containing the same number of objects. Likewise, two collections can share the names of the collectibles. These objects are called external pointers.

Collection types:

The numbered collection is composed of objects whose access key is an integer varying from 1 to the maximum number of objects in the collection. In a numbered collection all the objects pre-exist.

The named collection uses a specific simple object such as a name directory that contains the list of object names in the collection managed by associative addressing. This directory of names can be defined by the user or created automatically. The names of the objects are inserted in the chronological order in which the names were created. You can access a collection object named by its name and/or by the order number of insertion.