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