[ncl-talk] Dimension Error Issue

Karin Meier-Fleischer meier-fleischer at dkrz.de
Sun Aug 11 07:20:59 MDT 2019


Hi Sakib,

try using the reassignment operator := for the lines defining p. 

p := p_b1
and
p := p_b2

-Karin

> Am 11.08.2019 um 14:00 schrieb Sakib Ahmed via ncl-talk <ncl-talk at ucar.edu>:
> 
> Dear NCL Community,
> 
> I'm stuck with a dimension size error issue. Following is what the code looks like:
> 
> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
> 
> begin
> 
>  ustar=new(1,float)
> 
>  z0=new((/1,4001/),float)
> 
>  ust=fspan(0,4,4001)
> 
> 
> ust_array=((/ust^8, ust^7, ust^6, ust^5, ust^4, ust^3, ust^2, ust^1, ust^0/))
> 
> 
> printVarSummary(ust_array)
> 
> ;polynomial
> 
> p_b1= (/-0.000098701949811,  0.001486209983407, -0.007584567778927,  0.019487056157620, -0.029314498154105,  0.024309735869547, -0.006997554677642,  0.001258400989803, -0.000043976208055/)
> 
> p_b2=(/-0.002182648458354,  0.046387047659009, -0.428830523588356,  2.251251262348664, -7.334368361013868, 15.163848944684784, -19.388290305787166,13.970227275905133, -4.319572176336596/)
> 
> g=9.806650
> 
> do i=0,4000
>     ustar=ust(i)
> 
>     if (ustar.lt.0.3) then
>         z0(:,i)=0.0185/g * ustar^2
> 
>     else if (ustar.lt. 2.35) then                      ; this is the loop where I'm having the issue; not sure how to properly write this in NCL
> 
>         p=p_b1
>         z0(:,i)=p*(ust_array(:,i))
> 
>     else if (ustar.lt.3) then
> 
>         p=p_b2
>         z0(:,i)=p*ust_array(:,i)
> 
> 
>     else
>         z0(:,i)=0.001305
> 
>     end if
>     end if
>     end if
> end do
> end
> 
> fatal:Dimension sizes on right hand side of assignment do not match dimension sizes of left hand side
> fatal:["Execute.c":8635]:Execute: Error occurred at or near line 32
> 
> 
> printVarSummary(ust_array)
> 
> Variable: ust_array
> Type: float
> Total Size: 144036 bytes
>             36009 values
> Number of Dimensions: 2
> Dimensions and sizes:   [9] x [4001]
> Coordinates:
> 
> printVarSummary(z0)
> 
> Variable: z0
> Type: float
> Total Size: 16004 bytes
>             4001 values
> Number of Dimensions: 2
> Dimensions and sizes:   [1] x [4001]
> Coordinates:
> Number Of Attributes: 1
>   _FillValue :  9.96921e+36
> 
> 
> I'm still new in NCL but I able to solve this same problem in Matlab and putting this below as a reference. But I'm really interested to do this in NCL.
> 
> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Matlab version;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
> 
> z0=[]; ust_array=[];
> ustar=[];
> 
> ust=[0:001:4];
> 
> ust_array=[ust.^8; ust.^7; ust.^6; ust.^5; ust.^4; ust.^3; ust.^2; ust.^1; ust.^0;];
> 
> % polynomial:
> p_b1= [-0.000098701949811,  0.001486209983407, ...
>     -0.007584567778927,  0.019487056157620, ...
>     -0.029314498154105,  0.024309735869547, ...
>     -0.006997554677642,  0.001258400989803, ...
>     -0.000043976208055];
> p_b2=[-0.002182648458354,  0.046387047659009, ...
>     -0.428830523588356,  2.251251262348664, ...
>     -7.334368361013868, 15.163848944684784, ...
>     -19.388290305787166,13.970227275905133, ...
>     -4.319572176336596];
> g=9.806650;
> 
> 
> for i=1:length(ust)
>     
>     ustar=ust(i);
>     if ustar < 0.3
>         z0(i)=0.0185/g * ustar^2;
>     elseif ustar < 2.35
>         p=p_b1;
>         z0(i)=p*ust_array(:,i);
>     elseif ustar < 3
>         p=p_b2;
>         z0(i)=p*ust_array(:,i);
>     else
>         z0(i)=0.001305;
>     end    
> end
> 
> Thank you in advance for the help. 
> Sakib
> 
> Sakib Ahmed
> Connecticut College
> Environmental Studies Major,
> New London, CT 06320
> 
> 
> _______________________________________________
> ncl-talk mailing list
> ncl-talk at ucar.edu
> List instructions, subscriber options, unsubscribe:
> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20190811/1c325c1b/attachment.html>


More information about the ncl-talk mailing list