commit:2020:03_19
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
commit:2020:03_19 [2020/03/19 16:07] – [Tests:] laruelle | commit:2020:03_19 [2020/03/20 10:32] (current) – removed laruelle | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Commit 2020-03-19 ====== | ||
- | ===== Commit Description ===== | ||
- | |||
- | In this commit I implemented a new type of Interaction " | ||
- | |||
- | ===== Initial Goal ===== | ||
- | |||
- | In the goal to eventually create " | ||
- | {{: | ||
- | |||
- | One possible way to allow hanging nodes is by adding a Lagrange multiplier constraint to impose the relation between the DoFs of node " | ||
- | |||
- | ===== Previous implementations ===== | ||
- | A similar constraint was already present in the code in " | ||
- | |||
- | {{: | ||
- | |||
- | 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, | ||
- | |||
- | {{: | ||
- | |||
- | {{: | ||
- | |||
- | **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 (" | ||
- | |||
- | {{: | ||
- | |||
- | {{: | ||
- | |||
- | **EqualityDofConstraintLagMult2DElement** | ||
- | |||
- | This element is the recreation 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 " | ||
- | |||
- | Remark: | ||
- | The topology link between curves and sides is wrong for all ContainerLines. I created a function " | ||
- | |||
- | ===== Tests ===== | ||
- | |||
- | I Added a series of tests in apps.lagMult to test the new elements. | ||
- | |||
- | **DraggingPointOnCurve and PointOnCurve** | ||
- | |||
- | First, I reproduced a test that was using the old implementation " | ||
- | |||
- | {{: | ||
- | |||
- | **Simple Shear** | ||
- | |||
- | Secondly I created a new test " | ||
- | |||
- | {{: | ||
- | |||
- | On those two cases I created both a " | ||
- | |||
- | **Case 1**: | ||
- | |||
- | {{: | ||
- | |||
- | **Case 2**: | ||
- | |||
- | {{: | ||
- | |||
- | One can see that as expected, the two elements give the same result when the displacement of the middle node is fully imposed (case 2). However, in case 1 where the displacement of the middle node is not imposed only the " | ||
- | |||
- | **EqualityDofConstraint** | ||
- | |||
- | I recreated the apps.qs.equalityDofConstraint.py test using " | ||
- | |||
- | {{: | ||
- | |||
- | {{: | ||
- | |||
- | One can see that the results using equalityDofConstraint or the Lagrange Multipliers are exactly the same. There is however a slight increase in CPU (+12% Real CPU) and memory (+7%). Moreover the DSSolver was used in both cases because the Default Skyline had troubles with the added 0 pivot resulting from the addition of the Lagrange Multiplier. No other study of the influence of the solver has been done so far but this issue needs to be addressed in the future. | ||
- | |||
- | Another test using equalityDofConstraint was recreated using Lagrange Multipliers, | ||
- | |||
- | {{: | ||
- | |||
- | Finally, a last test was added " | ||
- | |||
- | The test contains both the classical fixation(right) and the fixation using equalityDofConstraintLagMult2DElement (Left). The results are the same as expected. | ||
- | |||
- | {{: | ||
- | |||
- | |||
- | |||
- | ===== Added [a] / deleted [d] / modified [m] / renamed [r] files ====== | ||
- | ====Code: | ||
- | < | ||
- | |||
- | </ | ||
- | |||
- | ====Tests: | ||
- | < | ||
- | [a] apps/ | ||
- | [a] apps/ | ||
- | [a] apps/ | ||
- | [a] apps/ | ||
- | [a] apps/ | ||
- | [a] apps/ | ||
- | [a] apps/ | ||
- | [a] apps/ | ||
- | [a] apps/ | ||
- | [a] apps/ | ||
- | [a] apps/ | ||
- | [a] apps/ | ||
- | [a] apps/ | ||
- | |||
- | </ | ||
- | |||
- | --- // |