subroutine gtbdivt(idivt,bdivt,nsig,jcap,nsigdivt, * jcapdivt,sigl) c------------- c-------------bring in estimates of divtend error variance, c----------- interpolate in vertical, and truncate in horizontal c----------- c$$$ subprogram documentation block c . . . . c subprogram: gtbdivt read divtend error variances. c prgmmr: parrish org: w/nmc22 date: 94-02-11 c c abstract: read divtend error variance, interpolate in vert, truncate c in horizontal, as necessary. c c program history log: c 94-02-11 parrish c c input argument list: c idivt - input unit number containing divtend error variances c nsig - number of sigma levels c jcap - triangular truncation c nsigdivt - number of sigma levels in input divtend errors c jcapdivt - triangular truncation for input divtend errors c sigl - analysis sigma levels c c output argument list: c bdivt - inverse of divtend error variances. c c attributes: c language: cft77 c machine: cray ymp c c$$$ C-CRA dimension bdivt(0:jcap,nsig),sigl(nsig) C-CRA dimension cdivt(0:jcapdivt,nsigdivt),sigldivt(nsigdivt) C-CRA dimension tdivt(0:jcapdivt,nsig) C-CRA dimension rlsg(nsig),rlsgdivt(nsigdivt) C-CRA dimension grid(nsig) dimension bdivt(0:62,28),sigl(28) dimension cdivt(0:126,28) dimension sigldivt(28) dimension tdivt(0:126,28) dimension rlsg(28),rlsgdivt(28) dimension grid(28) c----------- rewind idivt read(idivt)msigdivt,mcapdivt,sigldivt,cdivt close(idivt) C-CRA rlsgdivt=log(sigldivt) DO i=1,nsigdivt rlsgdivt(i)=log(sigldivt(i)) ENDDO C-CRA rlsg=log(sigl) DO i=1,nsig rlsg(i)=log(sigl(i)) ENDDO C-CRA grid=rlsg DO i=1,nsig grid(i)=rlsg(i) ENDDO call gdcrdn(grid,nsig,rlsgdivt,nsigdivt) do k=1,nsig i0=grid(k) i0=max(1,min(nsigdivt-1,i0)) i1=i0+1 del=grid(k)-i0 w0=1.-del w1=del do n=0,jcapdivt tdivt(n,k)=w0*cdivt(n,i0)+w1*cdivt(n,i1) end do do n=0,min(jcap,jcapdivt) bdivt(n,k)=tdivt(n,k) end do if(jcap.gt.jcapdivt) then do n=jcapdivt+1,jcap bdivt(n,k)=tdivt(jcapdivt,k) end do end if do n=1,jcap bdivt(n,k)=1./bdivt(n,k) end do end do return end