Metafor

ULiege - Aerospace & Mechanical Engineering

User Tools

Site Tools


commit:futur:db

This is an old revision of the document!


Commit 2018-07-12

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).

How to use the new feature

A ContactTraction2DElement or ContactTraction3DElement is created like a Traction2DElement or 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.

File structure

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: ContactTraction2DElement and ContactTraction3DElement. This required to export all methods of Traction2DElement and Traction3DElement via MTELEMENTS_API (+ ELEMENT_CPP_MACRO2 extension), which only had to be added in Traction3DElement since it was already done for Traction2DElement, certainly to derive it in mtXFEM.

Some minor modifications:

  • The new property NBR_CONTACT_INTERACTION was added in mtElements.h/cpp as a integer property.
  • It was necessary to add ContactTraction2DElement and ContactTraction3DElement to the functions is2D and is3D in LoadingInteraction.cpp.
  • Untabify in ContactElement.h/cpp.
  • getSlaveNode(), previously private method in ContactElement.h/cpp, becomes protected to use it in ContactTractionElement.inl.
  • Adding the method isInContactPrev() in ContactElement.h/cpp to get the contact status of the previous mechanical iteration.

Implementation

Test cases

commit/futur/db.1531384866.txt.gz · Last modified: 2018/07/12 10:41 by boemer