Metafor

ULiege - Aerospace & Mechanical Engineering

User Tools

Site Tools


commit:2018:09_20

Commit 2018-09-20

Description

To try to model an additive manufacturing process I first tried to use Metafor as is. The activation of the elements over time can be done by using the StageManager and by activating/deactivating interactions at predetermined times. Like this, I managed to reproduce with accuracy the results of a test case from the literature. This method is however very tedious to use and requires to create an absurd number of interactions. It is also not CPU efficient. I had to implement the Verbose option for StageManager because of the very high number of text at every activation/deactivation of elements, which in my case took more time than the actual test cases.

One can realize that the previous method of activating/deactivating elements is not efficient enough and a new method has to be implemented. I thus implemented a new class called AdditiveManager that will manage the activation of elements in a more efficient way.

Verbose for Stage Manager

I added a verbose option for “StageManager” which allows not to print all of the info related to the activation/deactivation of stages.(I had to pass it as an argument to the setStage function, hence the number of modified files. To use it:

stageManager.setVerbose(False) 

AdditiveManager/PointAdditiveManager

I created a new class to manage the activation of elements. For now it only activates elements of a FieldApplicator (to set with “setTarget(…)”) whenever a point (to set with “setActivator(…)”) passes through it. To use:

  ptAM=PointAdditiveManager()
  ptAM.setActivator(pointset(...))
  ptAM.setTarget(...) 
  metafor.setAdditiveManager(ptAM)    

For now it only works in 3D.

Tests:

AM tests using StageManager:

I added additive manufacturing tests. The first tests are done using stages to Activate/Deactivate interactions. It is very tedious and long, both for the writing of the test case and CPU wise.

“withStageManager/tests/Chiumenti1.py” is the reproduction of a test case from the literature (Numerical simulation and experimental calibration of Additive Manufacturing by blown powder technology. Part I: thermal analysis, Rapid Prototyping Journal 23 (2017) 448–463.).

The results were presented in a poster “https://orbi.uliege.be/handle/2268/227324”.

“withStageManager/battery/Chiumenti1.py” is the battery version of this test (very coarse mesh, only 3 layers and 3 lines to reduce the CPU under 5 mins).

“withStageManager/battery/activationWithStages.py” is a test with the activation of 1 simple line of elements (and no boundary conditions), it is used to compare with “withAdditiveManager/battery/activationWithAdditiveManager.py”.

AM tests using AdditiveManager:

“withAdditiveManager/battery/activationWithAdditiveManager.py” is a test with the activation of 1 simple line of elements (and no boundary conditions) using AdditiveManager, it is used to compare with “withStageManager/battery/activationWithStages.py”. They correctly give the same results as shown here under (temperature at a point over time). Even for such a small test case, there is a 30% decrease of the computation time(30→20s).

“withAdditiveManager/battery/testAdditiveManagerSin.py” is a test using AdditiveManager where the element are activated according to a point following a sine function.

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

Code:

[a] mtFEM/AdditiveManager.h
[a] mtFEM/AdditiveManager.cpp
[a] mtElements/PointAdditiveManager.h
[a] mtElements/PointAdditiveManager.cpp
[m] mtALE/AleMethod.cpp
[m] mtALE/AleMethod.h
[m] mtALE/CurveReZoner.cpp
[m] mtALE/CurveReZoner.h
[m] mtALE/ReZoningStep.cpp
[m] mtALE/ReZoningStep.h
[m] mtContact/_src/mtContact.i
[m] mtElements/_src/mtElements.i
[m] mtElements/CMakeLists.txt
[m] mtFEM/_src/mtFEM.i
[m] mtFEM/AleMethodBase.h
[m] mtFEM/algos/IterationManager.h
[m] mtFEM/algos/TimeIntegration.cpp
[m] mtFEM/CMakeLists.txt
[m] mtFEM/Metafor.cpp
[m] mtFEM/Metafor.h
[m] mtFEM/StageManager.cpp
[m] mtFEM/StageManager.h
[m] mtFEMBase/Activable.cpp
[m] mtFEMBase/Activable.h
[m] mtFEMBase/DofFlagCmdSet.cpp
[m] mtFEMBase/DofFlagCmdSet.h
[m] mtFEMBase/Interaction.cpp
[m] mtFEMBase/Interaction.h
[m] mtFEMBase/InteractionSet.cpp
[m] mtFEMBase/InteractionSet.h
[m] mtFEMBase/LoadingSetBase.cpp
[m] mtFEMBase/LoadingSetBase.h
[m] mtFEMBase/StageDepValue.h
[m] mtFEMBase/StageDepValue.inl
[m] mtMain/battery.py
[m] mtViz/VTKManager.h
[m] mtWear/_src/mtWear.i
[m] mtXFEM/_src/mtXFEM.i

Tests:

[a] oo_meta/additiveM/
[a] additiveM/withAdditiveManager/
[a] additiveM/withAdditiveManager/battery/activationWithAdditiveManager.py
[a] additiveM/withAdditiveManager/battery/testAdditiveManagerSin.py
[a] additiveM/withAdditiveManager/tests/activationWithAdditiveManager.py
[a] additiveM/withAdditiveManager/tests/testAdditiveManagerDiag.py
[a] additiveM/withAdditiveManager/tests/testAdditiveManagerSin.py
[a] additiveM/withStageManager/
[a] additiveM/withStageManager/battery/activationWithStages.py
[a] additiveM/withStageManager/battery/Chiumenti1.py
[a] additiveM/withStageManager/tests/activationWithStages.py
[a] additiveM/withStageManager/tests/Chiumenti1.py
[a] additiveM/withStageManager/tests/Chiumenti1Coarse.py
[a] additiveM/withStageManager/tests/Chiumenti1MWE.py
[a] additiveM/withStageManager/tools/activationWithStages.py
[a] additiveM/withStageManager/tools/chiumenti.py
[a] additiveM/withStageManager/tools/Matlab
[a] additiveM/withStageManager/tools/Matlab/Data

Cédric Laruelle 2018/09/18

commit/2018/09_20.txt · Last modified: 2018/09/20 17:15 by laruelle