UPP  11.0.0
 All Data Structures Files Functions Variables Pages
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.