[ncl-talk] A NCL Mystery Solved
Marston Johnston
shejo284 at gmail.com
Thu Oct 19 09:18:26 MDT 2017
Good points Alan.
I tried to make some of this clear to Barry offline. But you are more “eloquent”.
We do need to see the problem - agreed.
/M
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Marston S. Ward, PhD
Department of Earth Sciences
University of Gothenburg, Sweden
Email: marston.johnston at gu.se
SkypeID: marston.johnston
Phone: +46-31-7864901
Only the fruitful thing is true!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
From: ncl-talk <ncl-talk-bounces at ucar.edu> on behalf of Alan Brammer <abrammer at albany.edu>
Date: Thursday, 19 October 2017 at 17:16
To: Barry Lynn <barry.h.lynn at gmail.com>
Cc: ncl-talk <ncl-talk at ucar.edu>
Subject: Re: [ncl-talk] A NCL Mystery Solved
:= effectively deletes the variable on the left hand side (if it exists) then points to the right hand side to the newly defined variable.
Therefore you can't use indexing and := as the left hand side variable no longer exists.
it would
kind of
be the same as:
if(isdefined("Hits_1"))
delete(Hits_1)
end if
Hits_1(i_day) = Hits_4km(i_day) + Hits_1(i_day)
;; not going to work as Hits_1 is now undefined.
;; Right hand side will work, but left hand side will fail.
You've deleted Hits_1 so there is no dimension or coordinates associated.
As Marston said though, your code just add's a bunch of zeros together, hopefully that was just pseudocode and there is something else going on.
If the right hand side is a different shape, type to the left hand side then you need the := operator, if you actually want to redefine the left hand side. It's hard to answer why you got an error based on code we can't see.
The := is great to easily handle redefining variables, but if you just throw it around everywhere then things will happen that you're not expecting.
Rather than blindly solving issues with the := operator, workout why you have the issue then decide if redefining the variable is the right answer.
On Thu, Oct 19, 2017 at 11:09 AM, Barry Lynn <barry.h.lynn at gmail.com> wrote:
and I am wondering why it is needed...
On Thu, Oct 19, 2017 at 5:49 PM, Barry Lynn <barry.h.lynn at gmail.com> wrote:
Hi:
It only gives the error when the : is included after Hits_1(i_day), as in :=.
The : was needed before I subscripted the variable with i_day.
Barry
On Thu, Oct 19, 2017 at 5:31 PM, Marston Johnston <shejo284 at gmail.com> wrote:
Hi Barry,
A couple things, not to be nit-picky but just my experience. I rewrote the script a bit. But I’m confused, your arrays are always empty so Hits_1 will always be 0.
This version of the script doesn’t give the error:
begin
n_days = 3
dims = 9
Hits_1 = new(n_days,"float")
Hits_4km = new(n_days,"float")
Hits_1 = 0.0
Hits_4km = 0.0
do ii_day = 0,dims-1
if (ii_day .eq.0)then
i_day = 0
else
i_day = (mod(ii_day,3))
end if
;printVarSummary(i_day)
;print("i_day = "+ i_day)
Hits_1(i_day) = Hits_4km(i_day) + Hits_1(i_day)
print(Hits_1(i_day))
end do
end
/M
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Marston S. Ward, PhD
Department of Earth Sciences
University of Gothenburg, Sweden
Email: marston.johnston at gu.se
SkypeID: marston.johnston
Phone: +46-31-7864901
Only the fruitful thing is true!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
From: ncl-talk <ncl-talk-bounces at ucar.edu> on behalf of Barry Lynn <barry.h.lynn at gmail.com>
Date: Thursday, 19 October 2017 at 16:18
To: ncl-talk <ncl-talk at ucar.edu>
Subject: [ncl-talk] A NCL Mystery Solved
Hi:
I have this error (it didn't obviously show up with a Google search).
fatal:Assign: Hits_1 is undefined, can not subscript an undefined variable
fatal:["Execute.c":8575]:Execute: Error occurred at or near line 17 in file ./test.ncl
Before defining Hits_1 as an array of size n_days, I needed the : to do the sum.
However, it is the : that causes the error when the variable is defined as an array.
I am not sure why, but I thought I would make a note of it for those who encounter the same error message.
begin
n_days = 3
dims = 9
Hits_1 = new(n_days,float)
printVarSummary(Hits_1)
Hits_4km = new(n_days,float)
Hits_1 = 0
Hits_4km = 0
do ii_day = 0,dims,1
if (ii_day .eq.0)then
i_day = tointeger(0)
else
i_day = (mod(ii_day,3))
end if
printVarSummary(i_day)
print("i_day = " + i_day)
Hits_1(i_day) := Hits_4km(i_day) + Hits_1(i_day) ; remove colon if Hits_1 is defined as an array.
end do
end
--
Barry H. Lynn, Ph.D
Senior Lecturer,
The Institute of the Earth Science,
The Hebrew University of Jerusalem,
Givat Ram, Jerusalem 91904, Israel
Tel: 972 547 231 170
Fax: (972)-25662581
C.E.O, Weather It Is, LTD
Weather and Climate Focus
http://weather-it-is.com
Jerusalem, Israel
Local: 02 930 9525
Cell: 054 7 231 170
Int-IS: x972 2 930 9525
US 914 432 3108
_______________________________________________ ncl-talk mailing list ncl-talk at ucar.edu List instructions, subscriber options, unsubscribe: http://mailman.ucar.edu/mailman/listinfo/ncl-talk
--
Barry H. Lynn, Ph.D
Senior Lecturer,
The Institute of the Earth Science,
The Hebrew University of Jerusalem,
Givat Ram, Jerusalem 91904, Israel
Tel: 972 547 231 170
Fax: (972)-25662581
C.E.O, Weather It Is, LTD
Weather and Climate Focus
http://weather-it-is.com
Jerusalem, Israel
Local: 02 930 9525
Cell: 054 7 231 170
Int-IS: x972 2 930 9525
US 914 432 3108
--
Barry H. Lynn, Ph.D
Senior Lecturer,
The Institute of the Earth Science,
The Hebrew University of Jerusalem,
Givat Ram, Jerusalem 91904, Israel
Tel: 972 547 231 170
Fax: (972)-25662581
C.E.O, Weather It Is, LTD
Weather and Climate Focus
http://weather-it-is.com
Jerusalem, Israel
Local: 02 930 9525
Cell: 054 7 231 170
Int-IS: x972 2 930 9525
US 914 432 3108
_______________________________________________
ncl-talk mailing list
ncl-talk at ucar.edu
List instructions, subscriber options, unsubscribe:
http://mailman.ucar.edu/mailman/listinfo/ncl-talk
_______________________________________________ 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/20171019/e84ede09/attachment.html>
More information about the ncl-talk
mailing list