UPP (upp-srw-2.2.0)
Loading...
Searching...
No Matches
SELECT_CHANNELS.f
Go to the documentation of this file.
1
18!----------------------------------------------------------------------
25 subroutine select_channels(channelinfo,nchannels,channels)
26
27 use crtm_channelinfo_define, only: crtm_channelinfo_type
28 implicit none
29
30 type(crtm_channelinfo_type),intent(inout) :: channelinfo
31 integer, intent(in) :: nchannels,channels(nchannels)
32 integer :: i,j
33 integer :: temp(nchannels)
34
35 if(nchannels>channelinfo%n_channels) then
36 write(6,*) 'ERROR*** tried to use more channels than sensor has'
37 write(6,*) ' ',nchannels,' > ',channelinfo%n_channels
38 stop 18
39 endif
40
41 check: do i=1,nchannels
42 if(channels(i)<1 .or. channels(i)>channelinfo%n_channels) then
43 write(6,*) 'ERROR*** invalid channel id: ',channels(i)
44 write(6,*) ' in SELECT_CHANNELS at index ',i
45 stop 19
46 endif
47 temp(i)=channelinfo%Channel_Index(channels(i))
48 enddo check
49
50 channelinfo%n_channels=nchannels
51 channelinfo%Channel_Index(1:nchannels)=temp
52
53 end subroutine select_channels
54
55 subroutine select_channels_l(channelinfo,nchannels,channels,L,igot)
56
57! 2014-12-09: WM LEWIS ADDED THIS SUBROUTINE TO SELECT CHANNELS
58! USING LEVEL ENTRIES FROM WRF_CNTRL.PARM
59
60 use crtm_channelinfo_define, only: crtm_channelinfo_type
61 implicit none
62
63 type(crtm_channelinfo_type),intent(inout) :: channelinfo
64 integer, intent(in) :: nchannels,channels(nchannels)
65 integer :: i,j,k,m
66 integer :: temp(nchannels)
67 integer :: L(nchannels)
68 integer :: igot
69
70 if(nchannels>channelinfo%n_channels) then
71 write(6,*) 'ERROR*** tried to use more channels than sensor has'
72 write(6,*) ' ',nchannels,' > ',channelinfo%n_channels
73 stop 18
74 endif
75
76 k=0
77 do i=1,nchannels
78 if(channels(i)<1 .or. channels(i)>channelinfo%n_channels) then
79 write(6,*) 'ERROR*** invalid channel id: ',channels(i)
80 write(6,*) ' in SELECT_CHANNELS at index ',i
81 stop 19
82 endif
83 if(l(i)==1)then
84 k=k+1
85 temp(k)=channelinfo%Channel_Index(channels(i))
86 endif
87 if(l(i)==0)then
88 channelinfo%Process_Channel(channels(i))=.false. ! turn off channel processing
89 endif
90 enddo
91
92! if no channels were selected, then set igot=0
93 if(k==0)then
94 igot=0
95 return
96! else
97! channelinfo%n_channels=k
98! channelinfo%Channel_Index(1:k)=temp(1:k)
99 endif
100
101 end subroutine select_channels_l
102
subroutine select_channels(channelinfo, nchannels, channels)
select_channels() verifies channel information.