next up [*] [*]
Next: 4.4 SAVTYP Up: 4. Memory Manager Module Previous: 4.2 VRTMKR

   
4.3 ITHEAD

This array holds data relating to each of the records in the memory manager. The array has 8 entries for each record. These entries are accessed by the index variables IADRES, ISPACE, IVTYPE, IWIDTH, ISPREF, RSSAVE, DBSAVE and VRSAVE. The description of the values stored in each of these entries is as follows:

IADRES This entry is used for two purposes. The main one is to store the index, or starting position, of an allocated array. It should be noted that this value need not be equal to the pointer to the array. All pointers are currently quad word aligned for numeric data class variables. This means that the address returned by memory manager functions will not necessarily be equal to the IADRES entry. Its secondary purpose is to store a linked list of available records. If a record is freed and the space it represented has been fully reused or amalgamated into another record, the record is added to a linked list stored in this entry. The link list is order so that the lowest freed record number is first on the list and all others on the list are in increasing record number order.
ISPACE This entry holds the space associated with a record. This value is held for both a record attached to a currently allocated variable and a record representing a 'hole' in the relevant array. Because of the quad word alignment of addresses the space may be larger than the space into which variable values are placed.
IVTYPE This entry has two purposes. Its main use is in storing the data type of the variable associated with the record. Its secondary purpose is to store a linked list of records representing 'holes', also termed freed memory, in the large arrays. The entries in this linked list are minus the next record number in the list with a 0 value representing the end of the linked list. The first and last records in this linked list are stored in the NXTFVR and LSTFVR entries of VRTMKR.
ISPREF The length or spatial reference of the allocated memory. If the variable contains one or more values for each vertex, face or element then a relevant spatial reference can be used. The basic spatial reference variables are REFGPT, REFFAC and REFELE. These variables indicate that space should be allocated for each vertex, face or element owned by the current processor. For a scalar run this is equivalent to all vertices, face or elements in the solution domain. For variables not related to vertices, faces or elements the spatial reference should be set to the length of the variable. This can be the total size required or the size of a single dimension. If it is set to a single dimension then the width will need to be set so that width*length = size required to store variable.
IWIDTH The variable width. This can be set to SCALAR, VECTOR or TENSOR or can be set to actual width if the variable width.
RSSAVE Linked list of variables to be written to the restart file using the chain write method. Any record whose variable is not to be written will contain a zero value. The entry for records in the linked list is the number of the next record in the list or the value of ENDPTR for the last record in the list.
DBSAVE Linked list of variables to be written to the restart file not using the chain write method. Any record whose variable is not to be written will contain a zero value. The entry for records in the linked list is the number of the next record in the list or the value of ENDPTR for the last record in the list.
VRSAVE Linked list(s) of variables to be written to the result file(s). There are three link lists stored in this entry. There is a link list for scalar, vector and tensor variables. Any record whose variable is not to be written will contain a zero value. The entry for records in the linked list is the number of the next record in the list or the value of ENDPTR for the last record in the list.


next up [*] [*]
Next: 4.4 SAVTYP Up: 4. Memory Manager Module Previous: 4.2 VRTMKR

2002-12-09