Table of Contents
Commit 2008-10-20
Modifs
ALE - SplineCurveReZoner
Amélioration du remaillage “spline” pour permettre le remaillage de groupes (en particulier les arêtes extrudées). J'ai utilisé les routines de Luc pour construire une spline à partir d'une liste de noeuds supposés alignés.
J'en ai profité pour uniformiser/nettoyer le remaillage spline.
Le test apps.ale.taylor3Dgen4
est maintenant lancé en ALE.
ALE - Convection de la densité
Lorsqu'on est en ALE et qu'on effectue une relocalisation des noeuds, la matrice des masses et des capacités thermiques doivent être recalculées.
Dans le cas lagrangien, vu que le maillage est fixé à la matière, la matrice de masse est constante au cours du temps puisque, quelle que soit la déformation de la maille, elle renferme toujours la même quantité de matière. Conséquence directe, on ne se préoccupe jamais de recalculer la densité courante puisqu'on n'en a jamais besoin. En ALE, vu que la quantité de matière contenue dans une maille est variable, on doit réévaluer la/les matrice(s) (la consistante est toujours calculée et la diagonalisée en explicite). On doit donc réintégrer la densité courante sur le volume actuel de l'élément. On pourrait imaginer donc de convecter cette densité sur un maillage auxiliaire comme on le fait pour les contraintes et les autres grandeurs aux points de Gauss.
Dans le cas thermomec, la densité à utiliser dépend d'une part de température et d'autre part de la défo. On voit directement qu'il est donc difficile d'envisager de convecter la densité courante. En effet, après convection, il sera impossible de réévaluer cette densité à une autre température puisqu'on ne peut plus distinguer les effets mécaniques (variation du déterminant du jacobien) et thermiques ($\rho_0=\rho_0(T)$).
Pour la matrice de capacité, en lagrangien, on intègre $\rho(x,T)\,C(T)$ sur le volume courant. La densité utilisée est ici la densité initiale évaluée à la température courante. En ALE, on utilise la même formule pour recalculer cette matrice en cours de calcul. On néglige donc dans les 2 cas la variation de la densité avec la défo.
Pour arriver à séparer les effets thermiques et mécaniques, j'ai convecté le déterminant du jacobien total. La densité actuelle peut alors être calculée par $\rho_0(T)\,\mbox{det} \left (F^{\mbox{tot}} \right )$. Il faut donc calculer le $\mbox{det} \left (F^{\mbox{tot}}\right )$ et le convecter…
Les problèmes arrivent si on veut ne pas trop pénaliser le code lagrangien: si on cacule le jacobien total à tout moment, on va devoir recalculer des jacobiens sur des points de Gauss qui, très souvent on déjà été recalculés pour l'intégration des forces en mécanique et l'intégration des flux en thermique. Bref, on va recalculer 3x la même chose toutes ces grandeurs utilisent le même nombre de points de Gauss. Luc est en train d'essayer de séparer les aspects géométriques et les aspects physiques pour résoudre ce problème. Donc, finalement, après plusieurs échanges de mails avec lui (merci, ça m'a bcp aidé à pas trop pourrir le code actuel de l'élément), j'ai préféré calculer le Jtot
uniquement en ALE en introduisant une nouvelle fonction de type beginStep
, endStep
, … nommée dans ce cas-ci beginALE
. La matrice des masses est recalculée après la convection sans réévaluer Jtot
(ce qui rend la routine inutilisable en dehors de l'ALE, excepté au début du calcul).
Au final, ça marche. Cependant, vu la manière dont est construite l'ALE, un nouveau maillage auxiliaire est créé (un maillage par intégrateur). Celui-ci est 9x/10 identique à celui qui sert à convecter les contraintes (d'ou l'utilité d'une future meilleure gestion des intégrateurs).
Projet
Fichiers ajoutés/supprimés
mtMaterials/DensityGpState.*
— Romain BOMAN 2008/10/20 12:07