2 subroutine getvariable(fileName,DateStr,dh,VarName,VarBuff,IM,JSTA_2L,JEND_2U,LM,IM1,JS,JE,LM1)
60 character(len=256) ,
intent(in) :: filename
61 character(len=19) ,
intent(in) :: datestr
62 integer ,
intent(in) :: dh
63 character(*) ,
intent(in) :: varname
64 real,
intent(out) :: varbuff(im,jsta_2l:jend_2u,lm)
65 integer,
intent(in) :: im,lm,jsta_2l,jend_2u
66 integer,
intent(in) :: im1,lm1,js,je
68 integer :: wrftype,i,j,l,ll
69 integer,
dimension(4) :: start_index, end_index
70 character (len= 4) :: staggering
71 character (len= 3) :: ordering
72 character (len=80),
dimension(3) :: dimnames
73 real,
allocatable,
dimension(:,:,:,:) :: data
74 integer :: ierr,size,mype,idsize,ier
75 character(len=132) :: stagger
79 call mpi_comm_rank(mpi_comm_world,mype,ier)
83 call ext_ncd_get_var_info(dh,trim(varname),ndim,ordering,stagger,start_index,end_index,wrftype,ierr)
85 write(*,*)
'Error: ',ierr,trim(varname),
' not found in ',filename
89 allocate(
data (end_index(1), end_index(2), end_index(3), 1))
90 if( wrftype /= wrf_real .AND. wrftype /= wrf_real8 )
then
91 write(*,*)
'Error: Not a real variable',wrftype
100 print *,
' GWVX XT_NCD GET FIELD',
size(data),
size(varbuff),mype
103 call ext_ncd_read_field(dh,datestr,trim(varname),
data,wrftype,0,0,0,ordering,&
104 staggering, dimnames , &
105 start_index,end_index, &
106 start_index,end_index, &
107 start_index,end_index, &
110 call mpi_bcast(
data,idsize,mpi_real,0,mpi_comm_world,ierr)
111 IF ( ierr /= 0 )
THEN
112 write(*,*)
'Error reading ',varname,
' from ',filename
113 write(*,*)
' ndim = ', ndim
114 write(*,*)
' end_index(1) ',end_index(1)
115 write(*,*)
' end_index(2) ',end_index(2)
116 write(*,*)
' end_index(3) ',end_index(3)
120 if (im1>end_index(1))
write(*,*)
'Err:',varname,
' IM1=',im1,&
121 ' but data dim=',end_index(1)
122 if (je>end_index(2))
write(*,*)
'Err:',varname,
' JE=',je,&
123 ' but data dim=',end_index(2)
124 if (lm1>end_index(3))
write(*,*)
'Err:',varname,
' LM1=',lm1,&
125 ' but data dim=',end_index(3)
127 write(*,*)
'Error: ndim = ',ndim
133 varbuff(i,j,l)=
data(i,j,ll,1)
141 end subroutine getvariable