comp.lang.idl-pvwave archive
Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado

Home » Public Forums » archive » Re: Why this loop does not work?
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Return to the default flat view Create a new topic Submit Reply
Re: Why this loop does not work? [message #63828] Thu, 20 November 2008 14:34 Go to previous message
xiao zhang is currently offline  xiao zhang
Messages: 81
Registered: June 2008
Member
On Nov 20, 3:50 pm, Vince Hradil <vincehra...@gmail.com> wrote:
> On Nov 20, 3:30 pm, xiao <littledd...@gmail.com> wrote:
>
>
>
>> On Nov 20, 2:55 pm, Jeremy Bailin <astroco...@gmail.com> wrote:
>
>>> On Nov 20, 3:45 pm, Paolo <pgri...@gmail.com> wrote:
>
>>>> Because you are using the same loop variable (i)
>>>> in two different loops, one of which happens to be inside the other...
>
>>>> xiao wrote:
>>>> > Hi~ everyone, I have a short program like this. But there are some
>>>> > bugs in it that I cannot open all the files in the loop. Anyone got an
>>>> > idea why is that? Thank you very much :)
>
>>>> > pro read_rams,fulnam,vname,nvars,data,kx,ky,kz
>
>>>> > vname =['UP','VP','WP','THETA']
>>>> > hh=
>>>> > ['00','01','02','03','04','05','06','07','08','09','10','11' ,'12','13','14','15','16','17','18','19','20','21','22','23' ]
>>>> > mm=['00','15','30','45']
>>>> > ss='00'
>
>>>> > ; timestep
>
>>>> > nvars=4 ; number of varible
>
>>>> > dirnm='test8/anal/' ;/* print to string 'dirnm' */
>>>> > filehd='a-A-A-2005-12-'
>>>> > filend='-g4.h5'
>
>>>> > for j=0,23 do begin ; ---------------This loop this loop works
>>>> > here, all the file names are correct :(
>>>> > for k=0,3 do begin ; ---------------This loop this loop works
>>>> > here, all the file names are correct :(
>
>>>> > fulnam=dirnm+filehd+'17-'+hh(j)+mm(k)+ss+filend
>
>>>> > openw,3,'data.txt'
>
>>>> > file_id = H5F_open(fulnam)
>
>>>> > if file_id ge 0 then begin
>>>> > for iv=0, nvars-1 do begin
>
>>>> > dataset_id = H5D_open(file_id, vname(iv)) ;/* Open existing
>>>> > dataset. but only opend one file*/
>>>> > print,file_id
>>>> > rdata = H5D_read(dataset_id)
>>>> > dataspace_id = H5D_GET_SPACE(dataset_id)
>>>> > dimensions = H5S_GET_SIMPLE_EXTENT_DIMS(dataspace_id)
>>>> > simspc = H5S_IS_SIMPLE(Dataspace_id)
>
>>>> > if iv eq 0 then begin
>>>> > kz=dimensions(0)
>>>> > ky=dimensions(1)
>>>> > kx=dimensions(2)
>>>> > data=fltarr(kx,ky,kz,nvars)
>
>>>> > endif
>
>>>> > ntot=long(kx)*ky*kz
>>>> > a=fltarr(ntot) ;introduce "a" to redistribute the data
>>>> > a(*)=rdata
>
>>>> > ii=-1L
>>>> > for k=0,kz-1 do begin
>>>> > for j=0,ky-1 do begin
>>>> > for i=0,kx-1 do begin
>>>> > ii=ii+1
>>>> > data(i,j,k,iv)=a(ii)
>>>> > endfor
>>>> > endfor
>>>> > endfor
>>>> > print,'pocessing varible is ',vname(iv)
>>>> > printf,3,data
>
>>>> > H5S_CLOSE, dataspace_id
>>>> > H5D_close,dataset_id ;/* Close the dataset. */
>>>> > endfor
>>>> > H5F_close,file_id ;/* Close the file. */
>>>> > endif
>>>> > print,'finishing process file ',fulnam
>
>>>> > endfor ; ---------------This loop does not work, only processed
>>>> > the first file :(
>>>> > endfor ; ---------------This loop does not work, only processed
>>>> > the first file :(
>
>>>> > close,3
>>>> > a=0.
>>>> > end
>
>>> Actually, i is fine, it's j and k that duplicated. :-)=
>
>> I changed the j,k to a,b at the beginning but it still does not
>> work.And the error changed to :
>
>> H5F_OPEN: Expression must be a scalar or 1 element array in this
>> context: FULNAM.
>> % Execution halted at: READ_RAMS 34 /nas/rstor6/xzhang/
>> read_rams.pro
>> % $MAIN$
>> :(
>
> You use a later on in the code, too... a=fltarr()

THANKS ALL ~ IT WORKS NOW~~ :)
[Message index]
 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: Why this loop does not work?
Next Topic: Re: Can I use array elements of a pointer like a regular array?

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ] [ PDF ]

Current Time: Thu Oct 09 22:13:54 PDT 2025

Total time taken to generate the page: 0.55554 seconds