user3271057
user3271057

Reputation: 1

Fortran does'nt end when obtain unexpected value?

I've got a program, which compute a several variables and then these variables are writing in to the output file.

Is it possilbe, that when my program can't get a correct results for my formula, it does'nt terminate?

To clarify what I do, here is part of my code, where the variable of my interest are compute:

     dx=x(1,i)-x(nk,i)
     dy=y(1,i)-y(nk,i)
     dz=z(1,i)-z(nk,i)
          call PBC(dx,dy,dz)
          r2i=dx*dx+dy*dy+dz*dz
          r2=r2+r2i


  r2g0=0.0d0
  r2gx=0.0d0

      dx=x(1,i)-x(2,i)
        call PBC(dx,dy,dz)
      rspani=dsqrt(dx*dx)
   do ii=1,nk-1
      rx=x(ii,i)
      ry=y(ii,i)
      rz=z(ii,i)
    do jj=ii+1,nk
      dx=x(jj,i)-rx
      dy=y(jj,i)-ry
      dz=z(jj,i)-rz
        call PBC(dx,dy,dz)
        r21=dx*dx+dy*dy+dz*dz
        r21x=dx*dx
           r2g=r2g+r21
           r2gx=r2gx+r21x
           r2g0=r2g0+r21
           rh=rh+1.0d0/dsqrt(r21)
           rh1=rh1+1.0d0
         ir21=dnint(dsqrt(r21)/dr)
         p(ir21)=p(ir21)+2.0D0
      dxs=dsqrt(r21x)
      if(dxs.gt.rspani) rspani=dxs
    end do           

and then in to the output I just write these variables:

          write(12,870)r2i,sqrt(r2i),r2g0,r2gx/(nk*nk)

870 FORMAT(3(f15.7,3x),f15.7)

The x, y, z are actully generate via a random number generator.

The problem is that my output contains, correct values for lets say 457 lines, and then a one line is just "*********" when I use mc viewer and then the output continues with correct values, but let's say 12 steps form do cycle which compute these variables is missing.

So my questions are basic:

Is it possible, that my program can't get a correct numbers, and that's why the result is not writing in to the program?

or Could it this been caused due to wrong output formating or something related with formating?

Thank you for any suggestion

Upvotes: 0

Views: 56

Answers (1)

High Performance Mark
High Performance Mark

Reputation: 78316

********* is almost certainly the result of trying to write a number too large for the field specified in a format string.

For example, a field specified as f15.7 will take 1 spot for the decimal point, 1 spot for a leading sign (- will always be printed if required, + may be printed if options are set), 7 for the fractional digits, leaving 6 digits for the whole part of the number. There may therefore be cases where the program won't fit the number into the field and will print 15 *s instead.

Programs compiled with an up to date Fortran compiler will write a string such as NaN or -Inf if they encounter a floating-point number which represents one of the IEEE special values

Upvotes: 2

Related Questions