====== Commit 2019-01-17 ======
===== Lobatto and Trapezoid integration=====
In the simulation of AM, the very high temperature gradient can often create overshots and undershots near the heat source. One way to avoid this in the literature is to use a Lobatto integration [1]. I wanted to try it but although the Lobatto and trapezoid integrations are implemented in metafor in the scope of data transfer between meshes, they were not interfaced with normal volume elements.
In this commit I interfaced the methods to the elements and I added the variable ''INTEGRATIONQUADRATURETYPE'' that can take the values ''GAUSSQUADRATURE'', ''LOBATTOQUADRATURE'' and ''TRAPEZOIDQUADRATURE'' to the volume element properties which allows the user to chose the integration type (GAUSSQUADRATURE being the default value):
prp1 = ElementProperties(Volume2DElement)
prp1.put(INTEGRATIONQUADRATURETYPE, LOBATTOQUADRATURE)
The variable ''QUADRATURETYPE'' still remains for the choice of the type of transfer for the transfer elements.[[doc:user:meshtransfer:datatransferbetweenmeshes|]]
[1] Michele Chiumenti, Miguel Cervera, Alessandro Salmi, Carlos Agelet de Saracibar, Narges Dialami,and Kazumi Matsui. Finite element modeling of multi-pass welding and shaped metal depositionprocesses.Computer Methods in Applied Mechanics and Engineering, 199(37-40):2343–2359,2010
===== Adding new tests on the integration method =====
I added new tests in the battery to check the behaviour with the different integrations (Gauss: IntGauss, Lobatto: IntLobatto, Trapezoid: IntTrapezoid), in 2d and 3d, with different numbers of integration points per direction (2Nip, 3Nip, 4Nip). I also added a cont2 using Lobatto and Trapezoid integration.
===== Adding a check of the gmsh version =====
Newer versions of gmsh (>3.0.6) have a different format for the MSH file. As a quick fix I added a check of the format in toolbox/gmsh.py . For now one should remain with a version of gmsh <3.0.6.
===== Added [a] / deleted [d] / modified [m] / renamed [r] files ======
====Code:====
[m] mtElements/mtElements.cpp
[m] mtElements/mtElements.h
[m] mtElements/volumes/methods/EasCauchyMechVolIntegMeth.cpp
[m] mtElements/volumes/methods/MechanicalVolumeIntegrationMethods.inl
[m] mtElements/volumes/methods/SriCauchyMechVolIntegMeth.inl
[m] mtElements/volumes/methods/SriPrCauchyMechVolIntegMeth.inl
[m] mtElements/volumes/Tm2VolumeElement_common.hpp
[m] mtElements/volumes/VolumeElement_common.hpp
[m] mtElements/volumes/VolumeElShcuts.h
[m] mtElements/volumes/VolumeElShcuts.inl
[m] mtElements/volumes/VolumeElShcutsEnums.h
[m] mtGeo/mtGeoPolySide.h
[m] mtGeo/mtGeoPolyVolume.h
[m] mtGeo/mtGeoVolume.h
[m] mtShapeFunctions/GpTemplate.h
[m] mtShapeFunctions/OnEdgeGpHexa.cpp
[m] mtShapeFunctions/OnEdgeGpHexa.h
[m] mtShapeFunctions/OnEdgeGpLine.cpp
[m] mtShapeFunctions/OnEdgeGpLine.h
[m] mtShapeFunctions/OnEdgeGpPenta.cpp
[m] mtShapeFunctions/OnEdgeGpPenta.h
[m] mtShapeFunctions/OnEdgeGpQuad.cpp
[m] mtShapeFunctions/OnEdgeGpQuad.h
[m] mtShapeFunctions/OnEdgeGpTetra.cpp
[m] mtShapeFunctions/OnEdgeGpTetra.h
[m] mtShapeFunctions/OnEdgeGpTriangle.cpp
[m] mtShapeFunctions/OnEdgeGpTriangle.h
[m] mtShapeFunctions/OptimalGpHexa.cpp
[m] mtShapeFunctions/OptimalGpHexa.h
[m] mtShapeFunctions/OptimalGpLine.cpp
[m] mtShapeFunctions/OptimalGpLine.h
[m] mtShapeFunctions/OptimalGpPenta.cpp
[m] mtShapeFunctions/OptimalGpPenta.h
[m] mtShapeFunctions/OptimalGpQuad.cpp
[m] mtShapeFunctions/OptimalGpQuad.h
[m] mtShapeFunctions/OptimalGpTetra.cpp
[m] mtShapeFunctions/OptimalGpTetra.h
[m] mtShapeFunctions/OptimalGpTriangle.cpp
[m] mtShapeFunctions/OptimalGpTriangle.h
[m] mtShapeFunctions/QuadratureType.cpp
[m] mtShapeFunctions/SfIntegratorSet.cpp
[m] mtShapeFunctions/SfIntegratorSet.h
[m] mtShapeFunctions/SfIntegratorTemplate.h
[m] mtShapeFunctions/SfIntegratorTemplate.hpp
====Python:====
toolbox/gmsh.py
====Tests:====
[a] apps/monosMeca/IntGauss2d2Nip.py
[a] apps/monosMeca/IntGauss2d2NipElast.py
[a] apps/monosMeca/IntGauss2d3Nip.py
[a] apps/monosMeca/IntGauss2d4Nip.py
[a] apps/monosMeca/IntGauss3d2Nip.py
[a] apps/monosMeca/IntGauss3d3Nip.py
[a] apps/monosMeca/IntGauss3d4Nip.py
[a] apps/monosMeca/IntGauss3dElast.py
[a] apps/monosMeca/IntLobatto2d2Nip.py
[a] apps/monosMeca/IntLobatto2d2NipElast.py
[a] apps/monosMeca/IntLobatto2d3Nip.py
[a] apps/monosMeca/IntLobatto2d4Nip.py
[a] apps/monosMeca/IntLobatto3d2Nip.py
[a] apps/monosMeca/IntLobatto3d2NipElast.py
[a] apps/monosMeca/IntLobatto3d3Nip.py
[a] apps/monosMeca/IntLobatto3d4Nip.py
[a] apps/monosMeca/IntTrapezoid2d2Nip.py
[a] apps/monosMeca/IntTrapezoid2d2NipElast.py
[a] apps/monosMeca/IntTrapezoid2d3Nip.py
[a] apps/monosMeca/IntTrapezoid2d4Nip.py
[a] apps/monosMeca/IntTrapezoid3d2Nip.py
[a] apps/monosMeca/IntTrapezoid3d2NipElast.py
[a] apps/monosMeca/IntTrapezoid3d3Nip.py
[a] apps/monosMeca/IntTrapezoid3d4Nip.py
[a] apps/qs/cont2IntLobatto.py
[a] apps/qs/cont2IntTrapezoid.py
--- //[[Cedric.Laruelle@ULiege.be|Cédric Laruelle]] 2019/01/17 //