Material -- Element Frame

As already mentioned, in Fig. 2 the material-element frame is schematically shown. In this frame the following base classes & objects are introduced:

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 reflect them in integration point data structure. The suggested remedy is following:

Integration point class is equipped with the possibility to have associated Material status class. When a new material model is implemented, the analyst has also to declare and implement a related material status derived from base Material status class to this material model. This status contains all necessary history variables and data access and modification services. Integration point provides services for inserting and accessing its related status. For every Integration point, corresponding material creates unique copy of its related material status and associates it with that integration point. Because Integration point is a compulsory parameter of all messages sent to Material model objects, a particular material model can access its related Material status from given Integration point, and therefore can access its history variables.

In the Fig. 5, the material - element frame is depicted in more detail, although it is still simplified. There is indicated simple cross section model class hierarchy. 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 are indicated the hierarchies of material model and associated material status representations. The program flow for an element, requesting the computation of its real nodal forces is also indicated in Fig. 5. This is generally done by integrating real stresses at its integration points. For each Integration point it asks Cross section model to compute real stresses at given integration point. In this example, 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.

As an example, Fig. 6 shows specific details concerning implementation of a microplane model. A similar material interface to the previous one can be seen. Again, there are element, material, and integration point classes. The general Microplane material class, which is derived from Material model class, is the base class for all microplane models. It defines services required from all microplane models and implements general common services (for example stress homogenization). Other material model dependent services are left to be implemented by derived classes (for example service for computing real microplane stresses). For convenience, a Microplane class has been added. This class is an abstraction for microplane. Since microplane can be generally considered as an integration point, it was natural to derive this class from the Integration point class. A few services have been added, like returning microplane normal or its projection tensors. Further, the implementation of the microplane model -- MicroplaneModel1, which implements services declared by the base Microplane Model class, is introduced. Together with this class the related MicroplaneModel1 status is defined to store all necessary history variables. Two important notes should be made here:

-
Integration point on the macro level is represented by the Integration point class. Micro level is represented by Microplane objects, introduced by microplane model for each master integration point.
-
Since Microplane, is derived from the Integration point class, it inherits its capability to contain reference to related material status.

The sketched program flow describes the situation, when real stresses are requested from the material model. When the corresponding service of general Microplane model class for stress homogenization is invoked, again with master integration point as a parameter (remember, integration point is a compulsory parameter of all material model services). Homogenization results in integration over all microplanes, therefore the corresponding microplane is extracted from the master integration point, and GiveRealMicroplaneStress service is invoked, with the corresponding Microplane instance as a parameter. MicroplaneModel1 then extracts its associated status from microplane and computes results using its history variables from current microplane.

To summarize, the described program structure supports extension towards any material model with arbitrary history variables, and towards any cross section model, without modification of any part of the code.

Borek Patzak 2013-03-10