aboutsummaryrefslogtreecommitdiff
path: root/synthe/spectrv.for
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2015-02-16 12:40:45 -0500
committerJoseph Hunkeler <jhunkeler@gmail.com>2015-02-16 12:40:45 -0500
commit0373ffdfaaaa3845306ca71243d535fdffd941d4 (patch)
tree194c3c278d7e352e39d555d31aae93c0be2dfc03 /synthe/spectrv.for
parent01b51f73bd06b2d6eabb776ba6cc69e4abfaa0b3 (diff)
downloadkasym-0373ffdfaaaa3845306ca71243d535fdffd941d4.tar.gz
Initial commit
Diffstat (limited to 'synthe/spectrv.for')
-rw-r--r--synthe/spectrv.for438
1 files changed, 438 insertions, 0 deletions
diff --git a/synthe/spectrv.for b/synthe/spectrv.for
new file mode 100644
index 0000000..d59837e
--- /dev/null
+++ b/synthe/spectrv.for
@@ -0,0 +1,438 @@
+ PROGRAM SPECTRV
+c revised 4nov14 constants given D exponents
+c revised 16dec97
+ IMPLICIT REAL*8 (A-H,O-Z)
+ PARAMETER (kw=99)
+ COMMON /ABROSS/ABROSS(kw),TAUROS(kw)
+ COMMON /ABTOT/ABTOT(kw),ALPHA(kw)
+ COMMON /BAL/BAL1(kw,9),AAL1(kw),SAL1(kw),XNFPAL(kw,2),BAL2(kw,1)
+ COMMON /BB/BB1(kw,7),XNFPB(kw,1)
+ COMMON /BC/BC1(kw,14),AC1(kw),SC1(kw),XNFPC(kw,2),BC2(kw,6)
+ COMMON /BCA/BCA1(kw,8),BCA2(kw,5),XNFPCA(kw,2)
+ COMMON /BFE/BFE1(kw,15),AFE1(kw),SFE1(kw),XNFPFE(kw,1)
+ COMMON /BHE/BHE1(kw,29),AHE1(kw),SHE1(kw),BHE2(kw,6),AHE2(kw),
+ 1 SHE2(kw),AHEMIN(kw),SIGHE(kw),XNFPHE(kw,3),XNFHE(kw,2)
+ COMMON /BHYD/BHYD(kw,8),AHYD(kw),SHYD(kw),AH2P(kw),BMIN(kw),
+ 1 AHMIN(kw),SHMIN(kw),SIGH(kw),SIGH2(kw),AHLINE(kw),
+ 2 SHLINE(kw),XNFPH(kw,2),XNFH(kw)
+ COMMON /BK/BK1(kw,8),XNFPK(kw,1)
+ COMMON /BMG/BMG1(kw,11),AMG1(kw),SMG1(kw),XNFPMG(kw,2),BMG2(kw,6)
+ COMMON /BNA/BNA1(kw,8),XNFPNA(kw,1)
+ COMMON /BO/BO1(kw,13),XNFPO(kw,1),BO2(kw,4)
+ COMMON /BSI/BSI1(kw,11),ASI1(kw),SSI1(kw),XNFPSI(kw,2),BSI2(kw,10)
+ COMMON /CONV/DLTDLP(kw),HEATCP(kw),DLRDLT(kw),VELSND(kw),
+ 1 GRDADB(kw),HSCALE(kw),FLXCNV(kw),VCONV(kw),MIXLTH,
+ 2 IFCONV
+ REAL*8 MIXLTH
+ COMMON /ELEM/ABUND(99),ATMASS(99),ELEM(99),XABUND(99),WTMOLE
+ COMMON /FLUX/FLUX,FLXERR(kw),FLXDRV(kw),FLXRAD(kw)
+ COMMON /FREQ/FREQ,FREQLG,EHVKT(kw),STIM(kw),BNU(kw),WAVENO
+ COMMON /FRESET/FRESET(500),RCOSET(500),NULO,NUHI,NUMNU,IFWAVE,
+ 1 WBEGIN,DELTAW
+ COMMON /HEIGHT/HEIGHT(kw)
+ COMMON /IF/IFCORR,IFPRES,IFSURF,IFSCAT,IFMOL,NLTEON,IFOP(20)
+ COMMON /ITER/ITER,IFPRNT(15),IFPNCH(15),NUMITS
+ COMMON /JUNK/TITLE(74),FREQID(6),WLTE,XSCALE
+ COMMON /MUS/ANGLE(20),SURFI(20),NMU
+ COMMON /OPS/ACOOL(kw),ALUKE(kw),AHOT(kw),SIGEL(kw),ALINES(kw),
+ 1 SIGLIN(kw),AXLINE(kw),SIGXL(kw),AXCONT(kw),SIGX(kw),
+ 2 SXLINE(kw),SXCONT(kw)
+ COMMON /OPTOT/ACONT(kw),SCONT(kw),ALINE(kw),SLINE(kw),SIGMAC(kw),
+ 1 SIGMAL(kw)
+ COMMON /PUT/PUT,IPUT
+ COMMON /PZERO/PZERO,PCON,PRADK0,PTURB0,KNU(kw),PRADK(kw),EDENS(kw)
+ REAL*8 KNU
+ COMMON /RAD/ACCRAD(kw),PRAD(kw)
+ COMMON /RHOX/RHOX(kw),NRHOX
+ COMMON /STATE/P(kw),XNE(kw),XNATOM(kw),RHO(kw),PTOTAL(kw)
+ COMMON /TAUSHJ/TAUNU(kw),SNU(kw),HNU(kw),JNU(kw),JMINS(kw)
+ REAL*8 JNU,JMINS
+ COMMON /TEFF/TEFF,GRAV,GLOG
+ COMMON /TEMP/T(kw),TKEV(kw),TK(kw),HKT(kw),TLOG(kw),HCKT(kw),ITEMP
+ COMMON /TURBPR/VTURB(kw),PTURB(kw),TRBFDG,TRBCON,TRBPOW,TRBSND,
+ 1 IFTURB
+C
+ COMMON /LINDAT/WL,E,EP,LABEL(2),LABELP(2),OTHER1(2),OTHER2(2),
+ 1 WLVAC,CENTER,CONCEN, NELION,GAMMAR,GAMMAS,GAMMAW,REF,
+ 2 NBLO,NBUP,ISO1,X1,ISO2,X2,GFLOG,XJ,XJP,CODE,ELO,GF,GS,GR,GW,
+ 3 DWL,DGFLOG,DGAMMAR,DGAMMAS,DGAMMAW,EXTRA1,EXTRA2,EXTRA3
+ 4,ALINEC(kw)
+ REAL*8 LINDAT8(14)
+ REAL*4 LINDAT(28)
+ EQUIVALENCE (LINDAT8(1),WL),(LINDAT(1),NELION)
+ REAL*8 RESOLU,RATIO,RATIOLG,SIGMA2,WLBEG,WLEND
+ REAL*8 WL,E,EP,WLVAC,CENTER,CONCEN
+ REAL*8 LABEL,LABELP,OTHER1,OTHER2
+ REAL*4 GFLOG,XJ,XJP,CODE,GAMMAR,GAMMAS,GAMMAW
+ REAL*4 REF,X1,X2,ELO,GF,GS,GR,GW
+ REAL*4 DWL,DGFLOG,DGAMMAR,DGAMMAS,DGAMMAW,EXTRA1,EXTRA2,EXTRA3
+ REAL*4 ALINEC
+ COMMON /TRASH/WLBEG,WLEND,VT,AIR,N10,IFVAC,NMU2
+ COMMON /CORONO/RHOXCO(42),TCO(42),XNECO(42),SCO(42),TCOLOG(42),
+ 1 VCO(42),ACORON(42),SCORON(42),IFCORO,NCORO
+ COMMON /BONE/BONE(kw)
+ COMMON /PRD/PRDDOP,PRDPOW,ITPRD,NITPRD,SIGPRD(kw),NUPRD,LINPRD
+ REAL*4 TURBV
+C DIMENSION FSCAT(kw),ASYNTH(kw)
+ DIMENSION FSCAT(kw)
+ REAL*4 ASYNTH(kw)
+ DIMENSION FRQEDG(377),WLEDGE(377),CMEDGE(377),CONFRQ(377)
+ DIMENSION DELEDGE(377),HALFEDGE(377)
+ REAL*8 CONTABS(3,377,kw),CONTSCAT(3,377,kw)
+ REAL*8 QCONTABS(1131),QCONTSCAT(1131)
+ DIMENSION BFUDGE(kw)
+C 41=2*20+1 SO NOT EQUAL 40
+ DIMENSION Q(41)
+ DIMENSION SURF(20)
+ DIMENSION APLOT(101)
+ DATA APLOT/101*1H /
+C RHOXJ IS THE DEPTH ABOVE WHICH THE LINE SOURCE FUNCTION IS J
+C R1 IS THE RESIDUAL INTENSITY AT THE BOTTOM OF THE PLOT
+C R2 IS THE RESIDUAL INTENSITY AT THE TOP
+C PRDPOW AND PRDDOP ARE PARTIAL REDISTRIBUTION PARAMETERS
+ READ(25,1)RHOXJ,R1,R101,PH1,PC1,PSI1,PRDDOP,PRDPOW
+ 1 FORMAT(8F10.5)
+ WRITE(6,1)RHOXJ,R1,R101,PH1,PC1,PSI1,PRDDOP,PRDPOW
+ SLOPE=100./(R101-R1)
+ ORIGIN=1.5-R1*SLOPE
+ OPEN(UNIT=5,SHARED,READONLY,TYPE='OLD')
+ CALL READIN(20)
+C IF(IFSURF.EQ.0)THEN
+C WRITE(6,*)' SURFACE FLUX OR SURFACE INTENSITY?'
+C CALL ABORT
+C ENDIF
+C
+ OPEN(UNIT=10,TYPE='OLD',FORM='UNFORMATTED',READONLY,SHARED)
+ READ(10)
+ READ(10)NEDGE,(FRQEDG(IEDGE),WLEDGE(IEDGE),CMEDGE(IEDGE),
+ 1IEDGE=1,NEDGE)
+ READ(10)NCON,(CONFRQ(NU),NU=1,NCON)
+ WLEDGE(1)=ABS(WLEDGE(1))
+ DO 2001 IEDGE=2,NEDGE
+ WLEDGE(IEDGE)=ABS(WLEDGE(IEDGE))
+ HALFEDGE(IEDGE-1)=(WLEDGE(IEDGE-1)+WLEDGE(IEDGE))*.5
+ 2001 DELEDGE(IEDGE-1)=(WLEDGE(IEDGE)-WLEDGE(IEDGE-1))**2*.5
+ READ(10)
+ IREC=0
+ DO 2003 J=1,NRHOX
+ READ(10)
+ READ(10)QCONTABS
+ READ(10)QCONTSCAT
+ READ(10)
+ NU=0
+ DO 2002 IEDGE=1,NEDGE-1
+ NU=NU+1
+ CONTABS(1,IEDGE,J)=QCONTABS(NU)
+ CONTSCAT(1,IEDGE,J)=QCONTSCAT(NU)
+ NU=NU+1
+ CONTABS(2,IEDGE,J)=QCONTABS(NU)
+ CONTSCAT(2,IEDGE,J)=QCONTSCAT(NU)
+ NU=NU+1
+ CONTABS(3,IEDGE,J)=QCONTABS(NU)
+ 2002 CONTSCAT(3,IEDGE,J)=QCONTSCAT(NU)
+ 2003 CONTINUE
+ CLOSE(UNIT=10)
+C
+ IFPRES=0
+ ITEMP=1
+C CALL POPS(1.00D0,12,XNFH)
+C CALL POPS(2.01D0,12,XNFHE)
+C CALL POPS(1.01D0,11,XNFPH)
+C CALL POPS(2.02D0,11,XNFPHE)
+C CALL POPS(5.00D0,11,XNFPB)
+C CALL POPS(6.01D0,11,XNFPC)
+C CALL POPS(8.00D0,11,XNFPO)
+C CALL POPS(11.00D0,11,XNFPNA)
+C CALL POPS(12.01D0,11,XNFPMG)
+C CALL POPS(13.01D0,11,XNFPAL)
+C CALL POPS(14.01D0,11,XNFPSI)
+C CALL POPS(20.01D0,11,XNFPCA)
+C CALL POPS(26.00D0,11,XNFPFE)
+ CLOSE(UNIT=5)
+C IF(IFMOL.EQ.0.)GO TO 445
+CC PATCH TO GET NUMBER DENSITIES BY MULTIPLYING BY PARTITION FUNCTION
+C DO 444 J=1,NRHOX
+C CALL PFSAHA(J,1,1,3,XNFH)
+C XNFH(J)=XNFPH(J,1)*XNFH(J)
+C CALL PFSAHA(J,2,2,13,XNFHE)
+C XNFHE(J,1)=XNFPHE(J,1)*XNFHE(J,1)
+C XNFHE(J,2)=XNFPHE(J,2)*XNFHE(J,2)
+C 444 CONTINUE
+C 445 CONTINUE
+CC CALL W(6HXNFPH ,XNFPH ,80)
+CC CALL W(6HXNFPHE,XNFPHE,120)
+CC CALL W(6HXNFPC ,XNFPC ,80)
+CC CALL W(6HXNFPMG,XNFPMG,80)
+CC CALL W(6HXNFPAL,XNFPAL,80)
+CC CALL W(6HXNFPSI,XNFPSI,80)
+ DO 4 J=1,NRHOX
+ BONE(J)=1.
+ BFUDGE(J)=BHYD(J,1)**PH1*(BC1(J,1)/BC2(J,1))**PC1*
+ 1(BSI1(J,1)/BSI2(J,1))**PSI1
+ IF(RHOXJ.EQ.0.)GO TO 4
+ FSCAT(J)=0.
+ IF(RHOX(J)/RHOXJ.LT.100.)FSCAT(J)=EXP(-RHOX(J)/RHOXJ)
+ 4 CONTINUE
+ CALL W(6HFSCAT ,FSCAT,NRHOX)
+ CALL W(6HBFUDGE,BFUDGE,NRHOX)
+ 5 CONTINUE
+ IFPRES=0
+ ITEMP=1
+ REWIND 7
+ REWIND 9
+ READ(9)WLBEG,RESOLU,WLEND,LENGTH,N,LINOUT,TURBV,IFVAC
+ READ (9)NEDGE,(FRQEDG(IEDGE),WLEDGE(IEDGE),CMEDGE(IEDGE),
+ 1IEDGE=1,NEDGE)
+C PATCH TO PASS IFVAC TO PLOTSY
+ TITLE(74)=1HA
+ IF(IFVAC.EQ.1)TITLE(74)=1HV
+ N30=N+30
+ WRITE(6,11)WLBEG,RESOLU,WLEND,LENGTH,N
+ 11 FORMAT(7H WLBEG=,F10.4,10H RESOLU=,F10.1,9H WLEND=,F10.4,
+ 110H LENGTH=,I7,9H NRHOX=,I2)
+ N10=0
+ DO 6 J=1,NRHOX
+ 6 VTURB(J)=VTURB(J)+TURBV*1.E5
+ RATIO=1.+1./RESOLU
+ RATIOLG=DLOG(RATIO)
+ IXWL=DLOG(WLBEG)/RATIOLG
+ WBEGIN=DEXP(IXWL*RATIOLG)
+ IF(WBEGIN.LT.WLBEG)THEN
+ IXWL=IXWL+1
+ WBEGIN=DEXP(IXWL*RATIOLG)
+ ENDIF
+ DELTAW=RESOLU
+ NULO=1
+ NUHI=LENGTH
+ NUMNU=LENGTH
+ WLBEG=WBEGIN
+ WLEND=WBEGIN*RATIO**(NUHI-1)
+ WRITE(6,31)NUMNU,DELTAW,WLBEG,WLEND
+ 31 FORMAT(I10,3F13.4)
+ IF(IFSURF.EQ.1)WRITE(6,41)
+ 41 FORMAT(13H SURFACE FLUX)
+ IF(IFSURF.EQ.2)WRITE(6,42)NMU,(ANGLE(MU),MU=1,NMU)
+ 42 FORMAT(18H SURFACE INTENSITY,I3/20F6.3)
+ NMU2=NMU*2
+C IF(PRDDOP.GT.0.)CALL PRDJNU(RHOXJ)
+ IEDGE=1
+ DO 25 NU=NULO,NUHI
+C NUPRD=NU
+ WAVE=WBEGIN*RATIO**(NU-1)
+ 2004 IF(WAVE.LT.WLEDGE(IEDGE+1))GO TO 2005
+ IEDGE=IEDGE+1
+ GO TO 2004
+C C1=(WAVE-WAVE2)*(WAVE-WAVE3)/(WAVE1-WAVE2)/(WAVE1-WAVE3)
+C C2=(WAVE-WAVE1)*(WAVE-WAVE3)/(WAVE2-WAVE1)/(WAVE2-WAVE3)
+C C3=(WAVE-WAVE1)*(WAVE-WAVE2)/(WAVE3-WAVE1)/(WAVE3-WAVE2)
+ 2005 C1=(WAVE-HALFEDGE(IEDGE))*(WAVE-WLEDGE(IEDGE+1))/DELEDGE(IEDGE)
+ C2=(WLEDGE(IEDGE)-WAVE)*(WAVE-WLEDGE(IEDGE+1))*2./DELEDGE(IEDGE)
+ C3=(WAVE-WLEDGE(IEDGE))*(WAVE-HALFEDGE(IEDGE))/DELEDGE(IEDGE)
+ DO 2006 J=1,NRHOX
+ ACONT(J)=10.**(C1*CONTABS(1,IEDGE,J)+C2*CONTABS(2,IEDGE,J)+
+ 1 C3*CONTABS(3,IEDGE,J))
+ 2006 SIGMAC(J)=10.**(C1*CONTSCAT(1,IEDGE,J)+C2*CONTSCAT(2,IEDGE,J)+
+ 1 C3*CONTSCAT(3,IEDGE,J))
+C
+ FREQ=2.99792458D17/WAVE
+ FREQ15=FREQ/1.D15
+ FREQLG= LOG(FREQ)
+ DO 20 J=1,NRHOX
+ EHVKT(J)=EXP(-FREQ*HKT(J))
+ STIM(J)=1.-EHVKT(J)
+ BNU(J)=1.47439D-02*FREQ15**3*EHVKT(J)/STIM(J)
+ ALINE(J)=0.
+ SIGMAL(J)=0.
+ SLINE(J)=BNU(J)
+ 20 SCONT(J)=BNU(J)
+ CALL JOSH(IFSCAT,IFSURF)
+ DO 21 MU=1,NMU
+ IF(IFSURF.EQ.1)SURF(MU)=HNU(1)
+ IF(IFSURF.EQ.2)SURF(MU)=SURFI(MU)
+ 21 CONTINUE
+C IF(IFOP(14).EQ.1)CALL HLINOP
+C IF(IFOP(17).EQ.1)CALL XLINOP
+ IF(NU.EQ.1)WRITE(6,33)
+ 33 FORMAT(1H1)
+ READ(9)ASYNTH
+ DO 241 J=1,NRHOX
+C ALINE(J)=AHLINE(J)+ASYNTH(J)*(1.-FSCAT(J))+AXLINE(J)
+ ALINE(J)=ASYNTH(J)*(1.-FSCAT(J))
+C SLINE(J)=BNU(J)
+C ASSUMES BUP=1
+C SSYNTH=BNU(J)*STIM(J)/(BFUDGE(J)-EHVKT(J))
+ SLINE(J)=BNU(J)*STIM(J)/(BFUDGE(J)-EHVKT(J))
+C IF(ALINE(J).GT.0.)SLINE(J)=(AHLINE(J)*SHLINE(J)+ASYNTH(J)*SSYNTH*
+C 1(1.-FSCAT(J))+AXLINE(J)*SXLINE(J))/ALINE(J)
+ 241 SIGMAL(J)=ASYNTH(J)*FSCAT(J)
+ CALL JOSH(1,IFSURF)
+
+ 24 DO 250 MU=1,NMU
+ IF(IFSURF.EQ.1)RESID=HNU(1)/SURF(MU)
+ IF(IFCORO.EQ.1)CALL CORINT
+ IF(IFSURF.EQ.2)RESID=SURFI(MU)/SURF(MU)
+ IF(NU.GT.ABS(LINOUT))GO TO 230
+ IF(MU.GT.1)GO TO 230
+ IRESID=RESID*1000.+.5
+ IPLOT=RESID*SLOPE+ORIGIN
+ IPLOT=MAX0(1,MIN0(101,IPLOT))
+ APLOT(IPLOT)=1HX
+ WRITE(6,2300)NU,WAVE,IRESID,APLOT
+ 2300 FORMAT(1H ,I5,F11.4,I7,101A1)
+ APLOT(IPLOT)=(1H )
+ 230 CONTINUE
+ Q(MU)=RESID*SURF(MU)
+ Q(MU+NMU)=SURF(MU)
+ 250 CONTINUE
+ IF(NU.GT.1)GO TO 251
+ REWIND 7
+ WRITE(7)TEFF,GLOG,TITLE,WBEGIN,DELTAW,NUMNU,IFSURF,NMU,ANGLE,
+ 1NEDGE,WLEDGE
+ 251 CONTINUE
+ WRITE(7)(Q(I),I=1,NMU2)
+ 25 CONTINUE
+C
+ IF(NMU.GT.10)IFSURF=1
+ NMU=1
+ MU=1
+ READ(9)NLINES
+ N910=NLINES+N10
+ WRITE(7)N910
+ WRITE(6,80)NLINES,N10,N910
+ 80 FORMAT(3I10)
+ IF(NLINES.EQ.0)GO TO 100
+ WAVOLD=0.
+ IEDGE=1
+ DO 90 ILINE=1,NLINES
+ READ(9)LINDAT8,LINDAT,ALINEC
+ WAVE=WLVAC
+ IF(WAVE.LT.WAVOLD)IEDGE=1
+ WAVOLD=WAVE
+ 3003 IF(WAVE.LT.WLEDGE(IEDGE+1))GO TO 3005
+ IEDGE=IEDGE+1
+ GO TO 3003
+ 3005 C1=(WAVE-HALFEDGE(IEDGE))*(WAVE-WLEDGE(IEDGE+1))/DELEDGE(IEDGE)
+ C2=(WLEDGE(IEDGE)-WAVE)*(WAVE-WLEDGE(IEDGE+1))*2./DELEDGE(IEDGE)
+ C3=(WAVE-WLEDGE(IEDGE))*(WAVE-HALFEDGE(IEDGE))/DELEDGE(IEDGE)
+ DO 3006 J=1,NRHOX
+ ACONT(J)=10.**(C1*CONTABS(1,IEDGE,J)+C2*CONTABS(2,IEDGE,J)+
+ 1 C3*CONTABS(3,IEDGE,J))
+ 3006 SIGMAC(J)=10.**(C1*CONTSCAT(1,IEDGE,J)+C2*CONTSCAT(2,IEDGE,J)+
+ 1 C3*CONTSCAT(3,IEDGE,J))
+C
+ FREQ=2.99792458D17/WAVE
+ FREQ15=FREQ/1.D15
+ FREQLG= LOG(FREQ)
+ DO 81 J=1,NRHOX
+ EHVKT(J)=EXP(-FREQ*HKT(J))
+ STIM(J)=1.-EHVKT(J)
+ SIGPRD(J)=0.
+ BNU(J)=1.47439D-02*FREQ15**3*EHVKT(J)/STIM(J)
+ ALINE(J)=0.
+ SIGMAL(J)=0.
+ SLINE(J)=BNU(J)
+ 81 SCONT(J)=BNU(J)
+ CALL JOSH(1,IFSURF)
+ IF(IFSURF.EQ.1)CONCEN=HNU(1)
+ IF(IFSURF.EQ.2)CONCEN=SURFI(MU)
+ DO 82 J=1,NRHOX
+ ALINE(J)=AHLINE(J)+ALINEC(J)*(1.-FSCAT(J))+AXLINE(J)
+ SLINE(J)=BNU(J)
+C ASSUMES BUP=1
+ SLINEC=BNU(J)*STIM(J)/(BFUDGE(J)-EHVKT(J))
+ IF(ALINE(J).GT.0.)SLINE(J)=(AHLINE(J)*SHLINE(J)+ALINEC(J)*SLINEC*
+ 1(1.-FSCAT(J))+AXLINE(J)*SXLINE(J))/ALINE(J)
+ 82 SIGMAL(J)=ALINEC(J)*FSCAT(J)
+ CALL JOSH(1,IFSURF)
+ IF(IFSURF.EQ.1)CENTER=HNU(1)
+ IF(IFSURF.EQ.2)CENTER=SURFI(MU)
+ RESID=CENTER/CONCEN
+C WRITE(6,99)WL,GFLOG,XJ,E,XJP,EP,CODE,LABEL,LABELP,WLVAC,RESID,
+C BCENTER,CONCEN,
+C 1WL,NELION,GR,GS,GW,REF,NBLO,NBUP,ISO1,X1,ISO2,X2,OTHER1,OTHER2,
+C 2DWL,DGFLOG,GAMMAR,GAMMAS,GAMMAW
+ 99 FORMAT(1H0,F10.4,F7.3,F5.1,F12.3,F5.1,F12.3,F9.2,1X,A8,A2,A8,A2,
+ 1F12.4,F9.3,1P2E11.3/
+ 2 1X,0PF10.4,I4,F6.2,F6.2,F6.2,A4,I2,I2,I3,F7.3,I3,F7.3,1X,
+ 3A8,A2,A8,A2,F7.4,F7.3,3F6.2)
+ IF(WL.GT.0.)WRITE(17,98)WL,GFLOG,XJ,E,XJP,EP,CODE,LABEL,LABELP,
+ 1WL,NELION,GR,GS,GW,REF,NBLO,NBUP,ISO1,X1,ISO2,X2,OTHER1,OTHER2,
+ 2DWL,DGFLOG,DGAMMAR,DGAMMAS,DGAMMAW
+ IF(WL.LT.0.)WRITE(17,98)WL,GFLOG,XJ,E,XJP,EP,CODE,LABEL,LABELP,
+ 1WL,NELION,GR,GS,GW,REF,NBLO,NBUP,ISO1,X1,ISO2,X2,OTHER1,OTHER2,
+ 2DWL,DGFLOG,DGAMMAR,DGAMMAS,DGAMMAW,WL
+ 98 FORMAT(F10.4,F7.3,F5.1,F12.3,F5.1,F12.3,F9.2,A8,A2,A8,A2/
+ 1 0PF10.4,I4,F6.2,F6.2,F6.2,A4,I2,I2,I3,F7.3,I3,F7.3,
+ 2A8,A2,A8,A2,F7.4,F7.3,3F6.2,F10.4)
+ WRITE(7)LINDAT8,LINDAT
+ 90 CONTINUE
+ 100 CONTINUE
+ CLOSE(UNIT=9,DISPOSE='DELETE')
+ IF(N10.EQ.0)GO TO 111
+C N20=N10
+ REWIND 20
+ WAVOLD=0.
+ IEDGE=1
+ DO 110 ILINE=1,N10
+ READ(20)LINDAT8,LINDAT
+ WAVE=WLVAC
+ IF(WAVE.LT.WAVOLD)IEDGE=1
+ WAVOLD=WAVE
+ 4003 IF(WAVE.LT.WLEDGE(IEDGE+1))GO TO 4005
+ IEDGE=IEDGE+1
+ GO TO 4003
+ 4005 C1=(WAVE-HALFEDGE(IEDGE))*(WAVE-WLEDGE(IEDGE+1))/DELEDGE(IEDGE)
+ C2=(WLEDGE(IEDGE)-WAVE)*(WAVE-WLEDGE(IEDGE+1))*2./DELEDGE(IEDGE)
+ C3=(WAVE-WLEDGE(IEDGE))*(WAVE-HALFEDGE(IEDGE))/DELEDGE(IEDGE)
+ DO 4006 J=1,NRHOX
+ ACONT(J)=10.**(C1*CONTABS(1,IEDGE,J)+C2*CONTABS(2,IEDGE,J)+
+ 1 C3*CONTABS(3,IEDGE,J))
+ 4006 SIGMAC(J)=10.**(C1*CONTSCAT(1,IEDGE,J)+C2*CONTSCAT(2,IEDGE,J)+
+ 1 C3*CONTSCAT(3,IEDGE,J))
+C
+ FREQ=2.99792458D17/WAVE
+ FREQ15=FREQ/1.D15
+ FREQLG= LOG(FREQ)
+ DO 101 J=1,NRHOX
+ EHVKT(J)=EXP(-FREQ*HKT(J))
+ STIM(J)=1.-EHVKT(J)
+ ALINE(J)=0.
+ SIGMAL(J)=0.
+ BNU(J)=1.47439D-02*FREQ15**3*EHVKT(J)/STIM(J)
+ SLINE(J)=BNU(J)
+ 101 SCONT(J)=BNU(J)
+ CALL JOSH(1,IFSURF)
+ IF(IFSURF.EQ.1)CONCEN=HNU(1)
+ IF(IFSURF.EQ.2)CONCEN=SURFI(MU)
+ CALL LINCEN
+ IF(IFCORO.EQ.1)GO TO 102
+ CALL JOSH(1,IFSURF)
+ IF(IFSURF.EQ.1)CENTER=HNU(1)
+ IF(IFSURF.EQ.2)CENTER=SURFI(MU)
+ GO TO 103
+ 102 SURFI(MU)=SURF(MU)
+ CALL CORINT
+ CENTER=SURFI(MU)
+ 103 CONCEN=SURF(MU)
+ RESID=CENTER/CONCEN
+c 29oct07 replaced missing comma after OTHER2
+ WRITE(6,99)WL,GFLOG,XJ,E,XJP,EP,CODE,LABEL,LABELP,WLVAC,RESID,
+ BCENTER,CONCEN,
+ 1WL,NELION,GR,GS,GW,REF,NBLO,NBUP,ISO1,X1,ISO2,X2,OTHER1,OTHER2,
+ 2DWL,DGFLOG,DGAMMAR,DGAMMAS,DGAMMAW
+ WRITE(7)LINDAT8,LINDAT
+ 110 CONTINUE
+ CLOSE(UNIT=20,DISPOSE='DELETE')
+ 111 CALL EXIT
+ END
+ SUBROUTINE LINCEN
+ RETURN
+ END
+ SUBROUTINE CORINT
+ RETURN
+ END
+ SUBROUTINE ATLAS7
+ END
+ SUBROUTINE PRDJNU
+ RETURN
+ END