[ncl-talk] conversion from loop to array syntax

Laura Fowler laura at ucar.edu
Fri Nov 11 18:11:04 MST 2022


Hi Dave:
Thanks for your reply. I did get the same segmentation fault (see below). I
do not know what you mean by "replacement operator".
Thanks,
Laura


(0) --- nCells  = 2621442

(0) --- nLevels = 55

fatal:NclMalloc Failed:[errno=12]

Segmentation fault (core dumped)


On Fri, Nov 11, 2022 at 6:03 PM Dave Allured - NOAA Affiliate <
dave.allured at noaa.gov> wrote:

> Laura, I am not sure that will work.  But if it does, assign the result to
> a new variable, not a predefined one.  Or else use the replacement
> operator.  Try this, see if you get the expected result dimensions:
>
>       pp = pres(:,kpbl(:))
>
> Also, it is simply ncl-talk at ucar.edu.
>
>
> On Fri, Nov 11, 2022 at 7:06 PM Laura Fowler via ncl-talk <
> ncl-talk at mailman.ucar.edu> wrote:
>
>> Hello:
>> I have an integer array that includes the index of the PBL top (kpbl). I
>> would like to get the pressure (press) corresponding to the index of the
>> PBL top. A printVarSummary provides the following information:
>>
>> Variable: kpbl
>>
>> Type: integer
>>
>> Total Size: 10485768 bytes
>>
>>             2621442 values
>>
>> Number of Dimensions: 1
>>
>> Dimensions and sizes: [nCells | 2621442]
>>
>> Coordinates:
>>
>> Number Of Attributes: 2
>>
>>   units : unitless
>>
>>   long_name : index level of PBL top
>>
>>
>> Variable: pres
>>
>> Type: float
>>
>> Total Size: 576717240 bytes
>>
>>             144179310 values
>>
>> Number of Dimensions: 2
>>
>> Dimensions and sizes: [nCells | 2621442] x [nVertLevels | 55]
>>
>> Coordinates:
>>
>> Number Of Attributes: 3
>>
>>   _FillValue : 9.96921e+36
>>
>>   units : hPa
>>
>>   long_name : Pressure at layer midpoint
>>
>>
>> where nCells is the number of grid columns and nVertLevels is the
>> number of vertical levels. Below is the loop that I would like to convert
>> to a more compact array syntax:
>>
>>
>> do n = 0,nCells-1
>>
>>    pp(n) = pres(n,kpbl(n))
>>
>>    print("--- n = "+n +" "+kpbl(n) +"  "+pres(n,kpbl(n)) +"  "+pp(n))
>>
>> end do
>>
>>
>> When I convert the loop above to the following array syntax (see below),
>> I unfortunately get a "Segmentation Fault".
>>
>> pp(:) = pres(:,kpbl(:))
>>
>>
>> fatal:VarVarWrite: Number of dimensions on left hand side does not match
>> right hand side
>>
>> fatal:["Execute.c":8637]:Execute: Error occurred at or near line 207 in
>> file plot.pressure.ncl
>>
>>
>>
>> Can somebody help me figure this out. I would really appreciate it.
>>
>> Thanks,
>>
>> Laura
>>
>>
>> note: I posted the same email this morning, but to the address
>> ncl-talk-request at ucar.edu. Not sure which email to use for posts. Sorry
>> about the double email message.
>>
>>
>> !-------------------------------------------------------------------------------------------------------------
>> Laura D. Fowler
>>
>> Mesoscale and Microscale Meteorology Division (MMM)
>> National Center for Atmospheric Research
>> P.O. Box 3000, Boulder CO 80307-3000
>>
>> e-mail: laura at ucar.edu
>> phone: 303-497-1628
>>
>

-- 
!-------------------------------------------------------------------------------------------------------------
Laura D. Fowler

Mesoscale and Microscale Meteorology Division (MMM)
National Center for Atmospheric Research
P.O. Box 3000, Boulder CO 80307-3000

e-mail: laura at ucar.edu
phone: 303-497-1628

!-------------------------------------------------------------------------------------------------------------
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.ucar.edu/pipermail/ncl-talk/attachments/20221111/8c63fe31/attachment.htm>


More information about the ncl-talk mailing list