On the topic of memory (general)

Several reminders on the memory:

  • the central memory (also named primary storage) permits to temporarily memorize the data during the execution of the programs. The central memory corresponds to what is named RAM
  • the mass memory (also named secondary storage) permits to store data on the long term, including during the computer turn off period. The mass memory corresponds to the magnetic storage devices, such as the hard disk, to the optic storage devices, corresponding for example to the CD-ROMs or to the DVD-ROM, as well as to the dead memories.

The virtual memory corresponds to the "reunion of the physical memory (RAM) and the pagination files (SWAP, pagefile.sys)".

About memory (Flux)

From a point of view of computer science, Flux has:

  • two major components:
    • one ”computation” component (invisible part), in Fortran language
    • one “GUI” component (visible part), in Java language
  • one connection between these two components, in Java.

A memory space must therefore be allocated statically at the start-up of Flux or dynamically during the execution of Flux, for the operation of each of the components, and the connection between the components.

The distribution is presented in the figure below and explained in the following sections.

Note: An addional memory is used for some Flux external components.

Computation memory

The computation memory comprises:
  • the numerical memory:

    It is the memory employed for the various modeling actions. 3D meshing and solving process (in 2D and in 3D) are the processes put a large demand on the memory size.

    The memory size to be allocated is a function of the application type (real/complex) and of the solving process matrix size.

  • the character memory:

    It is the memory used for storage of entity names (parameters/transformations/regions/…) and of project names present in the directory.

As regards the computation memory management (numerical memory + character memory), there are 2 management modes:
  • either static

    This memory management mode is the default mode: User is checked.

    Flux uses an internal garbage collector of the memory. This tool allocates a global memory space at the start-up of Flux, consisting of two Fortran tables, one for the numerical memory and the other for the character memory. The size of each of these tables is controlled by a Fortran parameter written in the main program.

    Note: * Definition:

    Static allocation: the size of the memory reserved for starting Flux is set by the user (it can therefore be modified).

  • or dynamic (new functioning possible from Flux 2020)

    To activate this memory management mode, Dynamic must be checked.

    Flux itself dynamically manages during its execution, the memory space it needs to run.

GUI memory:

Until now, the GUI memory is only managed statically (User).

GUI memory is the memory used for everything concerning the graphical user interface (graphic display, etc.).

In the graphic window, the flag located bottom left gives an image of the utilization of the graphic memory. When it is red, you can double-click on it to force the process to release the memory.

System memory

The system memory is only visible in the User management mode to show that additional memory space is used, in addition to the numerical, character and GUI memories.

The system memory corresponds to the memory allocated for the good operation of the system ; it comprises :

  • the « executable » memory : memory space for the program Flux (the executable).
  • the « cache » memory : memory space for the transfers of data between the computation component (Fortran) and the GUI component (Java)

    This memory is difficult to quantify, it can generate errors during the recovery of data.

Additional memory

Some Flux components or functionalities consume additional memory:
  • During an import and in the modeler: the ACIS library
  • During the mesh generation: MeshGems or ASML (if used)
  • During the solving process: MUMPS if used
Note: In case of static memory, do not allocate all available memory to Flux, so that those components can be executed.