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

Fortran question, read from file

  1. Jul 1, 2009 #1
    Hello. I'm completely new to programming, and I'm having some troubles with a Fortran program I'm writing.

    I have an input file containing three columns, where each column contains a couple of cartesian coordinates (column 1 contains various x coordinates, and so on). What I would like my program to do is to keep one (or two) coordinate constant, while varying the rest. The relevant part of my code looks like this:

    open(11, file="filnamn")
    do i=1,N
    read(11, *) 1, 2, 3
    ...

    Here all the columns are read. But if I want the program to read only column 2 and 3 I can't write

    read(11,*) 2, 3

    since this of course would make it read column 1 and 2. So my question is: How can I make the program read a specific column?
     
  2. jcsd
  3. Jul 1, 2009 #2
    You need to learn how to use fromatted read statements. What you are using now is free format reading.
    Example:
    read(11,100)x_coordinate,y_coordinate
    100 format(3x,F12.9,3x,F12.9)

    this will skip 3 spaces and read a real number in the format nn.nnnnnnnnn then skip another 3 spaces and read another real number in the format nn.nnnnnnnnn
    Take some time to learn different formats
     
  4. Jul 2, 2009 #3

    minger

    User Avatar
    Science Advisor

    Just read all three each time anytimes, but keep the previous values stored
    Code (Text):

    DO n=1,nPts
     READ(11,*) A(n),B(n),C(n)

     IF (whatever) THEN
       A(n) = Alast
     END IF

     Alast = A(n)
     Blast = B(n)
     Clast = C(n)

    END DO

     
    Something like that
     
  5. Jul 4, 2009 #4
    Thanks for trying to help me, guys. I found out that I was on the wrong track, though.
     
  6. Jul 4, 2009 #5
    I program in c++ however I have used fortran. If you have a pointer with the
    address of the starting data ( your mem mapped data) write a struct which
    coresponds to the data i.e. struct{
     
  7. Jul 4, 2009 #6
    I program in c++ however I have used fortran. If you have a pointer with the
    address of the starting data ( your mem mapped data) write a struct which
    coresponds to the data i.e. struct memmap {
    int a
    float b
    double int
    +,
    ect...
    }
    Then point the struct to the starting address and if you created the struct to
    match your data your finished. I don't know the fortran syntax for a struct of hand.
    however you should be able to find that. Trick is declaring it a pointer.
    If all goes wrong write a c routine then link it via a call from fortran. You can also
    write an assembler interface between a C routine and fortran

    Geo.
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook




Similar Discussions: Fortran question, read from file
Loading...