Bonjour,
Je cherche à résoudre des équations différentielles de la dynamique très raides à l'aide du solveur ODE.
J'ai 135 calculs à lancer successivement et chacun dure environ 3 minutes .
La résolution du système d'équations différentielles fonctionne bien pour la plupart des calculs, mais pour quelques autres, le jeu des paramètres choisis n'est pas compatible avec le Jacobien, et j'obtiens le message d'erreur suivant :
lsoda-- at t (=r1), mxstep (=i1) steps
needed before reaching tout
where i1 is : 500
where r1 is : 0.1324715360748D+02
Excessive work done on this call (perhaps wrong jacobian type).
à la ligne 93 du fichier exécuté D:\DATA\g.poli\Desktop\Scilab_ AZUR\02_elastoplastique\02_ela stoplastique.sce
à la ligne 3 de la fonction lancer ( D:\DATA\g.poli\Desktop\Scilab_ AZUR\02_elastoplastique\02_ela stoplastique_multiple.sce ligne 17 )
à la ligne 81 du fichier exécuté D:\DATA\g.poli\Desktop\Scilab_ AZUR\02_elastoplastique\02_ela stoplastique_multiple.sce
ode: lsoda exit with state -1.
Lorsque je modifie le pas de discrétisation de l'accélérogramme en prenant par exemple 0.002 au lieu de 0.001 ; ou bien 0.0005 au lieu de 0.001 cela permet de débloquer le solveur et de converger vers la solution.
Parfois, cela fonctionne aussi lorsque j'augmente légèrement la pente de la branche horizontale de la seconde partie de la loi de comportement bilinéaire élastoplastique parfaite.
Mon problème c'est que je suis obligé de rester devant l'écran à attendre de voir ce message d'erreur et de modifier manuellement ces deux paramètres (pas de discrétisation et pente de la loi de comportement).
Je souhaite automatiser le calcul en faisant un script du type :
if [code d'erreur en sortie d'ODE] = -1 then
(pas = pas /2) ou alors (pas = pas*2) ;
relancer();
end;
Mais je ne sais pas comment s'appelle la variable qui contient le code -1 après plantage d'ODE.
Quelqu'un peut m'aider ?
Merci d'avance.
En résumé je veux automatiser la détection du plantage d'ODE (divergence) pour modifier automatiquement les paramètres foireux, et relancer la résolution.
-----

