da_read_biascoef.inc

References to this file elsewhere.
1     subroutine  da_read_biascoef(string,nchan,nscan,nband,npred,global, &
2                       scanbias,scanbias_b,coef,coef0, vstd_dep)
3 
4     integer, intent(in) :: nchan,nscan,nband,npred
5     logical, intent(in) :: global
6     character(len=20), intent(in) :: string
7     real,    intent(inout) :: scanbias(nchan,nscan),  &
8                            scanbias_b(nchan,nscan,nband), &
9                            coef(nchan,npred),coef0(nchan), &
10                            vstd_dep(nchan)
11 
12     integer :: iunit,j,i, ii,jj, iost
13     integer ::  nobs(nchan)
14     real    ::  vmean_abs(nchan), vstd_abs(nchan), &
15                 vmean_dep(nchan)
16     character(len=80) :: filename
17 
18     call da_trace_entry("da_read_biascoef")
19 
20    call da_get_unit(iunit)
21    filename='biascorr/'//adjustl(trim(string))//'.bcor'
22    open(unit=iunit,file=filename, form='formatted',iostat = iost, status='old')
23    if (iost /= 0) then
24       message(1)="Cannot open radiance biascorr file "//adjustl(filename)
25       call da_error(__FILE__,__LINE__,message(1:1))
26    end if
27 
28     !read (iunit,'(4i6)') nchan,nscan,nband,npred
29     read (iunit,'(4i6)')
30     do i=1, nchan
31       read (iunit,'(i5,i10,4F8.2)') ii,nobs(i),vmean_abs(i),vstd_abs(i), &
32              vmean_dep(i),vstd_dep(i)
33     end do
34 
35     do i=1, nchan
36       read (iunit,'(i5,5F12.5)') ii,(coef(i,j),j=1,npred),coef0(i)
37     end do
38 
39         read (iunit,*)
40         read (iunit,*)
41     if (global) then   ! global coefs not available now, use regional one
42       do j=1, nchan
43       !do i=1, nband
44         if (nscan == 30) then ! amsua
45          !read(iunit,'(i5,i3,30F7.2)') jj,ii, scanbias_b(j,1:nscan,i)
46          read(iunit,'(i5,30F7.2)') jj, scanbias(j,1:nscan)
47         else if (nscan == 90) then ! amsub
48          !read(iunit,'(i5,i3,90F7.2)') jj,ii, scanbias_b(j,1:nscan,i)
49          read(iunit,'(i5,90F7.2)') jj, scanbias(j,1:nscan)
50         else if (nscan == 56) then ! hirs
51          !read(iunit,'(i5,i3,56F7.2)') jj,ii, scanbias_b(j,1:nscan,i)
52          read(iunit,'(i5,56F7.2)') jj, scanbias(j,1:nscan)
53         else
54          write(UNIT=stdout,FMT=*) 'Unknown Sensor Type'
55         end if
56       !end do
57       end do
58     else
59       do j=1, nchan
60         if (nscan == 30) then ! amsua
61          read(iunit,'(i5,30F7.2)') jj, scanbias(j,1:nscan)
62         else if (nscan == 90) then ! amsub
63          read(iunit,'(i5,90F7.2)') jj, scanbias(j,1:nscan)
64         else if (nscan == 56) then ! hirs
65          read(iunit,'(i5,56F7.2)') jj, scanbias(j,1:nscan)
66         else
67          write(UNIT=stdout,FMT=*) 'Unknown Sensor Type'
68         end if
69       end do
70     end if
71 
72       close(iunit)
73       call da_free_unit(iunit)
74 
75      call da_trace_exit("da_read_biascoef")
76 
77     end subroutine da_read_biascoef