.. _interface:

#########
Interface
#########

LAMÉ is designed to have a simple interface that allows the easy implementation of a wide range of constitutive models. This interface is between the application code (sometimes referred to as the "host code") and the constitutive model.

The interface has two main aspects: the data that is passed between the application code and the model, and the functions that pass this data. Given that the interface consists of data and functions, the most reasonable way to set up this interface is through a class.

The class that defines this interface is the ``Material`` class, which is declared in ``include/interface/Material.h``.

There are two types of data that are passed between the application code and the model. The first is the material property information. This is done using an object in the ``MatProps`` class. This is used when constructing a material model at the beginning of an analysis.

The second type of data that is passed between the application code and the material model is the data that the material model uses during an analysis. This data is in the ``MatParams`` struct. This data consists of the stress, the kinematics, the time and time step, etc.

More detail can be found in [:footcite:`mat:ref:wmsch0`].

.. raw::
   html

   <hr>

.. footbibliography::
