Table of Contents
Commit 2020-03-10
Description
Bug Fix in the additiveManager routine:
In pointAdditiveManager.cpp, some boundary conditions were not correctly deactivated even when they were not connected to active volume elements. I modified the code so that when the routine deactivates volume elements before the simulation it will automatically deactivate connected boundary conditions if they are not on the edge of the geometry. This only affects simulations where the boundary conditions were not explicitly given to the routine for deactivation. (i.e. not given via pointAdditiveManager.addBoundaryCondition(BC)).
In short, the boundary conditions will now correctly be deactivated at the beginning of a simulation if :
1) They are given to pointAdditiveManager via pointAdditiveManager.addBoundaryCondition(BC)
2) They are not on the edge of the geometry in the “to be activated” area.
Corrected test parameters
Correction of a small error in additiveM\withAM\tools\ChiumentiAM.py where an extra 0.0875s per layer was spend between layers.
Creation of a lagamine geometry importer (only for BLZ2T lagamine elements with CONRA lagamine BCs)
I created a Lagamine geometry importer, although it only works for 2 specific types of Lagamine elements at the moment. The importer is situated in toolbox\lag2py.py . The importer reads the “testName.lag” source file and translates the geometry in a metafor input file “testName_lag.py”. More specifically:
- The geometry (points/lines/quads) is created. The point numbering is the same as in the lagamine file. The initial temperature is also set at each point.
- The points are all sorted into metafor groups, 1 group per lagamine material law respecting the lagamine material law number. This allows to push this group in a FieldApplicator to create all VolumeElements.
- For each of the CONRA boundary conditions, a list of metafor groups is created, 1 group = 2 points connecting a CONRA element. This allows to push those groups in a LoadingInteraction to create boundary condition elements.
For an example of use, check additiveM\withAm\tests\HashemiAndJardin\jardin.py
The rest of the test is then created by hand in the metafor input file, but this allows to use the same mesh in metafor and lagamine.
Reorganising the “battery” folder for additiveM tests and addition of new tests
Reorganising of tests in the battery, now they are divided in subfolders by category:
- SimpleActivation: Basic tests to check the activation method.
- Chiumenti: Minimum working example of the test by M.Chiumenti, this tests the activation on multiple layers with a moving heat flux in 3D. For pure thermal and thermomechanical.
- Jardin: Minimum working example of the test by Jardin, this tests the activation on multiple layers with a moving heat flux in 2D. It also uses the lagamine geometry importer.
- Lobatto: Tests the different ways to use Lobatto integration in an additive manufacturing context, used on the M.Chiumenti test. Thermal and thermomechanical.
- Tm1VsTm2: Tests the activation with Tm1 and Tm2 elements.
- VolFlux: Tests the volumic heat flux in an additive manufacturing context, used on the M.Chiumenti test. Thermal and thermomechanical.
TestsJardin
With those modifications in the code and the addition of the Lagamine importer I was able to reproduce the results from a 2D simulation from R.T. Jardin[1], the test is added to additiveM/battery/withAM/Jardin/jardin.py:
Similation without convection and without radiation boundary conditions:
Added [a] / deleted [d] / modified [m] / renamed [r] files
Code:
[m] mtElements/PointAdditiveManager.cpp [m] mtElements/PointAdditiveManager.h
Folders:
[a] additiveM/battery/withAM/Chiumenti/ [a] additiveM/battery/withAM/Jardin/ [a] additiveM/battery/withAM/Lobatto/ [a] additiveM/battery/withAM/SimpleActivation/ [a] additiveM/battery/withAM/Tm1VsTm2/ [a] additiveM/battery/withAM/VolFlux/ [a] additiveM/withAM/tools/lagDat/
Tests:
[a] additiveM/battery/withAM/Tm1VsTm2/doubleTm1SingleLineConstantDt.py [a] additiveM/battery/withAM/Tm1VsTm2/Tm1SingleLineConstantDt.py [a] additiveM/battery/withAM/Tm1VsTm2/Tm2SingleLineConstantDt.py [a] additiveM/battery/withAM/Jardin/jardin.py [a] additiveM/withAM/tests/HashemiAndJardin/jardinNoBc.py [a] additiveM/withAM/tests/HashemiAndJardin/jardinOnlyConv.py [a] additiveM/withAM/tests/HashemiAndJardin/jardinOnlyRad.py [a] additiveM/withAM/tools/jardin.py [a] additiveM/withAM/tools/lagDat/jardin.lag [a] toolbox/lag2py.py
— Cédric Laruelle 2020/03/10