[ncl-talk] How to interpolate precipitation without losing much confidence?

Xueyan Zhang xueyanzhang520 at gmail.com
Thu Oct 1 13:29:33 MDT 2020


This is a good idea! Thanks a lot! I am wondering what is the difference
between aeral_conserve and the way I want because I look at aeral_conserve
method that says the purpose is to conserve fluxes or something.
Additionally, the way I did precipitation is also to keep the amount as
accurate as possible for each grid box.

Xueyan

On Thu, Oct 1, 2020 at 11:29 AM Dave Allured - NOAA Affiliate <
dave.allured at noaa.gov> wrote:

> Time consuming?  Do you have more dimensions than just (lat, lon)?
>
> To improve run time, rearrange code to maximize the use of gridded
> operations.  Loop over grid box offsets, not the whole grid.  Something
> like this for 4-D, incomplete and untested.  The subscripting (:,:,:,:) is
> only to clarify dimensions.  It can be included or omitted with no change
> in performance.
>
> do ioff = 0, 2
>    do joff = 0, 2
>       if (ioff .eq. 0 .and. joff .eq. 0) then
>          prc8 = prc24(:, :, ioff:nlat24-1:3, joff:mlon24-1:3)
>       else
>          prc8(:,:,:,:) = (/ prc8(:,:,:,:) + prc24(:, :, ioff:nlat24-1:3,
> joff:mlon24-1:3) /)
>       end if
>    end do
> end do
>
> prc8(:,:,:,:) = prc8(:,:,:,:) / (3 * 3)
>
> If you have missing values, the gridded approach will still work.  You
> will need to add data masking and a count array.
>
>
> On Thu, Oct 1, 2020 at 10:26 AM Xueyan Zhang <xueyanzhang520 at gmail.com>
> wrote:
>
>> Thanks! I'll check it out! It's just time consuming if I use loops...
>>
>> Xueyan
>>
>> On Thu, Oct 1, 2020 at 9:23 AM Dennis Shea <shea at ucar.edu> wrote:
>>
>>> There is no builtin function, As suggested by Dave:
>>>
>>>   **UNTESTED**  you nay have to make sure this is correct.
>>>
>>>   nm     =  3
>>>   nlat24  =
>>>   mlon24 =
>>>   prc8   = prc24(1:nlat24-2:mn,1:mlon24-2:mn)
>>>   prc8   = prc24 at _FillValue
>>>   printVarSummary(prc8)
>>>
>>>   dims_prc8 = dimsizes(prc8)
>>>   nlat8 = dims_prc8(0)
>>>   mlon8 = dims_prc8(1)
>>>   print(dims8_prc8)
>>>
>>> ; This does a straight arithmetic average.
>>>
>>>   do nl=1,nlat24-2,mm
>>>     do ml=1,mlon24-2,mn
>>>          prc8(nl/mn,ml/mn) = (prc24(nl+1,ml-1)+prc24(nl+1, ml
>>> )+prc24(nl+1,ml+1) \
>>>                                           +prc24(nl   ,ml-1)+prc24(nl
>>> , ml )+prc24(nl     ,ml+1)\
>>>                                           +prc24(nl-1,ml-1)+prc24(nl-1,
>>> ml )+prc24(nl-1,ml+1))/9.0
>>>     end do
>>>    end do
>>>
>>> On Thu, Oct 1, 2020 at 9:59 AM Dave Allured - NOAA Affiliate via
>>> ncl-talk <ncl-talk at mailman.ucar.edu> wrote:
>>>
>>>> In NCL, this kind of operation falls under regridding, not
>>>> interpolation.  I recommend one of the area averaging functions, such
>>>> as area_conserve_remap, area_hi2lores, or ESMF_regrid.
>>>>
>>>> None of those functions use the grid box calculation that you
>>>> specified.  If you want to perform that exact calculation over all grid
>>>> boxes falling in a 1/8 degree box, you will need to write your own NCL
>>>> code.  I suggest that you use the dim_avg_n function inside a double loop
>>>> over all output points on the 1/8 degree grid.  "There is more than one way
>>>> to do this."
>>>>
>>>>
>>>> On Thu, Oct 1, 2020 at 8:58 AM Xueyan Zhang via ncl-talk <
>>>> ncl-talk at mailman.ucar.edu> wrote:
>>>>
>>>>> Hello NCL,
>>>>>
>>>>> I want to interpolate precipitation data from 1/24 degree to 1/8
>>>>> degree. The way I wanna do it is to: calculate the average of all grid
>>>>> boxes falling in a 1/8 degree box? Is there any function in NCL?
>>>>>
>>>>> Thanks!
>>>>>
>>>>> Xueyan
>>>>>
>>>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.ucar.edu/pipermail/ncl-talk/attachments/20201001/7d414e1c/attachment.html>


More information about the ncl-talk mailing list