[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

*Subject*: Re: Array multiplication: implicit loop query*From*: "Kenneth P. Bowman" <kbowman(at)null.net>*Date*: Fri, 10 Aug 2001 07:58:03 -0500*Newsgroups*: comp.lang.idl-pvwave*Organization*: Posted via Supernews, http://www.supernews.com*References*: <d90c0773.0108100256.6398a693@posting.google.com>*User-Agent*: YA-NewsWatcher/5.0.0*Xref*: news.doit.wisc.edu comp.lang.idl-pvwave:26138

In article <d90c0773.0108100256.6398a693@posting.google.com>, george Millward <george@apg.ph.ucl.ac.uk> wrote: > Hi there > > I was just calculating the following equation: > > DEN_H = MMR_H * Pres * RMT / ( atomic_mass_H * Gas_constant * TN ) > > These numbers are 3D arrays, 1D arrays and constants, i.e., > > MMR_H = fltarr(30,91,40) > Pres = fltarr(30) > RMT = fltarr(30,91,40) > atomic_mass_H = constant > Gas_constant = constant > TN =fltarr(30,91,40) > > The result of this is DEN_H (previously undefined) which ends up being > fltarr(30) - i.e., 1 dimensional. > To my mind DEN_H should be 3D (30,91,40) - shouldn't it ? Doesn't IDL > understand that I am implicity doing a full 3D calculation here ? No. > It would seem that, to get this to work I need to make > Pres=fltarr(30,91,40). That's one solution. The other is to use loops. FOR k = 0, 29 DO DEN_H[k,*,*] = MMR_H[k,*,*]*Pres[k]*RMT[k,*,*] / $ (atomic_mass_H* Gas_constant*TN[k,*,*]) This would be *much* more efficient (in terms of cache usage and array indexing) if pressure was your last dimension, i.e., MMR_H = fltarr(91,40,30) Pres = fltarr(30) RMT = fltarr(91,40,30) TN =fltarr(91,40,30) Then you can write FOR k = 0, 29 DO DEN_H[0,0,k] = MMR_H[*,*,k]*Pres[k]*RMT[*,*,k] / $ (atomic_mass_H*Gas_constant*TN[*,*,k]) The change in the indexing on the LHS to [0,0,k] is important. Ken

**References**:**Array multiplication: implicit loop query***From:*george Millward

- Prev by Date:
**Re: Array multiplication: implicit loop query** - Next by Date:
**Re: Array multiplication: implicit loop query** - Prev by thread:
**Re: Array multiplication: implicit loop query** - Next by thread:
**HDF files and memory leak** - Index(es):