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)
QUADRATURETYPE
still remains for the choice of the type of transfer for the transfer elements.Transfert de données entre deux maillages
[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
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.
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.
[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] mtMaterials/volumes/ContinuousDamageEvpIsoHHypoMaterial.cpp [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
toolbox/gmsh.py
[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
— Cédric Laruelle 2019/01/17