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