git push -u origin main
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
subroutine intrp(wltab,absop,wlgrid,abgrd,nfr,nfgrid)
|
||||
c =====================================================
|
||||
c
|
||||
c a more efficient interpolation routine - using bisection
|
||||
c
|
||||
INCLUDE 'PARAMS.FOR'
|
||||
dimension wltab(1),absop(1),wlgrid(1),abgrd(1)
|
||||
dimension yint(mfgrid),jint(mfgrid)
|
||||
c
|
||||
c set up interpolation coefficients for an interpolation
|
||||
c by bisection
|
||||
c
|
||||
fr1=wltab(1)
|
||||
fr2=wltab(nfr)
|
||||
do ij=1,nfgrid
|
||||
xint=wlgrid(ij)
|
||||
jl=0
|
||||
ju=nfr+1
|
||||
10 continue
|
||||
if(ju-jl.gt.1) then
|
||||
jm=(ju+jl)/2
|
||||
if((fr2.gt.fr1).eqv.(xint.gt.wltab(jm))) then
|
||||
jl=jm
|
||||
else
|
||||
ju=jm
|
||||
end if
|
||||
go to 10
|
||||
end if
|
||||
j=jl
|
||||
if(j.eq.nfr) j=j-1
|
||||
if(j.eq.0) j=j+1
|
||||
jint(ij)=j
|
||||
c yint(ij)=un/log10(wltab(j+1)/wltab(j))
|
||||
yint(ij)=1./(wltab(j+1)-wltab(j))
|
||||
end do
|
||||
c
|
||||
do ij=1,nfgrid
|
||||
j=jint(ij)
|
||||
rc=(absop(j+1)-absop(j))*yint(ij)
|
||||
c abgrd(ij)=rc*log10(wlgrid(ij)/wltab(j))+absop(j)
|
||||
abgrd(ij)=rc*(wlgrid(ij)-wltab(j))+absop(j)
|
||||
end do
|
||||
return
|
||||
end
|
||||
Reference in New Issue
Block a user