IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Fortran Discussion :

Question Dummy Argument


Sujet :

Fortran

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2009
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 25
    Points : 21
    Points
    21
    Par défaut Question Dummy Argument
    Bonjour à tous,

    Dans un programme je dois résoudre une équation differentielle de type
    y=f(y,t).

    Pour ce faire je me suis tourné vers les différents solver disponible en fortran.
    J'ai essayé rkf45 qui ne semble pas tt a fait approprié pour mon problème. (trop d'évaluations)
    Une alternative qui semble intéressante et efficace est lsoda.

    La routine demande les arguments suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SUBROUTINE DLSODA (F, NEQ, Y, T, TOUT, ITOL, RTOL, ATOL, ITASK,
         1            ISTATE, IOPT, RWORK, LRW, IWORK, LIW, JAC, JT)
          EXTERNAL F, JAC
          INTEGER NEQ, ITOL, ITASK, ISTATE, IOPT, LRW, IWORK, LIW, JT
          DOUBLE PRECISION Y, T, TOUT, RTOL, ATOL, RWORK
          DIMENSION NEQ(*), Y(*), RTOL(*), ATOL(*), RWORK(LRW), IWORK(LIW)
    Mon problème vient de JAC qui est dit optionnel si JT vaut 2
    JAC est une matrice jacobienne et je ne veux pas la fournir au programme, si JT vaut 2, la matrice jacobienne est calculée par une subroutine de DLSODA.

    Dans la documentation il est bien écrit que JAC est optionnel et que si on ne souhaite pas fournir de matrice jacobienne il suffit d'envoyer " a dummy argument".

    C'est la que je suis perdu, pour moi un dummy est un argument qu'on passe a une fonction, ou subroutine. Alors la je veux bien donner un argument mais quoi?

    Voici un lien vers la subroutine qui contient la documentation.

    http://www.shocksolution.com/math_to...cs/dlsoda.html
    Si quelqu'un pouvait m'aider je sèche...

    OJ

  2. #2
    Membre régulier Avatar de rogue-spectre
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 104
    Points : 122
    Points
    122
    Par défaut
    Salut,

    Je ne connais pas très bien l'utilisation du mot clé "external". Quand je veux un argument optionnel j'utilise le mot clé "optional" par exemple JAC serait optionnel avec un déclaration
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
         REAL, DIMENSION(:,:), OPTIONAL :: JAC
    de plus les arguments optionnels sont de préférence placés à la fin de la liste des arguments car sinon si tu as par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    subroutine lala(titi, toto, tata, tutu)
       int :: titi, tata, tutu
       int, optional :: toto
    et que tu veux appeler ta routine sans l'argument toto tu vas devoir faire un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        call lala( a, tata=b, tutu=truc)
    alors que si tu déclares ta routine
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    subroutine lala(titi,  tata, tutu, toto)
       int :: titi, tata, tutu
       int, optional :: toto
    l'appel est simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     call lala( a, b, truc)
    Donc a mon avis dans ton code il faut quand même que tu passes une matrice JAC pour JT=2, même si ta matrice est bidon.

    En espérant t'avoir aidé
    Bonne journée
    Libérez vos documents http://fr.libreoffice.org/ et vos doigts en tapant en BÉPO http://bepo.fr/wiki/Accueil:, rangez les cartes perforées dans une armoire et GOTO work

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 488
    Points : 593
    Points
    593
    Par défaut
    Bonjour,

    Citation Envoyé par oliverjack Voir le message
    La routine demande les arguments suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SUBROUTINE DLSODA (F, NEQ, Y, T, TOUT, ITOL, RTOL, ATOL, ITASK,
         1            ISTATE, IOPT, RWORK, LRW, IWORK, LIW, JAC, JT)
          EXTERNAL F, JAC
          INTEGER NEQ, ITOL, ITASK, ISTATE, IOPT, LRW, IWORK, LIW, JT
          DOUBLE PRECISION Y, T, TOUT, RTOL, ATOL, RWORK
          DIMENSION NEQ(*), Y(*), RTOL(*), ATOL(*), RWORK(LRW), IWORK(LIW)
    Mon problème vient de JAC qui est dit optionnel si JT vaut 2
    JAC est une matrice jacobienne et je ne veux pas la fournir au programme, si JT vaut 2, la matrice jacobienne est calculée par une subroutine de DLSODA.

    Dans la documentation il est bien écrit que JAC est optionnel et que si on ne souhaite pas fournir de matrice jacobienne il suffit d'envoyer " a dummy argument".

    C'est la que je suis perdu, pour moi un dummy est un argument qu'on passe a une fonction, ou subroutine. Alors la je veux bien donner un argument mais quoi?

    Voici un lien vers la subroutine qui contient la documentation.

    http://www.shocksolution.com/math_to...cs/dlsoda.html
    Vu les syntaxes employées, ce n'est pas du Fortran "moderne" (I.e. 90 ou +)qui utiliserait le mot clé "optional" pour préciser qu'un argument est optionel.
    Je pencherai plus pour interpréter "a dummy argument can be used" comme: cet argument ne sera pas utilisé, donc mettre là un tableau "bidon", simplement pour être conforme aux arguments d'appel de la routine et sachant que son contenu pourra être n'importe quoi puisqu'il ne sera pas utilisé.

    Bonne continuation.

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Août 2006
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 974
    Points : 1 346
    Points
    1 346
    Par défaut
    Citation Envoyé par Ehouarn Voir le message
    Vu les syntaxes employées, ce n'est pas du Fortran "moderne" (I.e. 90 ou +)qui utiliserait le mot clé "optional" pour préciser qu'un argument est optionel.
    Je pencherai plus pour interpréter "a dummy argument can be used" comme: cet argument ne sera pas utilisé, donc mettre là un tableau "bidon", simplement pour être conforme aux arguments d'appel de la routine et sachant que son contenu pourra être n'importe quoi puisqu'il ne sera pas utilisé.
    J'en arrive à la même interprétation. Je pense que tu n'as même pas à passer un tableau bidon, un simple scalaire devrait fonctionner si l'argument n'est pas utilisé par la routine.

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/08/2012, 11h25
  2. [A-07] Question passage arguments Sub
    Par AlainL dans le forum VBA Access
    Réponses: 2
    Dernier message: 02/01/2009, 16h02
  3. [MySQL] Question sur argument de mysql_connect() et mysql_select_db()
    Par kuja2053 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 17/02/2008, 22h11
  4. Question à propos la proprieté dummy
    Par kodo dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 21/03/2007, 12h54
  5. Réponses: 9
    Dernier message: 29/07/2003, 14h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo