PROGRAM SYNSPEC_QUB *+ * * Program. * SYNSPEC_QUB * * Purpose. * Convert linelist in synspec format to spectrum format * * Method. * Extract required lines from Hubeny's synspec linelists. * Read the lines in line by line and convert to appropriate * units and write out a new file. * * Author. * C.S.Jeffery * * History. * 14-MAR-1996: original (s2s) * 13-Nov-2001: convert to QUB format 2 * * Requirements. * STR: string handling library * *- CHARACTER REF*20 CHARACTER SYNFILE*60 CHARACTER QUBFILE*60 PARAMETER ( CC = 2.997925E18 ) PARAMETER ( FOURPI = 12.5663706 ) *. LIN = 0 LOUT = 0 CALL STR_DEF ( LIN, LOUT ) * Select input data file. 10 CALL STR_GETC : ('File containing atomic data (synspec format)', SYNFILE) OPEN (2,FILE=SYNFILE,STATUS='OLD',ERR=998) * Select output data file. 20 CALL STR_GETC : ('File to contain atomic data (spectrum format)', QUBFILE) IDECK = 0 IF (QUBFILE(1:10).NE.' ') THEN OPEN (1,FILE=QUBFILE,STATUS='NEW',ERR=997) IDECK = 1 ENDIF CALL STR_LF(1) WRITE (6,1000) * Read the data from a synspec/atlas format file. 100 READ (2,1002,END=999) : WLNM,IZ,IN,GFLOG,ELO,AJLO,EHI,AJHI,GAMR,GAMS,GAMW,INEXT 1002 FORMAT (F10.0,I3,1X,I2,F7.0,2(F12.0,F4.0),3F7.0,I2) * Transform the values. WL = 10.*WLNM IZ = IZ II = IN + 1 GF = GFLOG IF (GAMR.EQ.0.0) GAMR = -99.0 IF (GAMW.EQ.0.0) GAMW = -99.0 IF (GAMS.EQ.0.0) GAMS = -99.0 EXC = ELO / 8065.46 ZMULT = 0.00 REF = 'Hub 95/Hub 95/Hub 95' * Write out the results. IF (IDECK.EQ.1) THEN WRITE (1,1001) IZ,II,WL,GF,GAMS,GAMR,GAMW,EXC,ZMULT,REF ELSE WRITE (*,1001) IZ,II,WL,GF,GAMS,GAMR,GAMW,EXC,ZMULT,REF ENDIF 1000 FORMAT (/' Z I lambda gf Game Gamr exc ') 1001 FORMAT (2I3,F9.3,F7.3,4F8.3,F7.2,A30) GOTO 100 * shut down 997 WRITE(*,*) 'File exists' GOTO 20 998 WRITE(*,*) 'Input file not found' GOTO 10 999 CLOSE (1) END