This is an old revision of the document!
In this commit, a new contact traction element was created to set the traction force to zero at the nodes that are in contact within a specified contact interaction. This feature is required in the coupling procedure with Metalub (see commit 3186 of Metafor and commit 1456 of Metalub for more details).
ContactTraction3DElement is created like a
Traction3DElement. The only additional property that has to be set is
NBR_CONTACT_INTERACTION, which is the number of the contact interaction. For instance,
prp = ElementProperties(ContactTraction2DElement) prp.put(PRESSURE, -p['pMax']) prp.put(NBR_CONTACT_INTERACTION, 3)
Hence, if nodes in this
ContactTraction2DElement are slave nodes in contact (in the previous mechanical iteration) in the contact interaction 3, the traction force applied to these nodes is set to zero.
Instead of implementing the new feature directly in the
TractionElement of the
mtElement package, a new template class
ContactTractionElement was created in the
mtContact (elements) package. It had to be moved to the
mtContact package (instead of the
mtElement package) in order to have access to the contact features via
include “ContactInteraction.h”. Moreover, the
ContactTractionElement derives of
TractionElement to minimize duplicate code. In a similar way to the
TractionElement, 2D and 3D elements were created:
ContactTraction3DElement. This required to export all methods of
ELEMENT_CPP_MACRO2 extension), which only had to be added in
Traction3DElement since it was already done for
Traction2DElement, certainly to derive it in
Some minor modifications:
NBR_CONTACT_INTERACTIONwas added in
mtElements.h/cppas an integer property.
ContactTraction3DElementto the functions
LoadingInteraction.cppin order to be able to add them to the
LoadInteractionin the Python data set.
getSlaveNode(), previously private method in
ContactElement.h/cpp, becomes protected to use it in
isInContactPrev()was added in
ContactElement.h/cppto get the contact status at the end of the previous time iteration. Using this contact status has the advantage that the contact traction activation/deactivation does not happen during the same time step, i.e. during the mechanical iteration. It might be possible to use the current contact status but it might introduce some undesired oscillations.