One of the most important goals, which have been formulated, is extensibility. In the case of extension of the material library, the analyst is facing a key problem. Every material model must store its unique history parameters for every related integration point. The amount, type, and meaning of these history variables vary for each material model. Therefore, it is not possible to efficiently match all needs and to reflect them in the integration point data structure. The suggested remedy is the following:
The Integration point class is equipped with the possibility to have associated a Material status class. When a new material model is implemented, the analyst has also to declare and implement a related material status derived from the base Material status class to this material model. This status contains all necessary history variables and data access and modification services. The Integration point provides services for inserting and accessing its related status. For every Integration point, the corresponding material creates unique copy of its related material status and associates it with that integration point. Because the Integration point is a compulsory parameter of all messages sent to any material model, the particular material model can access its related material status from the given Integration point, and therefore can access its history variables.
In Fig. 4, the material - element frame is depicted in more detail, although it is still simplified. A simple cross section model class hierarchy is shown there. There are two derived classes from the parent Cross Section class: Simple cross section class representing an integral cross section model and Layered cross section model class, representing a layered cross section model implementation. At the bottom, the hierarchies of the material model and the associated material status representations are indicated. The program flow for an element, requesting the computation of its real nodal forces is also indicated in Fig. 4. This is generally done by integrating real stresses at its integration points. For each Integration point it asks the Cross section model to compute real stresses at the given integration point. In this example, the Layered cross section uses the master-slave integration point principle. Each element integration point, here called master, contains its slaves, each representing one layer. These slave integration points are introduced by the cross section model, and are hidden to the element. For a given master integration point, the cross section model performs integration over cross section volume using slaves. Therefore each slave integration point, which is requested by the master, uses material model class services to compute real stresses for each corresponding layer, passing the slave integration point as a parameter. Then for each slave, the material model asks the given integration point for its associated status. Having obtained reference to it, the material model can access all its history variables through status services, and computes results.