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

Problem with a fortran program

  1. Nov 23, 2012 #1
    Hi;
    I am trying to run a program which includes;

    call AB
    write(6,*) 'finished AB'
    c---------
    call ABp(Vup,gup)
    call ABp(Vdn,gdn)
    write(6,*) 'finished ABp'
    c------------------------------------------------------------------
    c do warmup sweeps
    c-----

    accept = 1
    reject = 0

    do 410 i = 1, iwarm
    call sweep(i)
    if (mod(i,10).eq.0) then
    write(6,*) 'warmup sweep = ',i
    endif
    410 continue
    write(6, *) 'after warmups, accept ratio = ',
    1 float( accept ) / (accept+reject)
    write(46,*)
    write(46,*) 'after warmups, accept ratio = ',
    1 float(accept)/(accept+reject)
    c--------------------------------------------------------------------------

    but I see an error message ;
    multi0.f: In program `multi':
    multi0.f:97:
    write(6,*) 'accept ratio ='
    1
    multi0.f:98: (continued):
    1 float(accept) / (accept+reject)
    2
    Invalid radix specifier `float' at (2) for typeless constant at (1)
    multi0.f:98:
    1 float(accept) / (accept+reject)
    1 2
    Concatenation operator at (1) must operate on two subexpressions of character type, but the subexpression at (2) is not of character type
    mv: cannot stat `a.out': No such file or directory
    c----------------------------------------------------------------------

    what is the meaning of this message?

    thanks.
     
  2. jcsd
  3. Nov 23, 2012 #2

    SteamKing

    User Avatar
    Staff Emeritus
    Science Advisor
    Homework Helper

    It would be helpful to see the entire program.
     
  4. Nov 23, 2012 #3
    You may want to make your calculation of float(accept)/(accept+reject) previous to the write statement, assign the results to a single variable and print out such variable without any typecasting or anything.
     
  5. Nov 23, 2012 #4

    Mark44

    Staff: Mentor

    I'm reasoably sure that the errors are cause by these lines of code:
    Code (Text):

    write(6, *) 'after warmups, accept ratio = ',
    [color="red"]1 float( accept ) / (accept+reject)[/color]
    write(46,*)
    write(46,*) 'after warmups, accept ratio = ',
    [color="red"]1 float(accept)/(accept+reject)[/color]
     
    Fortran is very picky about splitting lines of code. Either put each write statement on its own line for the entire statement, or use the continuation character, & or +.
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook




Similar Discussions: Problem with a fortran program
  1. Programming in fortran (Replies: 5)

Loading...