私はプログラミングが初めてで、fortran90 コードを python 2.7 に変換しています。私はこれまでのところかなりうまくやっていますが、難しいところにぶつかっています. このサブルーチンを Python で記述する必要がありますが、Fortran 表記が理解できず、Read(1,*) 行に相当する Python が何であるかについての情報が見つかりません。
どんな助けでも大歓迎です。
SUBROUTINE ReadBCoutput(filenameBC,count,timeArray,MbolArray,uArray,gArray,rArray,iArray,zArray)
! read Bruzual & Charlot (2003) stellar population synthesis models into arrays
CHARACTER*500,INTENT(IN):: filenameBC
INTEGER,INTENT(OUT):: count
REAL,DIMENSION(:),ALLOCATABLE,INTENT(OUT):: timeArray,MbolArray,uArray,gArray,rArray,iArray,zArray
REAL:: logTime,Mbol,g,uMg,gMr,gMi,gMz
REAL,DIMENSION(:),ALLOCATABLE:: timeArrayLocal,MbolArrayLocal,uArrayLocal,gArrayLocal,rArrayLocal,iArrayLocal,zArrayLocal
! open file and read off unnecessary 29 lines of comments
OPEN(1,FILE=TRIM(filenameBC),RECL=2000)
READ(1,*)
READ(1,*)
READ(1,*)
READ(1,*)
READ(1,*)
READ(1,*)
READ(1,*)
READ(1,*)
READ(1,*)
READ(1,*)
READ(1,*)
READ(1,*)
READ(1,*)
READ(1,*)
READ(1,*)
READ(1,*)
READ(1,*)
READ(1,*)
READ(1,*)
READ(1,*)
READ(1,*)
READ(1,*)
READ(1,*)
READ(1,*)
READ(1,*)
READ(1,*)
READ(1,*)
READ(1,*)
READ(1,*)
! now read arrays
count=0
ALLOCATE(timeArray(count))
ALLOCATE(MbolArray(count))
ALLOCATE(uArray(count))
ALLOCATE(gArray(count))
ALLOCATE(rArray(count))
ALLOCATE(iArray(count))
ALLOCATE(zArray(count))
IOEnd=0
DO WHILE(IOEnd>-1)
READ(1,*,IOSTAT=IOEnd) logTime,Mbol,g,uMg,gMr,gMi,gMz
!print*,'filename is',filenameBC
IF (IOEnd>-1) THEN ! not at end of file yet
! add new element to list
count=count+1
ALLOCATE(timeArrayLocal(count-1))
ALLOCATE(MbolArrayLocal(count-1))
ALLOCATE(uArrayLocal(count-1))
ALLOCATE(gArrayLocal(count-1))
ALLOCATE(rArrayLocal(count-1))
ALLOCATE(iArrayLocal(count-1))
ALLOCATE(zArrayLocal(count-1))
DO countInside=1,count-1
timeArrayLocal(countInside)=timeArray(countInside)
MbolArrayLocal(countInside)=MbolArray(countInside)
uArrayLocal(countInside)=uArray(countInside)
gArrayLocal(countInside)=gArray(countInside)
rArrayLocal(countInside)=rArray(countInside)
iArrayLocal(countInside)=iArray(countInside)
zArrayLocal(countInside)=zArray(countInside)
END DO
DEALLOCATE(timeArray)
DEALLOCATE(MbolArray)
DEALLOCATE(uArray)
DEALLOCATE(gArray)
DEALLOCATE(rArray)
DEALLOCATE(iArray)
DEALLOCATE(zArray)
ALLOCATE(timeArray(count))
ALLOCATE(MbolArray(count))
ALLOCATE(uArray(count))
ALLOCATE(gArray(count))
ALLOCATE(rArray(count))
ALLOCATE(iArray(count))
ALLOCATE(zArray(count))
DO countInside=1,count-1
timeArray(countInside)=timeArrayLocal(countInside)
MbolArray(countInside)=MbolArrayLocal(countInside)
uArray(countInside)=uArrayLocal(countInside)
gArray(countInside)=gArrayLocal(countInside)
rArray(countInside)=rArrayLocal(countInside)
iArray(countInside)=iArrayLocal(countInside)
zArray(countInside)=zArrayLocal(countInside)
END DO
timeArray(count)=10**logTime
MbolArray(count)=Mbol
gArray(count)=g
uArray(count)=uMg+g
rArray(count)=g-gMr
iArray(count)=g-gMi
zArray(count)=g-gMz
DEALLOCATE(uArrayLocal)
DEALLOCATE(gArrayLocal)
DEALLOCATE(rArrayLocal)
DEALLOCATE(iArrayLocal)
DEALLOCATE(zArrayLocal)
DEALLOCATE(MbolArrayLocal)
DEALLOCATE(timeArrayLocal)
END IF
END DO
CLOSE(1)
END SUBROUTINE ReadBCoutput
誰かが私のためにすべてを変換してくれるとは思っていません-これが実際に何をしているのか、Pythonで何をする必要があるのか、何をする必要がないのかを明確にしたいだけです。私は自分で検索することができますが、ここで何を探すべきかについてはちょっと圧倒されます.
本当にありがとう!