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 :

Zéro résultat à l'éxecution


Sujet :

Fortran

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2007
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 21
    Par défaut Zéro résultat à l'éxecution
    Bonjour à tous;
    j'ai essayer d'executer un programme en fortran qui me fait des icrementations en 3 directions càd un maillage dans un cylindre creux,les résultats que j'obtient sont toujours des 0 je n'arrive pas à trouver où est ce l'erreur pouvez vous m'aider?

    voici mon prog:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    	DIMENSION  X(100,100,100),Y(100,100,100),Z(100,100,100)
     
     
    		pi=4.0*atan(1.0)
    		 ni=80;       nj=80;      nk=80 
    	m=ni+1
    	n=nj+1	   
    	zp=1.5	            
     
    	 zl=5.
    	r1=8.
    	r0=4.
    	dth=2*pi/float(nj)
     
    	do 100 k=1,nk
     
    	   do 200 j=1,n
     
    	   x(1,j,k)=(r0+(r1-r0)*(j-1)/float(nj))
    	y(1,j,k)=0.0
    	x(m,j,k)=x(1,j,k)
    	y(m,j,k)=y(1,j,k)
      200 continue
          do 300 i=1,m
    	theta=(1-i)*dth+2.0*pi
    	x(i,1,k)=r0*cos(theta)
    	y(i,1,k)=r0*sin(theta)
    	x(i,n,k)=r1*cos(theta)
    	y(i,n,k)=r1*sin(theta)
      300 
     
    	continue
    	z(1,1,1)=0.0
    	z(i,j,k)=zl*((k-1)/nk)**zp
     
      100	continue
     
     
    	    do 110 i=1,m
      110   write(*,*)x(i,j,k)
           do 120 j=1,n
      120  write(*,*) y(i,j,k)
            do 130 k=1,nk
      130  write(*,*)z(i,j,k) 
        	WRITE(*,*)x(i,j,k),y(i,j,k),z(i,j,k)

  2. #2
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 79
    Par défaut
    bonjour,

    une piste (pas vérifiée...désolé) : ta déclaration de tableau semble ne pas indiquer le type de X,Y et Z. Ainsi, si le tableau est enregistré comme un tableau d'entiers, il se pourrait que tes 0 correspondent à la partie entière de ton résultat.

    Quelquechose comme celà devrait être plus précis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    real , dimension(1:100,1:100,1:100) :: x,y,z
    De plus, un conseil utilise le" Implicit none" , ça permet de bien vérifier que toutes tes variables ont bien été déclarées, ça pourrait permettre d'identifier des causes d'erreurs dans ton programme.
    En espérant que ceci ait pu t'aider ;-)

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2006
    Messages : 197
    Par défaut
    il me semble que le type implite de ces tableaux est REAL
    (si je ne me trompe pas, c'est les variables dont la première lettre est entre i et n qui sont des INTEGER)

    mais effectivement, l'utilisation de "IMPLICIT NONE" permet d'une part de bien contrôler le type de toutes les variables, mais aussi d'éviter les erreurs de frappe dans le nom d'une variable.

    Pour ton problème, tu devrai afficher les résultats intermédiaires (en réduisant les ni, nj et nk pour que ce soit plus simple à débugger). Tu verrai ainsi a quel moment le calcul devient faux.

  4. #4
    Membre averti
    Inscrit en
    Février 2007
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 21
    Par défaut
    Bonjour à tous;
    merci yogitetradim et gregory2526 de votre aide oui j'ai déclaré mes variables comme real ca a marché pour les deux premières composantes mais la troisième n'est pas calculé

  5. #5
    Membre averti
    Inscrit en
    Février 2007
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 21
    Par défaut
    Citation Envoyé par solo12 Voir le message
    Bonjour à tous;
    merci yogitetradim et gregory2526 de votre aide oui j'ai déclaré mes variables comme real ca a marché pour les deux premières composantes mais la troisième n'est pas calculé (le prog est toujours executable)

  6. #6
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Par défaut
    Salut !

    Lorsque tu testes un programme, affiche les résultats intermédiaires en format E pour distinguer les valeurs très petites de zéro.

    D'autre part, on obtient souvent de bons résultats avec la méthode de la bissection: Tu affiches des valeurs intermédiaires à peu près au milieu de ton programme. Si ces résultats sont faux, l'erreur se trouve dans la première moitié; s'ils sont justes,c'est dans la seconde. Puis tu recommences avec la moitié qui contient l'erreur, et ainsi de suite; ça ne marche pas toujours, mais assez souvent et c'est assez rapide.

    Jean-Marc Blanc

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/09/2013, 09h01
  2. [AC-2010] Afficher zéro en l'absence de résultat d'un calcul dans une requête
    Par ToFind dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 14/12/2012, 02h58
  3. Réponses: 5
    Dernier message: 08/11/2011, 21h43
  4. Avoir des zéro dans résultats requête
    Par CBen dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 18/10/2007, 16h45
  5. [BDD] Enregistrer le résultat d'une requête
    Par Mowgly dans le forum C++Builder
    Réponses: 5
    Dernier message: 19/06/2002, 15h26

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