Metafor

ULiege - Aerospace & Mechanical Engineering

User Tools

Site Tools


commit:2019:01_17

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.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

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

Cédric Laruelle 2019/01/17

commit/2019/01_17.txt · Last modified: 2019/07/03 11:05 by laruelle

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki