- #1

ShoxPhysics

- 5

- 0

I have just about finished this program, I only need to calculate my velocity. I think that this velocity should be calculated by taking the value from the 4th column of my data set here:https://docs.google.com/file/d/0BzuDEPd26OcheVhiWlZ3STlZU0k/edit?usp=sharing which have called ivar_3 and multiplying it by the difference of the 1st column in the line of the value and the line preceding it. Is this thought process correct? I have done the following (code I am talking about is in blue), can somebody tell me where I might be going wrong because it will not compile?

Code:

```
program WSUPhys_csv
implicit none
integer :: stat, num_lines, ivar1, ivar2, ivar3, &
MaxVert,MaxSide,MaxForward
real :: rvar, Sum_ivar1, Sum_ivar2, Sum_ivar3, &
Avg_ivar1, Avg_ivar2, Avg_ivar3, Vel, SumVel, MaxVel
character*80 :: line
logical :: err
err = .false.
write(*,*) "Reading file..."
! open input file
open(10,file='DATA-002.csv',status='old',iostat=stat)
if (stat .ne. 0) then
err = .true.
write(*,*) 'File cannot be opened !'
go to 99
end if
num_lines = 0
Sum_ivar1 = 0
Sum_ivar2 = 0
Sum_ivar3 = 0
MaxVert=0
MaxSide=0
MaxForward=0
[COLOR="Navy"]SumVel=0
MaxVel=0[/COLOR]
do
read(10,'(A)',end=99, iostat=stat) line
if (stat .ne. 0) then
err = .true.
write(*,*) 'Error reading data !'
go to 99
end if
! skip comment/header lines beginning with ";"
if (adjustl(trim(line(1:1))) .eq. ';') then
cycle
end if
! read string line into numeric variables
read(line,*) rvar, ivar1, ivar2, ivar3
num_lines = num_lines + 1
if (num_lines <= 10) then
write(*,*) num_lines, ':', rvar, ivar1, ivar2, ivar3
end if
Sum_ivar1 = Sum_ivar1 + ABS(ivar1)
Sum_ivar2 = Sum_ivar2 + ABS(ivar2)
Sum_ivar3 = Sum_ivar3 + ABS(ivar3)
[COLOR="Navy"]Vel=(ABS(ivar_3))*(rvar-rvar)
SumVel=SumVel+ ABS(Vel)[/COLOR]
If (ABS(ivar1) > MaxVert) then
MaxVert=ivar1
end if
If (ABS(ivar2) > MaxSide) then
MaxSide=ivar1
end if
If (ABS(ivar3) > MaxForward) then
MaxForward=ivar1
end if
[COLOR="Navy"]If (Vel > MaxVel) then
MaxVel=Vel[/COLOR]
end do
! close file
99 continue
close (10)
! when file processing OK
if (.not. err) then
write(*,*) '...done.'
! compute averages
Avg_ivar1 = (Sum_ivar1 / num_lines)
Avg_ivar2 = (Sum_ivar2 / num_lines)
Avg_ivar3 = (Sum_ivar3 / num_lines)
[COLOR="Navy"]AvgVel = (SumVel / num_lines)[/COLOR]
!
write(*,*) 'Lines processed: ', num_lines
write(*,*) 'Average vertical acceleration', Avg_ivar1
write(*,*) 'Average sideways acceleration', Avg_ivar2
write(*,*) 'Average forwards acceleration', Avg_ivar3
write(*,*) 'Maximum vertical acceleration', MaxVert
write(*,*) 'Maximum sideways acceleration', MaxSide
write(*,*) 'Maximum forward acceleration ', MaxForward
[COLOR="Navy"]write (*,*) 'Average forward velocity', AvgVel
write (*,*) 'Maximum velocity', MaxVel[/COLOR]
end if
end program WSUPhys_csv
```

Last edited: