[ncl-talk] Array subsetting
Laura Fowler
laura at ucar.edu
Thu Oct 24 14:24:09 MDT 2019
Dennis:
After following your suggestions, I got the following error messages:
fatal:Illegal subscript. Subscripts must be scalar or one dimensional
vectors
fatal:["Execute.c":8637]:Execute: Error occurred at or near line 74 in file
plot.xmb.ncl
The portion of the sourcecode that causes me issues is:
k2 = f2[:]->k22_deepc(itime_b:itime_e,:)
k2!0 = "nCells"
k2 at _FillValue = 0
;--- nifa:
nifa = f3[:]->nifa(itime_b:itime_e,:,:)
nifa at _FillValue = default_fillvalue(typeof(nifa))
printVarSummary(k2)
printVarSummary(nifa)
nifa_k2 = where(.not.ismissing(k2),nifa(:,:,k2),nifa at _FillValue)
printVarSummary(nifa_k2)
with the following outputs:
Variable: k2
Type: integer
Total Size: 330301552 bytes
82575388 values
Number of Dimensions: 2
Dimensions and sizes: [Time | 14] x [nCells | 5898242]
Coordinates:
Number Of Attributes: 3
_FillValue : 0
units : unitless
long_name : k22 level for deep convection in the Grell-Freitas convection
scheme
Variable: nifa
Type: float
Total Size: 18166585360 bytes
4541646340 values
Number of Dimensions: 3
Dimensions and sizes: [Time | 14] x [nCells | 5898242] x [nVertLevels | 55]
Coordinates:
Number Of Attributes: 3
_FillValue : 9.96921e+36
long_name : Ice-friendly aerosol number concentration
units : nb kg^{-1}
fatal:Illegal subscript. Subscripts must be scalar or one dimensional
vectors
fatal:["Execute.c":8637]:Execute: Error occurred at or near line 74 in file
plot.xmb.ncl
Thanks,
Laura
On Thu, Oct 24, 2019 at 11:55 AM Dennis Shea <shea at ucar.edu> wrote:
> You can not directly check for _FillValue. Specifically: k2.ne.k2 at _FillValue
> will not do the correct test.
> You must use a function. eg: in fortran:* ieee_is_nan(*x)
>
> In NCL: *ismissing
> <http://www.ncl.ucar.edu/Document/Functions/Built-in/ismissing.shtml> *...
> please read the documentation
>
>
> Try replacing:
> ifa = where(k2.ne.k2 at _FillValue,diag(:,k2),diag at _FillValue)
> with
> ifa = where(*.not.ismissing*(k2), diag(:,k2), diag at _FillValue)
>
> On Thu, Oct 24, 2019 at 10:37 AM Laura Fowler via ncl-talk <
> ncl-talk at ucar.edu> wrote:
>
>> Hello:
>>
>> I have the following arrays:
>>
>> Variable: diag
>>
>> Type: float
>>
>> Total Size: 1297613240 bytes
>>
>> 324403310 values
>>
>> Number of Dimensions: 2
>>
>> Dimensions and sizes: [nCells | 5898242] x [nVertLevels | 55]
>>
>> Coordinates:
>>
>> Number Of Attributes: 3
>>
>> _FillValue : 9.96921e+36
>>
>> long_name : Ice-friendly aerosol number concentration
>>
>> units : nb kg^{-1}
>>
>>
>>
>> Variable: k2
>>
>> Type: integer
>>
>> Total Size: 23592968 bytes
>>
>> 5898242 values
>>
>> Number of Dimensions: 1
>>
>> Dimensions and sizes: [nCells | 5898242]
>>
>> Coordinates:
>>
>> Number Of Attributes: 1
>>
>> _FillValue : 0
>>
>>
>> where nCells is the horizontal dimension and nVertLevels is the number of
>> vertical levels. you can think of k2 as the index for the base of a
>> convective cloud with a missing value set to zero. I would like to build an
>> array nifa which contains the value of diag at k2, such that:
>>
>>
>> nifa(iCell) = diag(:,k2(iCell)) for iCell varying between 0 and nCells-1.
>>
>>
>>
>> I tried to use the function "where" but this did not work. I get the
>> following:
>>
>> nifa = where(k2.ne.k2 at _FillValue,diag(:,k2),diag at _FillValue)
>>
>>
>> fatal:NclMalloc Failed:[errno=12]
>>
>> Segmentation fault (core dumped)
>>
>>
>>
>> I am not sure why this is not working. I also tried the ismissing
>> function but this did not work either. Any suggestions?
>>
>>
>> Thanks,
>>
>> Laura
>>
>>
>>
>> --
>>
>> !-------------------------------------------------------------------------------------------------------------
>> 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
>>
>>
>> !-------------------------------------------------------------------------------------------------------------
>> _______________________________________________
>> ncl-talk mailing list
>> ncl-talk at ucar.edu
>> List instructions, subscriber options, unsubscribe:
>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>
>
--
!-------------------------------------------------------------------------------------------------------------
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: <http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20191024/406f48dc/attachment.html>
More information about the ncl-talk
mailing list