SpectraRust/synspec/extracted/rte.f
2026-03-19 14:05:33 +08:00

595 lines
16 KiB
Fortran

SUBROUTINE RTE
C
C solution of the radiative transfer equation by Feautrier method
C
INCLUDE 'PARAMS.FOR'
INCLUDE 'MODELP.FOR'
INCLUDE 'SYNTHP.FOR'
INCLUDE 'LINDAT.FOR'
DIMENSION D(3,3,MDEPTH),ANU(3,MDEPTH),AANU(MDEPTH),DDD(MDEPTH),
* AA(3,3),BB(3,3),CC(3,3),VL(3),AMU(3),WTMU(3),
* DT(MDEPTH),TAU(MDEPTH),
* RDD(MDEPTH),FKK(MDEPTH),ST0(MDEPTH),SS0(MDEPTH),
* RINT(MDEPTH,MMU)
CHARACTER*4 TYPION(9)
COMMON/RTEOPA/CH(MFREQ,MDEPTH),ET(MFREQ,MDEPTH),
* SC(MFREQ,MDEPTH)
COMMON/EMFLUX/FLUX(MFREQ),FLUXC(MFREQC)
COMMON/BLAPAR/RELOP,SPACE0,CUTOF0,TSTD,DSTD,ALAMC
COMMON/CTRFUN/CINT1(MDEPTH),CINT2(MDEPTH),
* CTRI(MDEPTH),CTRR(MDEPTH),XKAR(MDEPTH),
* ABXLI(MFREQ),EMXLI(MFREQ),IJCTR(MFREQ)
COMMON/REFDEP/IREFD(MFREQ)
COMMON/CENTRL/ZND,IFZ0
PARAMETER (UN=1.D0, HALF=0.5D0)
PARAMETER (THIRD=UN/3., QUART=UN/4., SIXTH=UN/6.D0)
PARAMETER (TAUREF = 0.6666666666667)
DATA AMU/.887298334620742D0,.5D0,.112701665379258D0/,
1 WTMU/.277777777777778D0,.444444444444444D0,.277777777777778D0
1 /
DATA TYPION /' I ',' II ',' III',' IV ',' V ',
* ' VI ',' VII','VIII',' IX '/
C
NMU=3
ND1=ND-1
C
C Overall loop over frequencies
C
DO IJ=1,NFREQ
TAUMIN=CH(IJ,1)/DENS(1)*DM(1)*HALF
TAU(1)=TAUMIN
IREF=1
DO I=1,ND1
DT(I)=(DM(I+1)-DM(I))*(CH(IJ,I+1)/DENS(I+1)+CH(IJ,I)/DENS(I))*
* HALF
ST0(I)=ET(IJ,I)/CH(IJ,I)
SS0(I)=-SC(IJ,I)/CH(IJ,I)
TAU(I+1)=TAU(I)+DT(I)
IF(TAU(I).LE.TAUREF.AND.TAU(I+1).GT.TAUREF) IREF=I
END DO
IREFD(IJ)=IREF
ST0(ND)=ET(IJ,ND)/CH(IJ,ND)
SS0(ND)=-SC(IJ,ND)/CH(IJ,ND)
FR=FREQ(IJ)
BNU=BN*(FR*1.E-15)**3
PLAND=BNU/(EXP(HK*FR/TEMP(ND ))-UN)
DPLAN=BNU/(EXP(HK*FR/TEMP(ND-1))-UN)
DPLAN=(PLAND-DPLAN)/DT(ND1)
C
C +++++++++++++++++++++++++++++++++++++++++
C FIRST PART - VARIABLE EDDINGTON FACTORS
C +++++++++++++++++++++++++++++++++++++++++
C
ALB1=0.
DO I=1,NMU
C
C ************************
C UPPER BOUNDARY CONDITION
C ************************
C
ID=1
DTP1=DT(1)
Q0=0.
P0=0.
C
C allowance for non-zero optical depth at the first depth point
C
TAMM=TAUMIN/AMU(I)
IF(TAMM.GT.0.01) THEN
P0=UN-EXP(-TAMM)
ELSE
P0=TAMM*(UN-HALF*TAMM*(UN-TAMM*THIRD*(UN-QUART*TAMM)))
END IF
EX=UN-P0
Q0=Q0+P0*AMU(I)*WTMU(I)
C
DIV=DTP1/AMU(I)*THIRD
VL(I)=DIV*(ST0(ID)+HALF*ST0(ID+1))+ST0(ID)*P0
DO J=1,NMU
BB(I,J)=SS0(ID)*WTMU(J)*(DIV+P0)-ALB1*WTMU(J)
CC(I,J)=-HALF*DIV*SS0(ID+1)*WTMU(J)
END DO
BB(I,I)=BB(I,I)+AMU(I)/DTP1+UN+DIV
CC(I,I)=CC(I,I)+AMU(I)/DTP1-HALF*DIV
ANU(I,ID)=0.
END DO
C
C Matrix inversion: instead of calling MATINV, a very fast inlined
C routine MINV3 for a specific 3 x 3 matrix inversion
C
C CALL MATINV(BB,NMU,3)
C
C ******************************
BB(2,1)=BB(2,1)/BB(1,1)
BB(2,2)=BB(2,2)-BB(2,1)*BB(1,2)
BB(2,3)=BB(2,3)-BB(2,1)*BB(1,3)
BB(3,1)=BB(3,1)/BB(1,1)
BB(3,2)=(BB(3,2)-BB(3,1)*BB(1,2))/BB(2,2)
BB(3,3)=BB(3,3)-BB(3,1)*BB(1,3)-BB(3,2)*BB(2,3)
C
BB(3,2)=-BB(3,2)
BB(3,1)=-BB(3,1)-BB(3,2)*BB(2,1)
BB(2,1)=-BB(2,1)
C
BB(3,3)=UN/BB(3,3)
BB(2,3)=-BB(2,3)*BB(3,3)/BB(2,2)
BB(2,2)=UN/BB(2,2)
BB(1,3)=-(BB(1,2)*BB(2,3)+BB(1,3)*BB(3,3))/BB(1,1)
BB(1,2)=-BB(1,2)*BB(2,2)/BB(1,1)
BB(1,1)=UN/BB(1,1)
C
BB(1,1)=BB(1,1)+BB(1,2)*BB(2,1)+BB(1,3)*BB(3,1)
BB(1,2)=BB(1,2)+BB(1,3)*BB(3,2)
BB(2,1)=BB(2,2)*BB(2,1)+BB(2,3)*BB(3,1)
BB(2,2)=BB(2,2)+BB(2,3)*BB(3,2)
BB(3,1)=BB(3,3)*BB(3,1)
BB(3,2)=BB(3,3)*BB(3,2)
C ******************************
C
DO I=1,NMU
DO J=1,NMU
S=0.
DO K=1,NMU
S=S+BB(I,K)*CC(K,J)
END DO
D(I,J,ID)=S
ANU(I,1)=ANU(I,1)+BB(I,J)*VL(J)
END DO
END DO
C
C *******************
C NORMAL DEPTH POINTS
C *******************
C
DO ID=2,ND1
DTM1=DTP1
DTP1=DT(ID)
DT0=HALF*(DTM1+DTP1)
AL=UN/DTM1/DT0
GA=UN/DTP1/DT0
BE=AL+GA
A=(UN-HALF*AL*DTP1*DTP1)*SIXTH
C=(UN-HALF*GA*DTM1*DTM1)*SIXTH
B=UN-A-C
VL0=A*ST0(ID-1)+B*ST0(ID)+C*ST0(ID+1)
DO I=1,NMU
DO J=1,NMU
AA(I,J)=-A*SS0(ID-1)*WTMU(J)
CC(I,J)=-C*SS0(ID+1)*WTMU(J)
BB(I,J)=B*SS0(ID)*WTMU(J)
END DO
END DO
DO I=1,NMU
DIV=AMU(I)**2
VL(I)=VL0
AA(I,I)=AA(I,I)+DIV*AL-A
CC(I,I)=CC(I,I)+DIV*GA-C
BB(I,I)=BB(I,I)+DIV*BE+B
END DO
DO I=1,NMU
S1=0.
DO J=1,NMU
S=0.
S1=S1+AA(I,J)*ANU(J,ID-1)
DO K=1,NMU
S=S+AA(I,K)*D(K,J,ID-1)
END DO
BB(I,J)=BB(I,J)-S
END DO
VL(I)=VL(I)+S1
END DO
C
C Matrix inversion: instead of calling MATINV, a very fast inlined
C routine MINV3 for a specific 3 x 3 matrix inversion
C
C CALL MATINV(BB,NMU,3)
C
C ******************************
BB(2,1)=BB(2,1)/BB(1,1)
BB(2,2)=BB(2,2)-BB(2,1)*BB(1,2)
BB(2,3)=BB(2,3)-BB(2,1)*BB(1,3)
BB(3,1)=BB(3,1)/BB(1,1)
BB(3,2)=(BB(3,2)-BB(3,1)*BB(1,2))/BB(2,2)
BB(3,3)=BB(3,3)-BB(3,1)*BB(1,3)-BB(3,2)*BB(2,3)
C
BB(3,2)=-BB(3,2)
BB(3,1)=-BB(3,1)-BB(3,2)*BB(2,1)
BB(2,1)=-BB(2,1)
C
BB(3,3)=UN/BB(3,3)
BB(2,3)=-BB(2,3)*BB(3,3)/BB(2,2)
BB(2,2)=UN/BB(2,2)
BB(1,3)=-(BB(1,2)*BB(2,3)+BB(1,3)*BB(3,3))/BB(1,1)
BB(1,2)=-BB(1,2)*BB(2,2)/BB(1,1)
BB(1,1)=UN/BB(1,1)
C
BB(1,1)=BB(1,1)+BB(1,2)*BB(2,1)+BB(1,3)*BB(3,1)
BB(1,2)=BB(1,2)+BB(1,3)*BB(3,2)
BB(2,1)=BB(2,2)*BB(2,1)+BB(2,3)*BB(3,1)
BB(2,2)=BB(2,2)+BB(2,3)*BB(3,2)
BB(3,1)=BB(3,3)*BB(3,1)
BB(3,2)=BB(3,3)*BB(3,2)
C ******************************
C
DO I=1,NMU
ANU(I,ID)=0.
DO J=1,NMU
S=0.
DO K=1,NMU
S=S+BB(I,K)*CC(K,J)
END DO
D(I,J,ID)=S
ANU(I,ID)=ANU(I,ID)+BB(I,J)*VL(J)
END DO
END DO
END DO
C
C ************
C LOWER BOUNDARY CONDITION
C ************
C
ID=ND
C
C First option:
C b.c. is different from stellar atmospheres; expresses symmetry
C at the central plane I(taumax,-mu,nu)=I(taumax,+mu,nu)
C
IF(IFZ0.EQ.0) THEN
B=DTP1*HALF
A=0.
DO I=1,NMU
BI=B/AMU(I)
AI=A/AMU(I)
VL(I)=ST0(ID)*BI+ST0(ID-1)*AI
DO J=1,NMU
AA(I,J)=-AI*SS0(ID-1)*WTMU(J)
BB(I,J)=BI*SS0(ID)*WTMU(J)
END DO
AA(I,I)=AA(I,I)+AMU(I)/DTP1-AI
BB(I,I)=BB(I,I)+AMU(I)/DTP1+BI
END DO
DO I=1,NMU
S1=0.
DO J=1,NMU
S=0.
S1=S1+AA(I,J)*ANU(J,ID-1)
DO K=1,NMU
S=S+AA(I,K)*D(K,J,ID-1)
END DO
BB(I,J)=BB(I,J)-S
END DO
VL(I)=VL(I)+S1
END DO
C
C Second option:
C b.c. is the same as in stellar atmospheres - the last depth point
C is not at the central plane
C
ELSE
DO I=1,NMU
AA(I,I)=AMU(I)/DTP1
VL(I)=PLAND+AMU(I)*DPLAN+AA(I,I)*ANU(I,ID-1)
DO J=1,NMU
BB(I,J)=-AA(I,I)*D(I,J,ID-1)
END DO
BB(I,I)=BB(I,I)+AA(I,I)+UN
END DO
END IF
C
C Matrix inversion: instead of calling MATINV, a very fast inlined
C routine MINV3 for a specific 3 x 3 matrix inversion
C
C CALL MATINV(BB,NMU,3)
C
C ******************************
BB(2,1)=BB(2,1)/BB(1,1)
BB(2,2)=BB(2,2)-BB(2,1)*BB(1,2)
BB(2,3)=BB(2,3)-BB(2,1)*BB(1,3)
BB(3,1)=BB(3,1)/BB(1,1)
BB(3,2)=(BB(3,2)-BB(3,1)*BB(1,2))/BB(2,2)
BB(3,3)=BB(3,3)-BB(3,1)*BB(1,3)-BB(3,2)*BB(2,3)
C
BB(3,2)=-BB(3,2)
BB(3,1)=-BB(3,1)-BB(3,2)*BB(2,1)
BB(2,1)=-BB(2,1)
C
BB(3,3)=UN/BB(3,3)
BB(2,3)=-BB(2,3)*BB(3,3)/BB(2,2)
BB(2,2)=UN/BB(2,2)
BB(1,3)=-(BB(1,2)*BB(2,3)+BB(1,3)*BB(3,3))/BB(1,1)
BB(1,2)=-BB(1,2)*BB(2,2)/BB(1,1)
BB(1,1)=UN/BB(1,1)
C
BB(1,1)=BB(1,1)+BB(1,2)*BB(2,1)+BB(1,3)*BB(3,1)
BB(1,2)=BB(1,2)+BB(1,3)*BB(3,2)
BB(2,1)=BB(2,2)*BB(2,1)+BB(2,3)*BB(3,1)
BB(2,2)=BB(2,2)+BB(2,3)*BB(3,2)
BB(3,1)=BB(3,3)*BB(3,1)
BB(3,2)=BB(3,3)*BB(3,2)
C ******************************
C
DO I=1,NMU
ANU(I,ID)=0.
DO J=1,NMU
D(I,J,ID)=0.
ANU(I,ID)=ANU(I,ID)+BB(I,J)*VL(J)
END DO
END DO
C
C ************
C BACKSOLUTION
C ************
C
ID=ND
FKK(ND)=THIRD
AJ=0.
AK=0.
DO I=1,NMU
RMU=WTMU(I)*ANU(I,ID)
AJ=AJ+RMU
AK=AK+RMU*AMU(I)*AMU(I)
END DO
RDD(ID)=AJ
FKK(ND)=AK/AJ
DO ID=ND-1,1,-1
DO I=1,NMU
DO J=1,NMU
ANU(I,ID)=ANU(I,ID)+D(I,J,ID)*ANU(J,ID+1)
END DO
END DO
AJ=0.
AK=0.
DO I=1,NMU
DIV=WTMU(I)*ANU(I,ID)
AJ=AJ+DIV
AK=AK+DIV*AMU(I)**2
END DO
FKK(ID)=AK/AJ
END DO
C
C surface Eddington actor
C
AH=0.
DO I=1,NMU
AH=AH+WTMU(I)*AMU(I)*ANU(I,1)
END DO
FH=AH/AJ-HALF*ALB1
C
c FKK(ND)=THIRD
C
C
C +++++++++++++++++++++++++++++++++++++++++
C SECOND PART - DETERMINATION OF THE MEAN INTENSITIES
C RECALCULATION OF THE TRANSFER EQUATION WITH GIVEN EDDINGTON FACTORS
C +++++++++++++++++++++++++++++++++++++++++
C
DTP1=DT(1)
DIV=DTP1*THIRD
BBB=FKK(1)/DTP1+FH+DIV+SS0(1)*(DIV+Q0)
CCC=FKK(2)/DTP1-HALF*DIV*(UN+SS0(2))
VLL=DIV*(ST0(1)+HALF*ST0(2))+ST0(1)*Q0
AANU(1)=VLL/BBB
DDD(1)=CCC/BBB
DO ID=2,ND1
DTM1=DTP1
DTP1=DT(ID)
DT0=HALF*(DTP1+DTM1)
AL=UN/DTM1/DT0
GA=UN/DTP1/DT0
A=(UN-HALF*DTP1*DTP1*AL)*SIXTH
C=(UN-HALF*DTM1*DTM1*GA)*SIXTH
AAA=AL*FKK(ID-1)-A*(UN+SS0(ID-1))
CCC=GA*FKK(ID+1)-C*(UN+SS0(ID+1))
BBB=(AL+GA)*FKK(ID)+(UN-A-C)*(UN+SS0(ID))
VLL=A*ST0(ID-1)+C*ST0(ID+1)+(UN-A-C)*ST0(ID)
BBB=BBB-AAA*DDD(ID-1)
DDD(ID)=CCC/BBB
AANU(ID)=(VLL+AAA*AANU(ID-1))/BBB
END DO
C
C Lower boundary condition
C 1.option - different from stellar atmospheres
C
IF(IFZ0.EQ.0) THEN
B=DTP1*HALF
BBB=FKK(ND)/DTP1+B*(UN+SS0(ND))
AAA=FKK(ND-1)/DTP1
VLL=B*ST0(ND)
ELSE
C
C Lower boundary condition
C 2.option - stellar atmospheric
C
BBB=FKK(ND)/DTP1+HALF
AAA=FKK(ND1)/DTP1
VLL=HALF*PLAND+DPLAN*THIRD
END IF
BBB=BBB-AAA*DDD(ND1)
RDD(ND)=(VLL+AAA*AANU(ND1))/BBB
DO IID=1,ND1
ID=ND-IID
RDD(ID)=AANU(ID)+DDD(ID)*RDD(ID+1)
END DO
FLUX(IJ)=FH*RDD(1)
C
C if needed (if iprin.ge.3), output of interesting physical
C quantities at the monochromatic optical depth tau(nu)=2/3
C
IF(IPRIN.ge.3) THEN
T0=LOG(TAU(IREF+1)/TAU(IREF))
X0=LOG(TAU(IREF+1)/TAUREF)/T0
X1=LOG(TAUREF/TAU(IREF))/T0
DMREF=EXP(LOG(DM(IREF))*X0+LOG(DM(IREF+1))*X1)
TREF=EXP(LOG(TEMP(IREF))*X0+LOG(TEMP(IREF+1))*X1)
STREF=EXP(LOG(ST0(IREF))*X0+LOG(ST0(IREF+1))*X1)
SCREF=EXP(LOG(-SS0(IREF))*X0+LOG(-SS0(IREF+1))*X1)
SSREF=EXP(LOG(-SS0(IREF)*RDD(IREF))*X0+
* LOG(-SS0(IREF+1)*RDD(IREF+1))*X1)
SREF=STREF+SSREF
ALM=2.997925E18/FREQ(IJ)
WRITE(96,636) IJ,ALM,IREF,DMREF,TREF,SCREF,STREF,SSREF,SREF
636 FORMAT(1H ,I3,F10.3,I4,1PE10.3,0PF10.1,1X,1P3E10.3,E11.3)
END IF
C
C THIRD PART - DETERMINATION OF THE SPECIFIC INTENSITIES
C RECALCULATION OF THE TRANSFER EQUATION WITH GIVEN SOURCE FUNCTION
C
if(iflux.eq.0) return
DO IMU=1,NMU0
ANX=ANGL(IMU)
DTP1=DT(1)
DIV=DTP1*THIRD/ANX
C
TAMM=TAUMIN/ANX
IF(TAMM.LT.0.01) THEN
P0=TAMM*(UN-HALF*TAMM*(UN-TAMM*THIRD*(UN-QUART*TAMM)))
ELSE
P0=UN-EXP(-TAMM)
END IF
C
BBB=ANX/DTP1+UN+DIV
CCC=ANX/DTP1-HALF*DIV
VLL=(DIV+P0)*(ST0(1)-SS0(1)*RDD(1))
* +HALF*DIV*(ST0(2)-SS0(2)*RDD(2))
AANU(1)=VLL/BBB
DDD(1)=CCC/BBB
DIV=ANX*ANX
DO ID=2,ND1
DTM1=DT(ID-1)
DTP1=DT(ID)
DT0=HALF*(DTP1+DTM1)
AL=UN/DTM1/DT0
GA=UN/DTP1/DT0
A=(UN-HALF*DTP1*DTP1*AL)*SIXTH
C=(UN-HALF*DTM1*DTM1*GA)*SIXTH
AAA=DIV*AL-A
CCC=DIV*GA-C
BBB=DIV*(AL+GA)+UN-A-C
VLL=A*(ST0(ID-1)-SS0(ID-1)*RDD(ID-1))+
* C*(ST0(ID+1)-SS0(ID+1)*RDD(ID+1))+
* (UN-A-C)*(ST0(ID)-SS0(ID)*RDD(ID))
BBB=BBB-AAA*DDD(ID-1)
DDD(ID)=CCC/BBB
AANU(ID)=(VLL+AAA*AANU(ID-1))/BBB
END DO
C
C Lower boundary condition
C 1.option - different from stellar atmospheres
C
IF(IFZ0.EQ.0) THEN
B=DTP1*HALF/ANX
BBB=ANX/DTP1+B*(UN+SS0(ND))
AAA=ANX/DTP1
VLL=B*ST0(ND)
ELSE
C
C Lower boundary condition
C 2.option - stellar atmospheric
C
AAA=ANX/DTP1
BBB=AAA+UN
VLL=PLAND+ANX*DPLAN
END IF
C
RINT(ND,IMU)=(VLL+AAA*AANU(ND1))/(BBB-AAA*DDD(ND1))
DO IID=1,ND1
ID=ND-IID
RINT(ID,IMU)=AANU(ID)+DDD(ID)*RINT(ID+1,IMU)
END DO
END DO
c
FLX=0.
DO IMU=1,NMU0
RINT(1,IMU)=RINT(1,IMU)/HALF
FLX=FLX+ANGL(IMU)*WANGL(IMU)*RINT(1,IMU)
END DO
FLX=FLX*HALF
c FLUX(IJ)=FLX
C
C output of emergent specific intensities to Unit 10
C and 18 (continuum)
C
IF(IJ.GT.2) THEN
WRITE(10,641) WLAM(IJ),FLX,(RINT(1,IMU),IMU=1,NMU0)
ELSE
WRITE(18,641) WLAM(IJ),FLX,(RINT(1,IMU),IMU=1,NMU0)
END IF
c
if(iprin.eq.4) then
c
c compute contribution function C_i (ctri) and C_r (ctrr)
c following Magain (1986, A&A 163, 135)
c
if(ijctr(ij).gt.0) then
xfr0=(freq(ij)-freq(2))/(freq(1)-freq(2))
tauc=ch(1,1)/dens(1)*dm(1)*half
do id=1,nd
chc1=ch(1,id)
chc2=ch(2,id)
chcc=chc2+xfr0*(chc1-chc2)
etc1=et(1,id)
etc2=et(2,id)
etcc=etc2+xfr0*(etc1-etc2)
stcc=etcc/chcc
cint=cint2(id)+xfr0*(cint1(id)-cint2(id))
avx=(chc1+chc2)*0.5*relop
call linop(id,abxli,emxli,avx)
sli0=emxli(ij)/abxli(ij)
abt0=ch(ij,id)
emt0=et(ij,id)
stt0=emt0/abt0
Xkar(id)=abxli(ij)+chcc*stcc/cint
ctri(id)=tauc*abt0/chc1*stt0*exp(-tau(id))
if(tau(id).gt.70.) ctri(id)=0.
ctrr(id)=tauc/chc1*abxli(ij)*(un-sli0/cint)
if(id.lt.nd) then
dtc=(ch(1,id+1)/dens(id+1)+ch(1,id)/dens(id))
tauc=tauc+half*dtc*(dm(id+1)-dm(id))
endif
end do
taurs=Xkar(1)/dens(1)*dm(1)*half
xcti=ctri(1)*half*(dm(2)-dm(1))
xctr=ctrr(1)*half*(dm(2)-dm(1))
do i=1,nd-1
ctrr(i)=ctrr(i)*exp(-taurs)
if(i.eq.1) xctr=xctr*exp(-taurs)
if(i.gt.1) then
xcti=xcti+ctri(i)*half*(dm(i+1)-dm(i-1))
xctr=xctr+ctrr(i)*half*(dm(i+1)-dm(i-1))
endif
if(taurs.gt.70.) ctrr(i)=0.
dtrs=(dm(i+1)-dm(i))*(Xkar(i+1)/dens(i+1)+Xkar(i)/dens(i))
taurs=taurs+half*dtrs
end do
ctrr(nd)=0.
alam=2.997925d18/freq(ij)
il0=ijctr(ij)
il=indlin(il0)
iat=indat(il)/100
ion=mod(indat(il),100)
write(97,376) il,alam,typat(iat),typion(ion),iref,dmref,tref
376 format(i5,f11.4,2x,2a4,i8,1pe12.4,0pf10.1)
do id=1,nd
ctrip=ctri(id)/xcti
ctrrp=ctrr(id)/xctr
write(97,377) id,dm(id),tau(id),ctrip,ctrrp
377 format(i4,1p4e12.4)
end do
else if(ij.eq.1) then
do id=1,nd
cint1(id)=rint(id,nmu0)
end do
else if(ij.eq.2) then
do id=1,nd
cint2(id)=rint(id,nmu0)
end do
endif
endif
641 FORMAT(1H ,f10.3,1pe15.5/(1P5E15.5))
c
c end of the global loop over frequencies
c
END DO
RETURN
END