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