Anomalie #331
calcul ne s'arrête pas malgré une divergence
Description
Gérard,
j'ai un calcul qui ne s'arrête pas alors qu'il remplit tous les critères pour le faire.
En gros, je fais un calcul de gonflage. Comme je ne sais pas à l'avance si l'enveloppe supportera la pression, je m'attends à ce qu'il puisse rencontrer une divergence ou non. Je souhaite qu'il s'arrête dès la première divergence.
le problème de ces calculs infinis, c'est entre-autre que l'affichage redirigé vers un fichier va générer un énorme fichier de redirection produisant parfois le crash de l'ordi (c'est d'ailleurs ce qui m'a enfin poussé à faire ce ticket alors que je connais ce pb depuis un moment).
La divergence est typiquement repérée par un jacobien négatif ou infini. J'ai donc mis :
CAS_JACOBIEN_NEGATIF 2
c'est-à-dire => divergence dès le premier jacobien rencontré
Je fais également en sorte que le pas de temps ne puisse être modifié :
TYPE_DE_PILOTAGE AUCUN_PILOTAGE
et en plus au cas où, je mets :
DELTAtMINI = DELTAtMAXI = DELTAt
avec ça normalement, s'il diverge, il ne peut modifier son pas de temps => il doit donc s'arrêter.
Mais dans mon calcul, ce n'est pas le cas. Il met un message de non convergence, dit qu'il ne peut pas modifier le pas de temps mais recommence l'incrément quand même. Et cette séquence se reproduit indéfiniment.
J'ai essayé une astuce. Comme je sais à l'avance combien d'incréments je vais faire au maximum, j'ai essayé le paramètre MAX_ESSAI_INCRE.
Dans mon exemple, il diverge à l'incrément 17. Si je mets MAX_ESSAI_INCRE égal à 17 ou 18, effectivement il s'arrête (pas normalement mais il s'arrête quand même). Mais si je mets 19 ou plus, je retombe sur un calcul qui boucle à l'infini.
L'exemple joint est en relaxation dynamique. Je ne sais pas si le problème est général aux calculs de statique.
merci d'avance
Julien
Fichiers