[gradsusr] How to convert a string to a real number?

qinglan qinglan at hku.hk
Tue Jan 4 22:19:43 EST 2011


Dear all,
Thanks for the response, but the reply has not solved my problem. Let me make my question more specific. I would like to calculate the average of the SWDOWN (short wave radiation) over certain land type, here referring to rural land type (LU_index =not 1).
The following is my original code.  First of all, I want summate all the values of SWDOWN for all the grids with LU_index!=1 and LU_index!=1, then divided by the total number of nrr.  tim, m and n might be larger, here for simplifying purpose, setting them for only one loop each.
The problem is the outputs of SWDOWN.1 or SWDOWN.2 are not a single value, the program treat SWDOWN.1 as a vector, even the t, x, y (tim, m, n) are fixed to one value.
Firstly, there is an error for this sentence
      SWDOWN_nrr1=SWDOWN_nrr1+SWDOWN.1
Or I try to output SWDOWN.1 to a single value
     SW1=subwrd(SWDOWN.1,1)
 the program treats SW1 as a string, not a value, so
SW5=SW1+SW2               makes mistakes, as well as       SWDOWN_nrr1=SWDOWN_nrr1+'SW1'
Possible solutions for my problems are:  convert the output of SWDOWN.1 to a single value, which I can use for summation.      SWDOWN_nrr1=SWDOWN_nrr1+SWDOWN.1;
or convert a string to a value, which I can also use it for summation.    SWDOWN_nrr1=SWDOWN_nrr1+'SW1'

Thank you very much!
Qinglan Li


 'reinit'
'open Small_Nest3_Moisture_2000July23-27_00_UTC_2000_land_AH100.ctl'
'open Small_Nest3_Moisture_2000July23-27_00_UTC_1980_land_AH100_changed_0.7profile.ctl'
tim=25
while(tim<=25)
SWDOWN_rr1=0
SWDOWN_rr2=0
  'set t 'tim''
nrr=0
SWDOWN_nrr1=0
SWDOWN_nrr2=0
m=1
while(m<=1)
n=1
while(n<=1)
  'set x 'm''
  'set y 'n''
  LU1=LU_index.1
  LU2=LU_index.2
  SW1=subwrd(SWDOWN.1,1)
  SW2=subwrd(SWDOWN.2,1)
  SW5=SW1+SW2                                   ********error
  SW3=1.1
  SW4=2.2
  if (LU1!=1 & LU2!=1)
      nrr=nrr+1
      SWDOWN_nrr1=SWDOWN_nrr1+'SW1'            ******error
      SWDOWN_nrr2=SWDOWN_nrr2+'SW2'           ******error
  endif
  n=n+1
endwhile
  m=m+1
endwhile
SWDOWN_rr1=SWDOWN_nrr1/nrr
SWDOWN_rr2=SWDOWN_nrr2/nrr
*'d SWDOWN_rr1'
*'d SWDOWN_rr2'
 'd 'SWDOWN_nrr1''
 'd 'SWDOWN_nrr2''
 'fprintf 'LU1' LU1.txt'
 'd 'LU2''
 'fprintf 'SW1' SW1.txt'
 'fprintf 'SW5' SW5.txt'
 'fprintf 'nrr' nrr.txt'
 'fprintf 'SWDOWN_nrr2' SWDOWN_nrr2.txt'
  tim=tim+1
endwhile

________________________________
From: gradsusr-bounces at gradsusr.org [gradsusr-bounces at gradsusr.org] On Behalf Of Jeffrey Duda [jdduda at iastate.edu]
Sent: Wednesday, January 05, 2011 3:34 AM
To: GrADS Users Forum
Subject: Re: [gradsusr] How to convert a string to a real number?

As far as I'm aware, you shouldn't have to explicitly convert in grads scripting.  Just use your quotes correctly.  Here's an example from a script I wrote to compute theta-e:

These constants are set as variables within the grads script only (i.e., they don't exist in the command window...I can't display Rv or Rd etc.).  Thus they're regarded as constants or strings.

Rv = 461.5
Rd = 287.05
Cp = 1005
lv = 2.5e6

In the actual theta-e computation below, notice how the variables are used between single quotes so as not to be a part of a command that would otherwise be issued in the command window.  This is all you should have to do to use a string as a number or vice versa.

  'tempK = tc + 273'
  'es = 6.11*exp((2.5e6/461.5)*((1/273) - (1/tempK)))'
  'e = qvapor*((p+pb)/100) / (qvapor + 0.622)'
  'equivt = tempK + 'Lv'*qvapor/'Cp'
  'thetae = equivt*pow(1000/slp,'Rd'/'Cp')'


I hope this helps, but ask more questions if it doesn't.

Jeff Duda

On Tue, Jan 4, 2011 at 1:24 PM, Murphy, Darren W <dwmurphy at nps.edu<mailto:dwmurphy at nps.edu>> wrote:
I’d like to second this question.  I am having the same issue.  I think the Grads literature says that some commands can use a number as a string for calculations.  However, when I try and use my number “string”  in a max or min Grads function, it throws an error.

Thanks,
Darren


On 1/4/11 6:45 AM, "qinglan" <qinglan at hku.hk<http://qinglan@hku.hk>> wrote:

Dear All,

Is there anybody know how to convert a string to a real number in Grads? For example, if my string is ‘300.5’, I want to get the value of 300.5, which is a real number, how to do that?

Really appreciate your help!
Best regards,
Qinglan Li


________________________________
_______________________________________________
gradsusr mailing list
gradsusr at gradsusr.org<http://gradsusr@gradsusr.org>
http://gradsusr.org/mailman/listinfo/gradsusr

_______________________________________________
gradsusr mailing list
gradsusr at gradsusr.org<mailto:gradsusr at gradsusr.org>
http://gradsusr.org/mailman/listinfo/gradsusr




--
Jeff Duda
Iowa State University
Meteorology Graduate Student
3134 Agronomy Hall
www.meteor.iastate.edu/~jdduda<http://www.meteor.iastate.edu/~jdduda>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://gradsusr.org/pipermail/gradsusr/attachments/20110105/aee1172e/attachment-0003.html 


More information about the gradsusr mailing list