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