Projet

Général

Profil

Anomalie #144

Champ thermique en RD -> Segmentation fault

Ajouté par Frank Petitjean il y a plus de 7 ans. Mis à jour il y a plus de 7 ans.

Statut:
Résolu
Priorité:
Urgent
Assigné à:
Version cible:
-
Début:
12/07/2017
Echéance:
% réalisé:

100%

Temps estimé:
Temps passé:

Description

Bonjour Gérard,

La prise en compte d'un champ thermique fonctionne en statique mais conduit à un défaut de segmentation dans un calcul en RD !
J'ai un cas test minimal qui met ce problème en évidence.

J'espère que ce n'est rien car toute mon étude méca-thermique des BPS en dépend !!!
Merci
Frank


Fichiers

EcrireChampTemp.py (604 octets) EcrireChampTemp.py Frank Petitjean, 12/07/2017 17:09
plaque10x10.her (18,2 ko) plaque10x10.her Frank Petitjean, 12/07/2017 17:09
test_sta.info (959 octets) test_sta.info Frank Petitjean, 12/07/2017 17:09
test_sta.CVisu (5,91 ko) test_sta.CVisu Frank Petitjean, 12/07/2017 17:09
test_RD.CVisu (5,91 ko) test_RD.CVisu Frank Petitjean, 12/07/2017 17:10
test_RD.info (1,56 ko) test_RD.info Frank Petitjean, 12/07/2017 17:10
test_RD.info (1,59 ko) test_RD.info Frank Petitjean, 13/07/2017 13:56
#1

Mis à jour par Gérard Rio il y a plus de 7 ans

  • Statut changé de Nouveau à Résolu
  • % réalisé changé de 0 à 100

Bonjour Frank,
effectivement il y avait un certain nombre de points à regarder.
1) au niveau de la déformation logarithmique que tu utilises (ce n'est peut-être pas une bonne idée, car pour l'instant la matrice tangente n'est pas très précise, mais ce n'est pas une erreur), donc il y avait un pb d'initialisation de dérivée. Dans le cas implicite, ou purement explicite, c'était ok. Mais en relaxation dynamique, en fait on est en explicite, tout en voulant de temps en temps calculer la raideur globale (pour le calcul de masse) ce qui correspond à une partie qui relève habituellement d'un calcul type implicite ... donc ce cas particulier d'une prise en compte d'un ddl externe (ici la température) pour une succession implicite explicite implicite, etc. n'était pas parfaitement pris en compte -> c'est a priori ok maintenant
Je recompile une nouvelle version dans ce sens: 6.805
2) un second pb vient de ton choix d'évolution de la température et de la loi associée. Là ce n'est pas un pb d'Herezh++ mais un pb de compréhension du fct d'Herezh.
En relaxation dynamique, dans le cas que tu as utilisé, c-a-d utilisation de la raideur réelle pour l'estimation de la masse virtuelle, le calcul démarre par la construction de la matrice de raideur (calcul associé au type implicite).
Or dans ton cas, au début du calcul, la température est nulle ! et pour une température nulle et bien compte tenu de la loi thermodépendante que tu utilises, le module d'Young est nulle !! d'où une masse nulle, d'où une divergence !!

Donc ce qu'il faut faire:
On impose une température initiale non nulle: et ensuite pendant le calcul, si on demande un recalcul de la raideur, ce sera la température en cours (= la température initiale + la température que l'on impose en chargement) qui sera utilisée.

Par exemple dans mon cas j'ai modifié ta mise en donnée dans le .info avec une température initiale de 10 °
  1. nom du maillage | Ref noeud | Blocages |
    #---------------------------------------------------------------------
    N_to 'TEMP = 10 ' # température initiale
initialisation -----------
#---------------------------------------------------------------------

La gestion des ddl (ou variables) qui ne sont pas des déplacements est différentes des ddl méca classique. Les ddl de position sont par défaut initialisées aux positions données par le maillage, alors que les autres ddl sont initialisées à 0 !!! à moins de spécifier une initialisation particulière.
NB: c'est expliqué dans la doc, mais ce n'est pas toujours évident de s'en souvenir.

bon... à tester avec la nouvelle version.

#2

Mis à jour par Frank Petitjean il y a plus de 7 ans

Merci Gérard pour cette réponse. Je comprends bien l'importance de l'initialisation pour avoir une raideur non nulle au démarrage. Pour la déformation logarithmique c'était juste pour ce cas test pour vérifier par rapport à un calcul analytique.

J'ai ajouté l'initialisation :

initialisation
N_to 'TEMP = 10 ' # température initiale

et j'ai la même erreur mais je ne suis pas sûr d'avoir placé cette instruction au bon endroit dans le jeu de données (voir le fichier joint).
As-tu fais le test chez toi ?

Quand tu écris :"dans le cas que tu as utilisé, c-a-d utilisation de la raideur réelle pour l'estimation de la masse virtuelle" est-ce que cela signifie qu'il y a d'autres façon de faire vauier la raideur en fonction d'un champ thermique ?

Frank

#3

Mis à jour par Gérard Rio il y a plus de 7 ans

Frank,
il faut utiliser la dernière version V 6.805 que je viens de mettre à jour.
Tiens moi au courant.

#4

Mis à jour par Frank Petitjean il y a plus de 7 ans

Ça marche !!!!

Je n'avais pas compris que même avec la bonne initialisation il y avait anomalie bloquante dans Herezh.

Grand merci cher Gérard pour cette correction express, je vais pouvoir poursuivre l'étude demain. J'en suis maintenant à la phase finale car tous les ingrédients sont en place. J'ai pas mal bagarré avec le champ thermique fourni pour pouvoir faire une interpolation correcte sur le maillage Herezh. J'ai tout programmé en Python pour que cela soit au maximum automatisé et générique. J'anticipe sur Omher V3 :-)

Merci encore, je peux m'endormir rassuré !
Frank

Formats disponibles : Atom PDF

Redmine Appliance - Powered by TurnKey Linux