Fortran OpenMP parallelization and writing in multiple files.

  • Fortran
  • Thread starter eleteroboltz
  • Start date
  • #1
Hello.

I'm attempting to write some data in different files (each thread write in each file), but I'm getting an error saying: 'File already opened in another unit'. I'm using the function OMP_get_thread_num() from OpenMP library in order to open individual files in individual threads.

Code:
!$OMP PARALLEL DEFAULT(PRIVATE) SHARED(PeVet,num,eta,xi,p) FIRSTPRIVATE(Temp,Told)
!$OMP DO
DO q=1,5
    Pe = PeVet(q)

    LocalThread = 22 +  OMP_get_thread_num()
    WRITE(FileName,'(a,i4.4,a,i4.4,a,i2.1,a)') 'Velocity-Imax',Imax,'Jmax',Jmax,'Kn',p,'.dat'
    OPEN(UNIT=LocalThread,FILE=FileName)

    DO j=1,jmax
        ud(j)= (3.d0/2.d0)*(1.d0+8*Kn*bV-eta(j)**2)/(1.d0+12*Kn*bV)
        Write(LocalThread,*) eta(j), ud(j)
    END DO
    CLOSE(LocalThread)
END DO
!$OMP END DO
!$OMP END PARALLEL

I don't know what I'm doing wrong...
Please, help me guys.
Thank you in advance
 
Last edited:

Answers and Replies

  • #2
1,065
54
It looks like the error is meaningful, isn't it?

I mean, you may be making sure that the unit number is different in every thread, but it does not look like you are making sure that the file name become different....in other words, it looks like you open the file the first time around from the first thread that gets there...and THEN, you are attempting to open the same file from another thread with a different unit number....follow?

are you trying to write to different files or the same? or what?
 
  • #3
Gsal, you are totally right.

Thank you
 

Related Threads on Fortran OpenMP parallelization and writing in multiple files.

Replies
8
Views
364
Replies
3
Views
3K
  • Last Post
2
Replies
37
Views
876
  • Last Post
Replies
3
Views
4K
  • Last Post
Replies
1
Views
2K
  • Last Post
Replies
1
Views
2K
Replies
5
Views
3K
  • Last Post
Replies
8
Views
7K
Top