Implement a volumic heat source:
Example of bad results previously obtained in the battery with the Tm2FluxElements(right) compared to TmFluxElements(left):
After the fix the battery test gives good results with Tm2:
I then wanted to compare the use of TmFlux and Tm2Flux elements in an AM simulation, for now I only compared in my battery test which has a very coarse mesh and we can see that the use of tm2Flux elements tend to reduce the amplitude of the peaks in temperature:
However, the computation time has risen from 51s to 122s for this simple case.
Here are some comparison results obtained with a surfacic heat flux(blue) compared to a volumic heat flux(red) on a simple battery test. One can see that the difference is very small here, probably because the volume is here fixed as 1 element only so the load is actually very similar to the surfacic flux. Here 1 layer = 1 element = ~5% of the base plate thickness:
If I increase the size of the layers added the difference becomes bigger so I can imagine that in cases where the heat flux must be applied on larger volumes (big laser penetration) the use of volumic heat flux will be required, but if the laser penetration is low than it gives the same results as with a corresponding surface heat flux. Here 1 layer = 1 element = ~50% of the base plate thickness:
I added battery tests in monosThermoMeca and monosThermoMeca2 to test the volumic flux both for tm and tm2: volFlux2dAxi/volFlux2dEpe/volFlux3d.
I added battery tests for AM using a mix of Tm/Tm2, Flux/VolFlux, both in 3D pure thermal (Chiumenti), 3D thermomechanical (Chiumenti2) and 2D (Hashemi).
[a] mtElements/boundaries/Tm2VolFlux2DElement.cpp [a] mtElements/boundaries/Tm2VolFlux2DElement.h [a] mtElements/boundaries/Tm2VolFlux3DElement.cpp [a] mtElements/boundaries/Tm2VolFlux3DElement.h [a] mtElements/boundaries/TmVolFlux2DElement.cpp [a] mtElements/boundaries/TmVolFlux2DElement.h [a] mtElements/boundaries/TmVolFlux3DElement.cpp [a] mtElements/boundaries/TmVolFlux3DElement.h [m] mtElements/boundaries/Tm2ConvectionElement.inl [m] mtElements/boundaries/Tm2Flux2DElement.cpp [m] mtElements/boundaries/Tm2Flux3DElement.cpp [m] mtElements/boundaries/Tm2FluxElement.h [m] mtElements/boundaries/Tm2FluxElement.inl [m] mtElements/boundaries/TmFlux2DElement.cpp [m] mtElements/boundaries/TmFlux3DElement.cpp [m] mtElements/boundaries/TmFluxElement.h [m] mtElements/boundaries/TmFluxElement.inl [m] mtElements/LoadingInteraction.cpp [m] mtElements/LoadingInteraction.h [m] mtFEMBase/Interaction.cpp [m] mtFEMBase/Interaction.h [m] mtShapeFunctions/SfIntegrationPointTemplate.cpp
[a] apps/monosThermoMeca2/volFlux2dAxi.py [a] apps/monosThermoMeca2/volFlux2dEpe.py [a] apps/monosThermoMeca2/volFlux3d.py [a] apps/monosThermoMeca/volFlux2dAxi.py [a] apps/monosThermoMeca/volFlux2dEpe.py [a] apps/monosThermoMeca/volFlux3d.py [a] additiveM/battery/withAM/Chiumenti2Lobatto.py [a] additiveM/battery/withAM/Chiumenti2Tm2.py [a] additiveM/battery/withAM/Chiumenti2VolFlux.py [a] additiveM/battery/withAM/Chiumenti2VolFluxTm2.py [a] additiveM/battery/withAM/ChiumentiTm2.py [a] additiveM/battery/withAM/ChiumentiVolFlux.py [a] additiveM/battery/withAM/ChiumentiVolFluxLobatto.py [a] additiveM/battery/withAM/ChiumentiVolFluxTm2.py [a] additiveM/battery/withAM/HashemiTm2.py [a] additiveM/battery/withAM/HashemiVolFlux.py [a] additiveM/battery/withAM/HashemiVolFluxTm2.py [r] additiveM/battery/withAM/Chiumenti.py (previously "ChiumentiMwe") [r] additiveM/battery/withAM/Chiumenti2.py (previously "TmChiumentiMwe") [r] additiveM/battery/withAM/ChiumentiLobatto.py (previously "ChiumentiMweLobatto") [r] additiveM/battery/withAM/Hashemi.py (previously "HashemiMwe")
— Cédric Laruelle 2019/08/21