Metafor

ULiege - Aerospace & Mechanical Engineering

User Tools

Site Tools


commit:2020:03_19

This is an old revision of the document!


Commit 2020-03-19

Commit Description

In this commit I implemented a new type of Interaction “LagMultInteraction” which generates new “LagMultElements”. 3 types of LagMultElements are now implemented, “DragginPointOnCurveLagMult2DElement”, “PointOnCurveLagMult2DElement”, “equalityDofConstraintLagMult2DElement”. The three types of elements are described here after. The implementation is for now only 2D and pure mechanical but the extension to 3D and thermal will come next. The PointOnCurve elements required a new type of element container, because they need to be linked to a Point AND a Line, I thus also created a “ContainerLine” Object which behaves as a line but also contains a pointer to an extra pointer to a Point.

Initial Goal

In the goal to eventually create “non-conformal” elements in Metafor, the first step is to allow “hanging nodes”.

One possible way to allow hanging nodes is by adding a Lagrange multiplier constraint to impose the relation between the DoFs of node “h” and nodes 1 and 2 on the extremities.

Previous implementations

A similar constraint was already present in the code in “LagrangeMultiplierEdge2DElement”. However this constraint imposes the displacements of nodes 1 and 2 with respect to node h and not the reciprocal, the displacement of node h must thus be fully imposed by the user. The goal of that constraint was to allow 1 point to “drag” a curve according to its displacement:

This is not exactly what is needed for the hanging nodes because what we want is a relation between the 3 nodes without node h having to be imposed a priori but it can be used as base.

LagMult Elements

DraggingPointOnCurveLagMult2DElement

This element is the recreation of the previous implementation, we thus have a link between the 3 nodes but the displacement of the “hanging node” is fully imposed by the user and it simply “drags” the other 2 points. The Tangent Stiffness Matrix and External Force Vector to implement in the code is given here after, with lambda the lagrange multiplier which is a newly added degree of freedom, x being the current (“ACTUAL”) displacements and dx being the correction.

PointOnCurveLagMult2DElement

This element is the one actually implementing the goal, it imposes the relation between the 3 nodes without assuming that the displacement of node h is imposed by the user. The Tangent Stiffness Matrix and External Force Vector to implement in the code is given here after, with lambda the lagrange multiplier which is a newly added degree of freedom, x being the current (“ACTUAL”) displacements and dx being the correction.

EqualityDofConstraintLagMult2DElement

This element is the recration of equalityDofConstraints using LagMultElements. Indeed, imposing two degrees of freedom being equal is trivial with Lagrange Multipliers. The Tangent Stiffness Matrix and External Force Vector to implement are:

ConstainerLine Object

As stated before, I added a new type of geometry Object “ContainerLine”. This Object derives from line and its purpose is to serve as an “element Container” for “PointOnCurve” elements.

Tests

I Added a series of tests in apps.lagMult to test the new elements. PointOnCurve

EqualityDofConstraint

Added [a] / deleted [d] / modified [m] / renamed [r] files

Code:



Tests:



Cédric Laruelle 2020/03/19

commit/2020/03_19.1584622732.txt.gz · Last modified: 2020/03/19 13:58 by laruelle

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki