PROGRAM MAIN IMPLICIT DOUBLE PRECISION (A-H,O-Z) COMMON /SYMTAB/ SYMBAT(0:92) CHARACTER*2 SYMBAT DATA SYMBAT/ 'XX','H ','He','Li','Be','B ','C ','N ','O ' - ,'F ','Ne','Na','Mg','Al','Si','P ','S ','Cl','Ar','K ' - ,'Ca','Sc','Ti','V ','Cr','Mn','Fe','Co','Ni','Cu','Zn' - ,'Ga','Ge','As','Se','Br','Kr','Rb','Sr','Y ','Zr','Nb' - ,'Mo','Tc','Ru','Rh','Pd','Ag','Cd','In','Sn','Sb','Te' - ,'I ','Xe','Cs','Ba','La','Ce','Pr','Nd','Pm','Sm','Ee' - ,'Gd','Tb','Dy','Ho','Er','Tm','Y ','Lu','Hf','Ta','W ' - ,'Re','Os','Ir','Pt','Au','Hg','Tl','Pb','Bi','Po','At' - ,'Rn','Fr','Ra','Ac','Th','Pa','U '/ C optical Bohr spectra WRITE(6,*) ' we calculate the series n -> n+m ' WRITE(6,*) ' for elements No Z ' WRITE(6,*) ' the Rydberg constant is set to 109700 cm-1' WRITE(6,*) 100 CONTINUE WRITE(6,*) ' give Z (Z=0 stops the program) ' READ(5,*) NZ IF (NZ.GT.92) THEN WRITE(6,*) ' we are limited to Uranium (Z=92)' GO TO 100 END IF IF (NZ.EQ.0) THEN WRITE(6,*) ' OK, we stop here ' STOP END IF WRITE(6,*) ' give N' READ(5,*) N1 WRITE(6,*) WRITE(6,9000) SYMBAT(NZ),NZ-1,N1 9000 FORMAT(' SERIES FOR ELEMENT : ',A2,I4,'+ and N = ',I4) WRITE(6,*) CALL CALCTR(NZ,N1) GO TO 100 C END SUBROUTINE CALCTR(NZ,N1) IMPLICIT DOUBLE PRECISION (A-H,O-Z) N2=N1+1 XLAMBD1=BOHR(NZ,N1,N2) N2=130000 XLAMBD2=BOHR(NZ,N1,N2) write(6,9000) n1,xlambd1,xlambd2 9000 FORMAT(' series starting from n = ',I3 - ,/,' longest lambda : ',F12.2,' Angstroms ' - ,/,' limit of series : ',F12.2,' Angstroms ') DO N2=N1+1,N1+30 XLAMB=BOHR(NZ,N1,N2) WRITE(6,9001) N1,N2,XLAMB END DO DO N2=N1+50,N1+500,50 XLAMB=BOHR(NZ,N1,N2) WRITE(6,9001) N1,N2,XLAMB END DO 9001 FORMAT(' TRANSITION ',I4,' -> ',I4,' : LAMBDA = ',F10.2 $ ,' ANGSTROM') RETURN END FUNCTION BOHR(NZ,N1,N2) IMPLICIT DOUBLE PRECISION (A-H,O-Z) R=109700.D0 BOHR=DBLE(NZ*NZ)*(1.D0/(DBLE(N1*N1))-1.D0/DBLE(N2*N2))*R BOHR=1.D8/ABS(BOHR) RETURN END