Scilab message d'erreur ODE -1
Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

Scilab message d'erreur ODE -1



  1. #1
    invite75e562f9

    Lightbulb Scilab message d'erreur ODE -1


    ------

    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.

    -----

  2. #2
    Paraboloide_Hyperbolique

    Re : Scilab message d'erreur ODE -1

    Bonjour,

    Je ne connais pas bien scilab, cependant je pense que la fonction "errcatch" devrait vous aider à faire ce que vous souhaitez.

    https://help.scilab.org/docs/5.4.1/en_US/errcatch.html

  3. #3
    invite75e562f9

    Re : Scilab message d'erreur ODE -1

    Merci Monsieur "Selle de cheval", je vais vérifier si cela fonctionne !

  4. #4
    invite75e562f9

    Re : Scilab message d'erreur ODE -1

    Finalement, j'ai rajouté l'option "stiff" dans ODE pour les équations différentielles très raides, et il semblerait que je n'ai plus aucun problème de convergence.
    Merci en tout cas pour le tuyau "errcatch".

  5. A voir en vidéo sur Futura

Discussions similaires

  1. Erreur d'index sur Scilab
    Par invite4e138e41 dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 16/12/2019, 11h50
  2. Erreur scilab
    Par invite3195f5cf dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 04/01/2017, 18h52
  3. Calcul d'erreur Scilab
    Par invite7feacca9 dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 08/01/2016, 19h43
  4. Réponses: 3
    Dernier message: 28/04/2013, 14h20
  5. Scilab : erreur de précision
    Par invite870a36d7 dans le forum Logiciel - Software - Open Source
    Réponses: 7
    Dernier message: 01/06/2011, 11h20