Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Runtime error 112

  1. Oct 17, 2015 #1
    Hi, I try to write program to calculating mach number, with using bisection method. When I run program, fortran write to me an error in line 40. Can you help? I tried to calculating function by using wolfram sucesfully but I need to run it on fortran, An equation is 1.7795 - (0.334898 (1 + 0.2 x^2)^6.)/x^2. Can you help me? Thx

    My error code:
    Code (Fortran):

    program mach
         real pp,z1,z2,sucin,a,b,x,machx,a1

          pp=1
          a1=0.1
          b=3

          z1=pp**2-(0.334898*(1+0.2*a1**2)**6)/a1**2
          z2=pp**2-(0.334898*(1+0.2*b**2)**6)/b**2

          sucin=z1*z2

          if(sucin.lt.0) go to 1

          if(sucin.gt.0) go to 3

        1 continue

          do
              a=a1
              a1=(b+a)/2

              z1=pp**2-(0.334898*(1+0.2*a1**2)**6)/a1**2
              z2=pp**2-(0.334898*(1+0.2*b**2)**6)/b**2

              sucin=z1*z2
              machx=a
              x=abs(b-a)

              if(x.lt.0.0001) exit

              if(sucin.lt.0) cycle

              if(sucin.gt.0) go to 2
          end do

        2 continue

          do
              b=a1
              a1=(b+a)/2

              z1=pp**2-(0.334898*(1+0.2*a**2)**6)/a**2
              z2=pp**2-(0.334898*(1+0.2*a1**2)**6)/a1**2

              sucin=z1*z2
              machx=b
              x=abs((b-a))

              if(x.lt.0.0001) exit

              if(sucin.lt.0) cycle

              if(sucin.gt.0) go to 1
          end do

        3 continue

          print*,'Mach number is'
          write(5,*) machx

          stop

    end program mach
     
     
    Last edited by a moderator: Oct 17, 2015
  2. jcsd
  3. Oct 17, 2015 #2
    Problem is solved.
     
  4. Oct 17, 2015 #3

    jedishrfu

    Staff: Mentor

    That's great.

    What was the actual error and how did you solve it?
     
  5. Oct 17, 2015 #4
    You can see, the condition if( sucin.gt.0)go to 3 in line 10 is wrong. If I use only bisection method, the program will not work correctly, because i must to find extreme of the function and then must to choose right interval. I had to use a next numerical method to find extrem and then I could solve this problem. I would be glad if you find some more elegant solution for solving this function. Thx
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook




Similar Discussions: Runtime error 112
  1. MIPS Runtime Error? (Replies: 1)

  2. Error 112 FORTRAN95 (Replies: 1)

  3. [FORTRAN] Runtime error (Replies: 12)

Loading...