da_read_iv_rad_binary.inc
References to this file elsewhere.
1 subroutine da_read_iv_rad_binary (xp, ob, iv)
2
3 !---------------------------------------------------------------------------
4 ! Purpose: write out innovation vector structure for radiance data.
5 !
6 ! METHOD: write out for separated PEs
7 !---------------------------------------------------------------------------
8
9 implicit none
10
11 type (xpose_type), intent(in) :: xp ! Domain decomposition vars.
12 type (y_type), intent(inout) :: ob ! Observation structure.
13 type (ob_type), intent(inout) :: iv ! O-B structure.
14
15 integer :: n ! Loop counter.
16 integer :: i, j, k ! Index dimension.
17 integer :: num_levs ! Number of obs levels.
18
19 integer :: iv_rad_binary_unit, ios
20 character(len=30) :: filename
21 integer :: ndomain
22
23 if (trace_use) call da_trace_entry("da_read_iv_rad_binary")
24
25 do i = 1, iv%num_inst
26
27 #ifdef DM_PARALLEL
28 write(filename, '(a,i2.2)') trim(iv%instid(i)%rttovid_string)//'.inv_bin_', myproc
29 #else
30 write(filename, '(a)') trim(iv%instid(i)%rttovid_string)//'.inv_bin'
31 #endif
32 call da_get_unit(iv_rad_binary_unit)
33 open(iv_rad_binary_unit,file=trim(filename),form='unformatted',iostat=ios)
34 if (ios /= 0 ) Then
35 call da_warning(__FILE__,__LINE__,(/"cannot open the file "//trim(filename)/))
36 iv%instid(i)%num_rad = 0
37 cycle
38 Endif
39
40 read(iv_rad_binary_unit) iv%instid(i)%num_rad, iv%instid(i)%nchan,iv%instid(i)%ichan
41 do n =1,iv%instid(i)%num_rad
42 read(iv_rad_binary_unit) ndomain, &
43 iv%instid(i)%rad(n)%info%date_char, &
44 iv%instid(i)%rad(n)%scanpos, &
45 iv%instid(i)%rad(n)%landsea_mask, &
46 iv%instid(i)%rad(n)%info%elv, &
47 iv%instid(i)%rad(n)%info%lat, &
48 iv%instid(i)%rad(n)%info%lon, &
49 iv%instid(i)%rad(n)%satzen, &
50 iv%instid(i)%rad(n)%satazi
51 read(iv_rad_binary_unit) &
52 iv%instid(i)%rad(n)%t2m, &
53 iv%instid(i)%rad(n)%mr2m, &
54 iv%instid(i)%rad(n)%u10, &
55 iv%instid(i)%rad(n)%v10, &
56 iv%instid(i)%rad(n)%ps, &
57 iv%instid(i)%rad(n)%ts, &
58 iv%instid(i)%rad(n)%smois, &
59 iv%instid(i)%rad(n)%tslb, &
60 iv%instid(i)%rad(n)%snowh, &
61 iv%instid(i)%rad(n)%isflg, &
62 nint(iv%instid(i)%rad(n)%soiltyp), &
63 nint(iv%instid(i)%rad(n)%vegtyp), &
64 iv%instid(i)%rad(n)%vegfra, &
65 iv%instid(i)%rad(n)%elevation, &
66 iv%instid(i)%rad(n)%clwp
67
68 read(iv_rad_binary_unit) ob%instid(i)%rad(n)%tb(:)
69 read(iv_rad_binary_unit) iv%instid(i)%rad(n)%tb(:)%inv
70 read(iv_rad_binary_unit) iv%instid(i)%rad(n)%emiss(1:iv%instid(i)%nchan)
71
72 read(iv_rad_binary_unit) iv%instid(i)%rad(n)%tb(:)%error
73 read(iv_rad_binary_unit) iv%instid(i)%rad(n)%tb(:)%qc
74
75 if (write_profile) then
76 read(iv_rad_binary_unit) num_levs, &
77 coefs(i) % ref_prfl_p(1:num_levs) , &
78 iv%instid(i)%rad(n)%t(1:num_levs) , &
79 iv%instid(i)%rad(n)%mr(1:num_levs)
80
81 read(iv_rad_binary_unit) num_model_levs, &
82 iv%instid(i)%rad(n)%pm(xp%kts:xp%kte) , &
83 iv%instid(i)%rad(n)%tm(xp%kts:xp%kte) , &
84 iv%instid(i)%rad(n)%qm(xp%kts:xp%kte) , &
85 iv%instid(i)%rad(n)%qcw(xp%kts:xp%kte), &
86 iv%instid(i)%rad(n)%qrn(xp%kts:xp%kte)
87 end if ! end if write_profile
88 end if ! end if proc_domain
89 end do ! end do pixels
90 close(iv_rad_binary_unit)
91 call da_free_unit(iv_rad_binary_unit)
92 end do !! end do instruments
93
94 if (trace_use) call da_trace_exit("da_read_iv_rad_binary")
95
96 end subroutine da_read_iv_rad_binary
97
98