Metafor

ULiege - Aerospace & Mechanical Engineering

User Tools

Site Tools


commit:2016:06_21

Commit 2016-06-21

Ce commit permet de faire du thermo-mécanique avec le lagrangien augmenté. Etant donné que c'était assez bien implémenté dans la partie mécanique, il y avait peu de modifications importantes à effectuer pour pouvoir l'utiliser en thermomécanique.

Matériau de contact thermo-mécanique

Pour faire du thermo-mécanique, il suffit d'instancier les matériaux du type lagrangien augmenté (ceux avec la dénotation AugLag dans leur nom). Le nombre de paramètres utilisateurs est le même entre la version pénalité et la version lagrangien augmenté du matériau.

Par exemple, pour du thermomécanique sans frottement, il suffit de substituer TmFrictionlessContactMaterial par TmAugLagFrictionlessContactMaterial dans votre jeux de données. C'est la même chose pour les matériaux de frottement selon le critère de Tresca (TmAugLagTrescaContactMaterial) et de Coulomb (TmAugLagCoulombContactMaterial), et le matériau avec collement (TmAugLagStickingContactMaterial).

Mise à jour du pas de temps

Sur base de mes travaux précédents, j'ai étendu les méthodes de calcul du pas de temps pour les schémas d'intégration thermomécanique étagé et couplé. En bref, il se base tous les deux sur l'algorithme de mise à jour du pas du temps de JPP où on passe en argument une itération mécanique équivalente (dépendant du nombre d'itérations mécaniques et du nombre d'augmentations) ou une itération thermique.

Schéma d'intégration thermo-mécanique étagé

Le nombre d'itérations correspond au maximum entre les nombres d'itérations mécaniques équivalentes et thermiques :

tscm = NbOfStaggeredTmAugLagNRIterationsTimeStepComputationMethod(metafor)
tscm.setEquivalentIteMethod(_equivalentIteMethod)
tscm.setTimeStepDivisionFactor(_timeStepDivisionFactor)
tscm.setMaxNbOfIteInAdaptOfTimeStep(_maxNbOfIteInAdaptOfTimeStep)
tscm.setNbOptiIte(_nbOptiIte)
tsm.setTimeStepComputationMethod(tscm)

Schéma d'intégration thermo-mécanique couplé

Le nombre d'itérations correspond au nombre d'itérations thermomécaniques équivalentes :

tscm = NbOfCoupledTmAugLagNRIterationsTimeStepComputationMethod(metafor)
tscm.setEquivalentIteMethod(_equivalentIteMethod)
tscm.setTimeStepDivisionFactor(_timeStepDivisionFactor)
tscm.setMaxNbOfIteInAdaptOfTimeStep(_maxNbOfIteInAdaptOfTimeStep)
tscm.setNbOptiIte(_nbOptiIte)
tsm.setTimeStepComputationMethod(tscm)

Schéma d'intégration mécanique avec Lagrangien Augmenté

Le nombre d'itérations correspond au nombre d'itérations mécaniques :

tscm = NbOfMechAugLagNRIterationsTimeStepComputationMethod(metafor)
tscm.setEquivalentIteMethod(_equivalentIteMethod)
tscm.setTimeStepDivisionFactor(_timeStepDivisionFactor)
tscm.setMaxNbOfIteInAdaptOfTimeStep(_maxNbOfIteInAdaptOfTimeStep)
tscm.setNbOptiIte(_nbOptiIte)
tsm.setTimeStepComputationMethod(tscm)

Paramètres

Paramètre Défaut Description
maxNbOfIteInAdaptOfTimeStep 0 Nombre d'itérations maximales pour faire diminuer le pas de temps si le nombre d'itérations est supérieur au nombre d'itérations optimales
nbOptiIte 4 Nombre d'itérations optimales
timeStepDivisionFactor 3.0 Facteur de division du pas de temps en cas de problème durant la résolution du step

Pour le paramètre equivalentIte, je vous renvoie à mon commit précédent Commit 2016-04-25.

Méthode par défaut de chaque schéma d'intégration

Intégration temporelle Défaut
Quasi-statique Mechanical Time Integration “NbOfMechAugLagNRIterationsTimeStepComputationMethod”
Implicit Mechanical Time Integration “NbOfMechAugLagNRIterationsTimeStepComputationMethod”
Coupled ThermoMechanical Time Integration “NbOfCoupledTmAugLagNRIterationsTimeStepComputationMethod”
Staggered ThermoMechanical Time Integration “NbOfStaggeredTmAugLagNRIterationsTimeStepComputationMethod”

Par défaut, si on active le lagrangien augmenté, la bonne méthode de calcul du pas de temps est automatiquement instanciée dans le time step manager avec les paramètres par défaut.

Attention le schéma d'intégration thermomécanique couplé n'est pas totalement validé ! Il faut l'utiliser avec précaution et privilégier le schéma d'intégration thermomécanique étagé !

Cas-tests d'écrasement d'un bloc élastique en état plan déformation

J'ai ajouté quelques cas-tests d'interface pour les matériaux de contact en lagrangien augmenté avec un schéma d'intégration thermomécanique étagé et couplé. Il semblerait qu'il ne soit pas possible de faire passer le cas test d'écrasement d'un bloc en schéma d'intégration thermomécanique couplé avec un matériau du type Coulomb. Il est vrai que ce type de schéma d'intégration n'est pas totalement validé dans Metafor (Matrice de raideur numérique par exemple, enchainement des opérations, etc …).

Fichiers ajoutés/supprimés

[a]:mtContact/src/TmAugLagCoulombContactMaterial.cpp
[a]:mtContact/src/TmAugLagCoulombContactMaterial.h
[a]:mtContact/src/TmAugLagFrictionlessContactMaterial.cpp
[a]:mtContact/src/TmAugLagFrictionlessContactMaterial.h
[a]:mtContact/src/TmAugLagStickingContactMaterial.cpp
[a]:mtContact/src/TmAugLagStickingContactMaterial.h
[a]:mtContact/src/TmAugLagTrescaContactMaterial.cpp
[a]:mtContact/src/TmAugLagTrescaContactMaterial.h
[a]:mtFEM/algos/NbOfAugLagNRIterationsTimeStepComputationMethod.cpp
[a]:mtFEM/algos/NbOfAugLagNRIterationsTimeStepComputationMethod.h
[a]:mtFEM/algos/NbOfCoupledTmAugLagNRIterationsTimeStepComputationMethod.cpp
[a]:mtFEM/algos/NbOfCoupledTmAugLagNRIterationsTimeStepComputationMethod.h
[a]:mtFEM/algos/NbOfStaggeredTmAugLagNRIterationsTimeStepComputationMethod.cpp
[a]:mtFEM/algos/NbOfStaggeredTmAugLagNRIterationsTimeStepComputationMethod.h
[r]:
[rename]:mtFEM/algos/NbOfMechAugLagNRIterationsTimeStepComputationMethod.cpp => mtFEM/algos/NbOfAugLagMechNRIterationsTimeStepComputationMethod.cpp
[rename]:mtFEM/algos/NbOfMechAugLagNRIterationsTimeStepComputationMethod.h => mtFEM/algos/NbOfAugLagMechNRIterationsTimeStepComputationMethod.h

Cas tests ajoutés/supprimés

[a]:apps/contactTm/RdEplBlockAugLagCoulomb.py
[a]:apps/contactTm/RdEplBlockAugLagFrictionLess.py
[a]:apps/contactTm/RdEplBlockAugLagSticking.py
[a]:apps/contactTm/RdEplBlockAugLagTresca.py
[a]:apps/contactTm/RdEplBlockAugLagFrictionLessFull.py
[a]:apps/contactTm/RdEplBlockAugLagStickingFull.py
[a]:apps/contactTm/RdEplBlockAugLagTrescaFull.py
[a]:apps/contactTm/RdEplBlockFrictionLessFull.py
[a]:apps/contactTm/RdEplBlockStickingFull.py
[a]:apps/contactTm/RdEplBlockTrescaFull.py
[r]:
commit/2016/06_21.txt · Last modified: 2018/05/04 20:51 by 46.229.168.69