Metafor

ULiege - Aerospace & Mechanical Engineering

User Tools

Site Tools


commit:2020:03_19

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
commit:2020:03_19 [2020/03/19 15:54] laruellecommit:2020:03_19 [2020/03/20 10:13] laruelle
Line 3: Line 3:
 ===== Commit Description ===== ===== 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. +In this commit I implemented a new type of Interaction "LagMultInteraction" which generates new "LagMultElements". 3 types of LagMultElements are now implemented, "DraggingPointOnCurveLagMult2DElement", "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 Point. 
  
 ===== Initial Goal ===== ===== Initial Goal =====
Line 27: Line 27:
 {{:commit:2020:03_19:eq2.png?600|}} {{:commit:2020:03_19:eq2.png?600|}}
  
-{{:commit:2020:03_19:matr2.png?600|}}+{{:commit:2020:03_19:matr2_corrected.png?600|}}
  
 **PointOnCurveLagMult2DElement** **PointOnCurveLagMult2DElement**
Line 43: Line 43:
 {{:commit:2020:03_19:eq3.png?500|}} {{:commit:2020:03_19:eq3.png?500|}}
  
-{{:commit:2020:03_19:matr3.png?500|}}+{{:commit:2020:03_19:matr3_corrected.png?500|}}
  
 ===== ConstainerLine Object===== ===== ConstainerLine Object=====
Line 57: Line 57:
 **DraggingPointOnCurve and PointOnCurve** **DraggingPointOnCurve and PointOnCurve**
  
-First, I reproduced a test that was using the old implementation "LagrangeMultiplierEdge2DElement". The test was named "LagrangeMultiplier2D", I renamed this test "DraggingNode" for more clarity. The new implementation and the old implementation give the same results. Moreover, "DraggingPointOnCurve" and "PointOnCurve" give the same results for this test. The reason is that because the displacement of the middle node is imposed we have dx_h=0.0 in both cases and both formulations will give the same result. This can be seen in the figures hereafter where "DraggingPointOnCurve" is used on the left and "PointOnCuve" is used on the right.+First, I reproduced a test that was using the old implementation "LagrangeMultiplierEdge2DElement". The test was named "LagrangeMultiplier2D", I renamed this test "DraggingNode" for more clarity. The new implementation and the old implementation give the same results. Moreover, "DraggingPointOnCurve" and "PointOnCurve" give the same results for this test. The reason is that because the displacement of the middle node is imposed we have dx_h=0.0 in both cases and both formulations will give the same result. This can be seen in the figures hereafter where "DraggingPointOnCurve" is used on the left and "PointOnCurve" is used on the right.
  
 {{:commit:2020:03_19:draggingnode.png?600|}} {{:commit:2020:03_19:draggingnode.png?600|}}
Line 95: Line 95:
 Finally, a last test was added "equalityDofConstraintMono", in this test a mono element in tension was modeled, except that instead of fixing the bottom curve along Y and the right curve along X I fixed the bottom-right point along X and Y and used an equalityDofConstraintLagMultElement on both curves to "fix" the remaining points. Finally, a last test was added "equalityDofConstraintMono", in this test a mono element in tension was modeled, except that instead of fixing the bottom curve along Y and the right curve along X I fixed the bottom-right point along X and Y and used an equalityDofConstraintLagMultElement on both curves to "fix" the remaining points.
  
-The test contains both the classical fixation(right) and the fixation using equalityDofConstraintLagMult2DElement (Left).+The test contains both the classical fixation(right) and the fixation using equalityDofConstraintLagMult2DElement (Left). The results are the same as expected.
  
 {{:commit:2020:03_19:mono.png?600|}} {{:commit:2020:03_19:mono.png?600|}}
  
 +===== Future dev =====
  
 +This commit is a preliminary to the implementation of many more LagMultInteractions. The extension to 3D elements will come soon (already implemented but not tested), then will come the extension to Thermal. A lot of other relations between DoFs could be created using LagMultElements and more types of elements will be added in the future. A study of the influence of the lagrange multiplier DoFs on the residual still needs to be done as well as looking at the behavior in dynamic schemes.
  
-===== Added [a] / deleted [d] / modified [m] / renamed [r] files ======+===== Added [a] / deleted [d] / renamed [r] files ======
 ====Code:==== ====Code:====
 <code> <code>
 +[a] mtElements/lagMult 
 +[a] mtElements/lagMult/DraggingPointOnCurveLagMultElement.cpp 
 +[a] mtElements/lagMult/DraggingPointOnCurveLagMultElement.h 
 +[a] mtElements/lagMult/DraggingPointOnCurveLagMultElement.inl 
 +[a] mtElements/lagMult/DraggingPointOnCurveLagMultElShcuts.h 
 +[a] mtElements/lagMult/DraggingPointOnCurveLagMultElShcuts.inl 
 +[a] mtElements/lagMult/EqualityDofConstraintLagMultElement.cpp 
 +[a] mtElements/lagMult/EqualityDofConstraintLagMultElement.h 
 +[a] mtElements/lagMult/EqualityDofConstraintLagMultElement.inl 
 +[a] mtElements/lagMult/EqualityDofConstraintLagMultElShcuts.h 
 +[a] mtElements/lagMult/EqualityDofConstraintLagMultElShcuts.inl 
 +[a] mtElements/lagMult/PointOnCurveLagMultElement.cpp 
 +[a] mtElements/lagMult/PointOnCurveLagMultElement.h 
 +[a] mtElements/lagMult/PointOnCurveLagMultElement.inl 
 +[a] mtElements/lagMult/PointOnCurveLagMultElShcuts.h 
 +[a] mtElements/lagMult/PointOnCurveLagMultElShcuts.inl 
 +[a] mtElements/LagMultInteraction.cpp 
 +[a] mtElements/LagMultInteraction.h 
 +[a] mtGeo/mtGeoContainerLine.cpp 
 +[a] mtGeo/mtGeoContainerLine.h 
 +[a] mtGeo/mtGeoContainerLineBuilder.cpp 
 +[a] mtGeo/mtGeoContainerLineBuilder.h 
 +[a] mtGeo/mtGeoContainerLineMesher.cpp 
 +[a] mtGeo/mtGeoContainerLineMesher.h
 </code> </code>
  
 ====Tests:==== ====Tests:====
 <code> <code>
 +[a] apps/lagMult
 +[a] apps/lagMult/cont2
 +[a] apps/lagMult/cont2/cont2MfcXLagMult.py
 +[a] apps/lagMult/equalityDofConstraint
 +[a] apps/lagMult/equalityDofConstraint/equalityDofConstraintDSSolver.py
 +[a] apps/lagMult/equalityDofConstraint/equalityDofConstraintLagMult.py
 +[a] apps/lagMult/equalityDofConstraint/equalityDofContraintMono.py
 +[a] apps/lagMult/pointOnCurve
 +[a] apps/lagMult/pointOnCurve/DraggingNode.py
 +[a] apps/lagMult/pointOnCurve/DraggingNodeOld.py
 +[a] apps/lagMult/pointOnCurve/SimpleShearDraggingPointOnCurve.py
 +[a] apps/lagMult/pointOnCurve/SimpleShearPointOnCurve.py
 +[a] apps/lagMult/pointOnCurve/SimpleShearPointOnCurveMid075.py
 +
 </code> </code>
  
  --- //[[Cedric.Laruelle@ULiege.be|Cédric Laruelle]] 2020/03/19//  --- //[[Cedric.Laruelle@ULiege.be|Cédric Laruelle]] 2020/03/19//

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki