PROGRAM LTE_CONV ! ! Adapted from ATDATA to covert atomic data to new format ! ! a) converts linelist without atoms.d or refs.d .... ! b) converts old list including above ! ! > f77 -o lte_conv lte_conv.f ! ! ! Define character streams ! LOGICAL DEBUG CHARACTER*10 ION,IONIN*50,IONOUT*50,SOURCE*30,REF*80 INTEGER ISP,NION REAL WAVE,GF,EDAM,RDAM,EXCIT,VDW,ZMULT ! ! Define NINPUT and NOUTPUT and DEBUG options ! NINP=1 NOUT=2 DEBUG=.FALSE. NDEBUG=99 ! ! Input and Output files ! WRITE(6,200) 200 FORMAT( 'FILE TO CONVERT') READ(*,'(A20)')IONIN OPEN(UNIT=NINP,FILE=IONIN,STATUS='OLD') WRITE(6,201) 201 FORMAT( 'OUTPUT FILE ') READ(*,'(A20)')IONOUT OPEN(UNIT=NOUT,FILE=IONOUT,STATUS='UNKNOWN') ! ! c is velocity of light in A/s ! C= 2.9978E18 PIE= 3.14159 VDW = -99. ! ! read atomic data header, if it exists, and forget about it ! READ(NINP,'(A10)',END=20) IONIN IF (IONIN(1:10).EQ.' HYDROGEN') THEN DO I=1,41 READ(NINP,*) ENDDO ELSE REWIND (NINP) ENDIF ! ! copy data line by line ! DO I=1,1000000 READ(NINP,'(2I3,F10.3,3E9.2,2F7.2,A30)',END=20) : ISP,NION,WAVE,GF, : EDAM,RDAM,EXCIT,ZMULT,SOURCE IF (ISP.EQ.-1 .AND. NION.EQ.0) GOTO 10 ! ! Debug ! IF(DEBUG) THEN WRITE(NDEBUG,'(2I3,F10.3,3E10.3,F10.2,F7.2,A30)') : ISP,NION,WAVE,GF,EDAM,RDAM, : EXCIT,ZMULT,SOURCE ENDIF ! ! gf --> log (gf) ! GF=ALOG10(GF) ! ! change radiative and electron damping widths to Gammas ! electron damping widths are for unit electron density ! EDAM = 4*PIE*C/(WAVE*WAVE)*EDAM EDAM = 1.E-15 * EDAM RDAM = 4*PIE*C/(WAVE*WAVE)*RDAM ! ! change to logarithmic format ! IF(EDAM.GT.0.0) THEN EDAM = ALOG10(EDAM) ELSE EDAM = -99. ENDIF IF(RDAM.GT.0.0) THEN RDAM = ALOG10(RDAM) ELSE RDAM = -99. ENDIF ! ! output line ! WRITE(NOUT,'(2I3,F9.3,F7.3,4F8.3,F7.2,A30)') : ISP,NION,WAVE,GF,EDAM,RDAM,VDW, : EXCIT,ZMULT,SOURCE ENDDO ! ! ! ! write end flag and references ! 10 NLINES=I-1 WRITE(NOUT,'(2I3,F9.3,F7.3,4F8.3,F7.2,A30)') : ISP,NION,WAVE,GF,EDAM,RDAM,VDW, : EXCIT,ZMULT,SOURCE DO I = 1,999 READ(NINP,'(A80)',END=20) REF WRITE(NOUT,'(A80)') REF ENDDO ! ! close the files ! 20 CLOSE(UNIT=NINP) CLOSE(UNIT=NOUT) END