      subroutine diskir(ear,ne,param,ifl,photar)

      implicit none
      integer ne,ifl
      real ear(0:ne),photar(ne),param(8)
      integer i,imax
      external xwrite
      real e(0:5000),dph(5000),tph(5000)
      real lx,ld,tpar(5)
      real tin,lcld,rirr,fin,fout
c       dummy array needed only for call to nthcomp C++ routine
      real photer(5000)
      
c     parameter 1 is intrinsic disc temperature 
      tin=param(1)
      e(0)=1.0e-3
      imax=5000
      do i=1,imax,1
         e(i)=e(0)*( 10**(float(i)*6.0/float(imax)) )
         dph(i)=0.0
         tph(i)=0.0
      end do
      call xsdskb(e,imax,tin,ifl,dph)
      
c     parameter 2 and 3 are gamma and kTe for thcomp
      tpar(1)=param(2)
      tpar(2)=param(3)

      lcld=param(4)
      fin=param(5)
      rirr=param(6)
      if (rirr .le. 1.0) then
        call xwrite('***DISKIR Error: Cannot calculate for rirr <= 1.0'
     +                ,5)
        goto 999
      end if
      fout=param(7)

c     new inner disc temperature
      tpar(3)=param(1) *(  (1.0 + fout*(1.0+lcld*(1.0+fin) )
     &     + 2.0*fin*lcld/(rirr**2-1.0) ) **0.25)

c     blackbody at each radius
      tpar(4)=0.0

c     redshift
      tpar(5)=0.0

      call nthcomp(e,imax,tpar,ifl,tph,photer)

      lx=0.0
      ld=0.0
      do i=1,imax,1
         lx=lx+tph(i)*e(i)
         ld=ld+dph(i)*e(i)
      end do

      call dthircore(ear,ne,param,ifl,lx,ld,photar)

 999  return 
      end 


      subroutine dthircore(ear,ne,param,ifl,lx,ld,photar)
c     code to do diskbb for an irradiated disc where irradiation is
c     from diskbb+thcompml

      implicit none
      integer ne,ifl,n,i,imax,iin
      real*8 r,logr,dlogr,dr,t,tin,dflux,dnphot,en
      real param(8),ear(0:ne),photar(ne)
      real t1,tpar(5),thphotar(ne),lx,ld
      real*8 fin,fout,lcld,logrout,rlow,rhigh,rirr
c       dummy array needed only for call to nthcomp C++ routine
      real photer(ne)
      
      do n=1,ne,1
         photar(n)=0.0
      end do

c     this is tin it would have without irradiation
      tin=dble(param(1))

      lcld=dble(param(4))
      fin=dble(param(5))
      rirr=dble(param(6))
      fout=dble(param(7))
      logrout=dble(param(8))

c     thcomp parameters
      tpar(1)=param(2)
      tpar(2)=param(3)

c     blackbody at each radius
      tpar(4)=0.0

c     redshift
      tpar(5)=0.0

      imax=1000
      iin=50
      logr=0.0
      rlow=1.0d0
      do i=1,iin+imax,1
         if (i.le.iin) then
            dlogr=log10(rirr)/dble(iin)
            logr=dble(i-1)*dlogr+dlogr/2.0
            else
            dlogr=(logrout-log10(rirr))/dble(imax)
            logr=log10(rirr)+dble(i-iin-1)*dlogr+dlogr/2.0
         end if 
         r=10**logr
         rhigh=10**(logr+dlogr/2.0)
         dr=rhigh-rlow

         if (i.le.iin) then
            t=(tin*(r**(-0.75)))*(  (1.0 + fout*r*(1.0+(1.0+fin)*lcld) 
     &           + 2.0*(r**3)*lcld*fin/(rirr**2-1.0) )**0.25)
            else
            t=(tin*(r**(-0.75)))*
     &              (  (1.0 + fout*r*(1.0+(1.0+fin)*lcld)  )**0.25)
         end if
         if (i.eq.1) t1=sngl(t)

c        go over each photon energy
         do n=1,ne,1
c           this is in ergs cm^-2 s^-1 keV^-1 ie at 10kpc
            en=dble(ear(n))
            if (en.lt.20.0*t) then
               dflux=3.33d-22*(en**3)*r*dr/(exp(en/t)-1.0)
               else
               dflux=0.0d0
            end if

c           divide by energy to get photon spectrum, by need to change keV
c           to ergs. then multiply by de to get photons in the bin
            dnphot=dflux*(en-dble(ear(n-1)))/(1.602177e-9*en)
            
c           rin in km r dr = 1e10 factor
            photar(n)=photar(n)+1.e10*sngl(dnphot)

         end do 
         rlow=rhigh

      end do

c     set inner thcomp temperature to new inner disc temp.
      tpar(3)=t1

      call nthcomp(ear,ne,tpar,ifl,thphotar,photer)
      
      do n=1,ne,1
         photar(n)=photar(n)+sngl(lcld)*(ld/lx)*thphotar(n)
      end do

      return
      end
