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,stdout, 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='wrfvar_run/'//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,i7,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
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         else if (nscan == 90) then ! amsub
47          read(iunit,'(i5,i3,90F7.2)') jj,ii, scanbias_b(j,1:nscan,i)
48         else if (nscan == 56) then ! hirs
49          read(iunit,'(i5,i3,56F7.2)') jj,ii, scanbias_b(j,1:nscan,i)
50         else
51          write(UNIT=stdout,FMT=*) 'Unknown Sensor Type'
52         end if
53       end do
54       end do
55     else
56       do j=1, nchan
57         if (nscan == 30) then ! amsua
58          read(iunit,'(i5,30F7.2)') jj, scanbias(j,1:nscan)
59         else if (nscan == 90) then ! amsub
60          read(iunit,'(i5,90F7.2)') jj, scanbias(j,1:nscan)
61         else if (nscan == 56) then ! hirs
62          read(iunit,'(i5,56F7.2)') jj, scanbias(j,1:nscan)
63         else
64          write(UNIT=stdout,FMT=*) 'Unknown Sensor Type'
65         end if
66       end do
67     end if
68 
69       close(iunit)
70       call da_free_unit(iunit)
71 
72      call da_trace_exit("da_read_biascoef")
73 
74     end subroutine da_read_biascoef