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 :

Kind fixé une fois pour toute


Sujet :

Fortran

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 112
    Par défaut Kind fixé une fois pour toute
    Bonjour,

    J'aimerais savoir s'il existe une commande pour fixer le kind (en l'occurrence des réels) une fois pour toute en début de code.
    En fait, j'ai déjà tapé mon code en n'utilisant que le kind par défaut (j'ai écris real :: ...) et j'aimerais ne pas devoir faire un Ctrl+R pour remplacer real par real(kind=2) (histoire de ne pas remplacer certains bouts de code ou j'utilise la conversion real(i)...)

    J'espère que j'ai bien formulé ma question.

    Merci d'avance

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 758
    Par défaut
    bonjour,

    le plus simple est de tout mettre en réel et de gérer le changement de kind avec les options de compilateur.

    là après, ça va dépendre de ton compilateur.

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 112
    Par défaut
    D'accord... j'aurais espéré qu'il y ait une telle commande, mais bon, tant pis.
    Sinon, c'est courant d'utiliser autre chose que le kind par défaut? Disons, pour des programmes de calcul... Je sais, ma question est vague, mais jusqu'à maintenant, je n'ai pas connu de problème de précision... C'est juste par curiosité!

    Merci encore une fois à toi kango, pour tes précieux conseils

  4. #4
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 758
    Par défaut
    en ce qui me concerne, je fais soit du kind=4 soit du kind=8.

    et oui il m'est arrivé d'avoir un code qui parte en sucette avec un kind 4 à la place d'un kind 8. c'est je pense le cas pour un certain nombre d'algorithme à processus itératif avec une notion de convergence.

    sinon, tu as une autre possibilité en définissant une variable globale par exemple realkind et ensuite en définissant tes réels:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    real(kind=realkind):: toto

  5. #5
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 112
    Par défaut
    D'accord kango. Je peux faire un Ctrl + R (remplacer)

    real

    par

    real(kind=r)

    En ayant ajouté à mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    integer, parameter :: r=8
    par exemple pour de la double précision

    PS: par contre, pour qu'elle soit globale, il faut que j'écrive
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    common /kind/ r
    integer :: r=8
    dans chacune de mes fonctions/sous-routines ?? De plus, il me semble qu'une variable globale ne peut pas avoir l'attribut parameter, ou je fabule?

  6. #6
    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
    Par défaut
    Le common est effectivement inapproprié.

    Tu dois utiliser un module :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    module Kinds
       implicit none
       real, parameter :: rk = 8
    end module
    Puis tu utilises ce module :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    module Constantes
       use Kinds
       implicit none
       real, parameter :: pi = 3.141592653589793238462643_rk
    end module
    program ...
       use Kinds
       use Constantes
       implicit none
       real (rk) :: x,y,z
    ...
       x = pi * ...
    ...
    Cette méthode semble largement utilisée par les experts. Selon le contexte, certains définissent quelques constantes : Simple, Double, Default, rk4, rk8,... et font référence à celles qui sont requises dans le code.

    En terminant, tu devrais éviter d'utiliser un nom aussi court que « r » : ce n'est pas très descriptif, et le risque de conflit avec une variable de ce nom est important, surtout si tu dois introduire la référence partout par Ctrl-R...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Modifier le PATH une fois pour toute
    Par elitost dans le forum Linux
    Réponses: 8
    Dernier message: 06/09/2009, 13h21
  2. expliquer variable une fois pour tout le code
    Par mumu64 dans le forum IHM
    Réponses: 4
    Dernier message: 01/08/2008, 12h08
  3. Chargement de mes collections une fois pour toutes
    Par lbrun79 dans le forum Langage
    Réponses: 2
    Dernier message: 14/11/2007, 13h17
  4. Réponses: 4
    Dernier message: 06/04/2007, 13h48
  5. declarer une variable une fois pour toute
    Par rober dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 07/11/2006, 18h35

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