<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Tahoma
}
--></style>
</head>
<body class='hmmessage'>
Hello,<br><br>My name is Cristian. I am having some troubles to perform some skewt graphics using WRF output.<br>I have created a binary and .ctl archives using ARWpost.<br>The file is OK, and no troubles are expected.<br><br>The problem starts when I want to create a skewt graphic.<br>The temperature and dewpoint profiles are OK, but no information about wind is shown. Neither the Hodograpf, nor the wind speed and direction profiles are shown.<br><br>No message of an error apears, and i have no idea what is happening. <br>Even the undef value is th same as the .ctl archive.<br><br>I am using Grads version 1.a8, in UBUNTU 9.04.<br><br>Here is the script. I only changed parameters at the top of the archive.<br><br>I really appreciate your help.<br><br>Thanks<br><br>-----------------------------------------------------------------------------------------------------------------------------------------<br>* Script para construir radiosondeos<br><br>'reinit'<br>'run /home/cristian/Escritorio/Experimentos/lib/jaecol'<br>'set display color white'<br>'reset'<br><br>* Defino el archivo a utilizar<br><br>'open 20081004_YSU.ctl'<br>*path=''<br><br>* Latitud Longitud y tiempo<br><br>lat=-46<br>lon=-68<br>time=12z04Oct2008<br><br><br>'set time 'time<br>'set lon 'lon<br>'set lat 'lat<br><br>*Entre que niveles hace el perfil hacerlo entre 1000 y 600<br><br>levmax=925<br>levmin=500<br><br>'set lev&nbsp; 'levmax ' ' levmin<br><br>*calculo Td a partir de HR, P y T<br>*'define et=(-2937.4/(t))-(4.9283*log10(t))+22.5518'<br>*'define es=pow(10,et)*10'<br>*'define e=es*0.01*hr'<br>*'define q=0.622*e/(lev-e)'<br>*'define aux1=q*1000*(1.+0.81*q)'<br>*'define aux2=0.2854*(1.-0.28*q)'<br>*'define aux3=(1000/lev)'<br>*'define td=243.5/((17.67/(log(e/6.11)))-1)'<br>*'define tc=t-273'<br><br>'set ylopts 1 5 0.18'<br><br>plotskew(tc,td,u,v)<br><br>'q dims'<br>line1=sublin(result,4)<br>line2=sublin(result,5)<br>itime1=subwrd(line1,6)<br>itit=substr(itime1,1,6)<br>itime1=subwrd(line2,6)<br>itime=substr(itime1,1,12)<br>d=substr(itime1,4,2)<br>m=substr(itime1,6,3)<br>y=substr(itime1,9,4)<br>h=substr(itime1,1,2)<br>lati=-1*lat<br>loni=-1*lon<br><br>'draw title Perfil vertical de T y Td en 'lati'S y 'loni'W\'itime<br>'printim 'd'.'h'sondeo.png png x600 y800 white'<br><br>function plotskew(sndtemp,snddewp,u,v)<br><br>*El valor Undef que se coloca acá debe coincidir con el valor undef del CTL, sinó hay problemas<br>*en la construcción de la hodógrafa y del perfil vertical de viento.<br>undef=1.e30<br>*************************************************************************<br>*<br>* GrADS Script to Plot a SkewT/LogP Diagram&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>*<br>* Bob Hart <br>* Penn State University / Dept of Meteorology<br>* Last Update:&nbsp; January 23, 2001<br>*<br>* Recent Changes:<br>*<br>* 01/23/01 - Fixed a small bug in the theta-e calculation.&nbsp; <br>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Errors averaged 0.5-3K.&nbsp; Thank you George Bryan.<br>*<br>* 11/10/99 - Change in calculation method for CAPE/CIN.&nbsp; Trapezoid <br>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; integration method is now used.&nbsp; Speeds up execution<br>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; by 25%, and increases accuracy by 5-10%.<br>*<br>* 10/18/99 - Minor glitch fixed that occasionally caused crash.<br>*<br>*&nbsp; 8/26/99 - Datasets with missing data can now be used.<br>*<br>* Features:<br>*&nbsp;&nbsp; - All features of standard skewt/logp plot<br>*&nbsp;&nbsp; - RH sounding <br>*&nbsp;&nbsp; - LCL location<br>*&nbsp;&nbsp; - Parcel trajectory for both sfc based convection and elevated from<br>*&nbsp;&nbsp;&nbsp;&nbsp; most unstable level (highest theta-e level reported)<br>*&nbsp;&nbsp; - Stability indices and precipitable water calculations<br>*&nbsp;&nbsp; - CAPE &amp; CIN Calculations<br>*&nbsp;&nbsp; - Wind Profile<br>*&nbsp;&nbsp; - Hodograph / Hodograph scaling<br>*&nbsp;&nbsp; - Helicity and SR Helicity Calculations and Display<br>*&nbsp;&nbsp; - Color aspects of output<br>*&nbsp;&nbsp; - Line Thickness, style aspects of output<br>*&nbsp;&nbsp; - Can be run in either PORTRAIT or LANDSCAPE mode.<br>*<br>* There are numerous tunable parameters below to change the structure<br>* and output for the diagram.<br>*<br>* Function Arguments:<br>*&nbsp;&nbsp;&nbsp; sndtemp - temperature data (Celsius) as a function of pressure<br>*&nbsp;&nbsp;&nbsp; snddewp - dewpoint data (Celsius) as a function of pressure&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>*&nbsp;&nbsp;&nbsp; sndspd&nbsp; - wind speed data (knots) as a function of pressure<br>*&nbsp;&nbsp;&nbsp; snddir&nbsp; - wind direction data as a function of pressure<br>*<br>* Use '-1' for any of the above 4 arguments to indicate that you<br>* are not passing that variable.&nbsp; The appropriate options will <br>* be ignored based on your specifying '-1' for that variable.<br>*<br>* NOTE:&nbsp; Make sure to set the vertical range of the plot before running.<br>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; I.e., "SET LEV 1050 150", for example.&nbsp;&nbsp; This does not have to <br>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; be limited to the pressure range of your data.<br>*<br>* Labelling:&nbsp; Pressure/Height is labelled along left side.&nbsp; Temperature is <br>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; labelled along bottom.&nbsp; Mixing ratio is labelled along right<br>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; side/top.<br>*<br>* <br>* PROBLEMS:&nbsp; First check out the web page for the script (which also<br>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; has a link to a FAQ with answers to many common questions<br>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; about using the script):<br>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://www.ems.psu.edu/~hart/skew.html<br>*<br>* Please send any further problems, comments, or suggestions to <br>* &lt;hart@ems.psu.edu&gt;<br>*<br>* ACKNOWLEDGMENTS:&nbsp; Thanks go to the innumerable users who have helped<br>* fine tune the script from the horrible mess from which it began.<br>* In particular, thanks go out to Steve Lord (NCEP), Mike Fiorino (ECMWF),<br>* George Bryan (PSU), Davide Sacchetti (CMIRL), and Enrico Minguzzi (CMIRL).<br>*<br>**************************************************************************<br>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; !!!!!&nbsp;&nbsp; BEGINNING OF USER-SPECIFIED OPTIONS&nbsp; !!!!!!<br>**************************************************************************<br>*<br>* --------------------- Initialization options&nbsp; ----------------------<br>*<br>* ClrScrn = Whether to clear the screen before drawing diagram<br>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [1 = yes, 0 = no]<br><br>ClrScrn = 1<br><br>*<br>* ------------------- Define Skew-T Diagram Shape/Slope-----------------<br>*<br>* (P1,T1) = Pres, Temp of some point on left-most side<br>* (P2,T2) = Pres, Temp of some point on right-most side<br>* (P3,T3) = Pres, Temp of some point in diagram which is mid-point <br>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; in the horizontal between 1 and 2.<br>*<br>* P1, P2, P3 are in mb ; T1, T2, T3 are in Celsius<br>*<br>* These define the SLOPE and WIDTH of the diagram as you see it but DO NOT<br>* DEFINE THE HEIGHT of the diagram as you see it.&nbsp; In other words,<br>* 1 and 2 do NOT necessarily need to be at the bottom of the diagram and<br>* 3 does NOT necessarily need to be at the top.&nbsp; THE VERTICAL PRESSURE <br>* RANGE OF THE SKEWT AS YOU SEE IT IS DETERMINED BY YOUR 'SET Z ...'&nbsp; <br>* COMMAND OR THE 'SET LEV ...' COMMAND BEFORE RUNNING THIS SCRIPT.<br>*<br>*&nbsp;&nbsp;&nbsp; _______________________<br>*&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>*&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>*&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>*&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>*&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>*&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>*&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>*&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>*&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>*&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>*&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>*&nbsp;&nbsp; |1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2|<br>*&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>*&nbsp;&nbsp; |_______________________|<br>*&nbsp;&nbsp; <br>*<br>* A good set of defining points are given below.&nbsp;&nbsp; Feel free<br>* to experiment with variations.<br><br><br>*P1 = 1000<br>*T1 = -40<br><br>*P2 = 1000<br>*T2 = 40<br><br>*P3 = 200<br>*T3 = 0<br><br>* Another good set of defining points suggested by Juan Ruiz (Emagrama)<br>* are:<br>*<br>&nbsp;P1 = 1000<br>&nbsp;T1 = -80<br>*<br>&nbsp;P2 = 1000<br>&nbsp;T2 = 40<br>*<br>&nbsp;P3 = 500<br>&nbsp;T3 = -20<br><br>* ------------------- Contour Intervals / Levels --------------------------<br>*<br>* All variables below are contour intervals/levels for diagram<br>*<br>* Thetaint = interval for potential temperature lines<br>* Thetwint = interval for moist pseudo adiabats<br>* tempint&nbsp; = interval for temperature lines<br>* wsclevs&nbsp; = contour LEVELS for mixing ratio lines<br>*<br>*<br>thetaint= 20<br>thetwint= 10<br>tempint = 10<br>wsclevs = ".1 .5 1 3 6 10 15 20 25 30"<br>*<br>*<br>* ------------------------ Output Options --------------------------------<br>*<br>* All variables below are logical .. 1=yes, 0=no, unless otherwise<br>* specified.<br>*<br>* DrawBarb = Draw wind barbs along right side of plot<br>* DrawThet = Draw dry adiabats<br>* DrawThtw = Draw moist pseudo-adiabats<br>* DrawTemp = Draw temperature lines <br>* DrawMix&nbsp; = Draw mixing ratio lines<br>* DrawTSnd = Draw temperature sounding<br>* DrawDSnd = Draw dewpoint sounding<br>* DrawRH&nbsp;&nbsp; = Draw relative humidity sounding<br>* DrawPrcl = Draw parcel path from surface upward<br>* DrawPMax = Draw parcel path from most unstable level upward<br>* DrawIndx = Display stability indices &amp; CAPE<br>* DrawHeli = Calculate and display absolute and storm-relative helicity<br>* DrawHodo = Draw hodograph<br>* DrawPLev = Draw Pressure Levels <br>* DrawZLev = Draw height levels and lines <br>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 = no lines<br>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 = above ground level (AGL)<br>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2 = above sea level (ASL)<br>* DrawZSTD = Draw Height levels using standard atm lapse rate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>* LblAxes&nbsp; = Label the x,y axes (temperature, pressure,mixing ratio)<br>*<br>* ThtwStop = Pressure level at which to stop drawing Theta-w lines<br>* MixStop&nbsp; = Pressure level at which to stop drawing Mixratio lines<br><br>DrawBarb= 1<br>DrawThet= 1<br>DrawThtw= 1<br>DrawTemp= 1<br>DrawMix = 1<br>DrawTSnd= 1<br>DrawDSnd= 1<br>DrawRH&nbsp; = 0<br>DrawPrcl= 1<br>DrawPMax= 1<br>DrawIndx= 1<br>DrawHeli= 0<br>DrawHodo= 1<br>DrawPLev= 1<br>DrawZLev= 0<br>DrawZSTD= 0<br>LblAxes = 1<br><br>ThtwStop = 200<br>MixStop&nbsp; = 400<br><br><br>* <br>* -----------------&nbsp; Sounding Geography options ------------------------<br>*<br>* SfcElev = Elevation above sea-level (meters) of lowest level reported<br>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; in sounding.&nbsp; Used only if DrawZLev = 2<br><br>SfcElev = 0<br><br><br>*<br>* ------------------ Thermodynamic Index Options --------------------<br>* <br>* All variables here are in inches.&nbsp; Use -1 for the default values.<br>*<br>*&nbsp; Text1XC = X-location of midpoint of K,TT,PW output box<br>*&nbsp; Text1YC = Y-location of midpoint of K,TT,PW output box<br>*&nbsp; Text2XC = X-Location of midpoint of surface indices output box<br>*&nbsp; Text2YC = Y-location of midpoint of surface indices output box<br>*&nbsp; Text3XC = X-Location of midpoint of most unstable level-based indices<br>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; output box<br>*&nbsp; Text3YC = Y-location of midpoint of most unstable level-based indices<br>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; output box<br><br>Text1XC = -1<br>Text1YC = -1<br>Text2XC = -1<br>Text2YC = -1<br>Text3XC = -1<br>Text3YC = -1<br><br>*<br>* ----------------- Wind Barb Profile Options ----------------------------<br>*<br>* All variables here are in units of inches, unless otherwise specified<br>*<br>*&nbsp; barbint = Interval for plotting barbs (in units of levels)<br>*&nbsp; poleloc = X-Location of profile.&nbsp; Choose -1 for the default.<br>*&nbsp; polelen = Length of wind-barb pole<br>*&nbsp; Len05&nbsp;&nbsp; = Length of each 5-knot barb <br>*&nbsp; Len10&nbsp;&nbsp; = Length of each 10-knot barb<br>*&nbsp; Len50&nbsp;&nbsp; = Length of each 50-knot flag<br>*&nbsp; Wid50&nbsp;&nbsp; = Width of base of 50-knot flag <br>*&nbsp; Spac50&nbsp; = Spacing between 50-knot flag and next ror occurred on libarb/flag <br>*&nbsp; Spac10&nbsp; = Spacing between 10-knot flag and next flag<br>*&nbsp; Spac05&nbsp; = Spacing between 5-knot flag and next flag<br>*&nbsp; Flagbase= Draw flagbase (filled circle) for each windbarb [1=yes, 0 =no] <br>*&nbsp; Fill50&nbsp; = Solid-fill 50-knot flag [1=yes, 0=no]<br>*&nbsp; barbline= Draw a vertical line connecting all the wind barbs [1=yes, 0=no]<br>*<br>barbint = 1<br>poleloc = -1<br>polelen = 0.35<br>len05&nbsp;&nbsp; = 0.07<br>len10&nbsp;&nbsp; = 0.15<br>len50&nbsp;&nbsp; = 0.15<br>wid50&nbsp;&nbsp; = 0.06<br>spac50&nbsp; = 0.07<br>spac10&nbsp; = 0.05<br>spac05&nbsp; = 0.05<br>Fill50&nbsp; = 1<br>flagbase= 1<br>barbline= 1<br><br>*<br>*<br>*---------------- Hodograph Options -------------------------------------<br>*<br>* All variables here are in units of inches, unless otherwise specified<br>*<br>* HodXcent= x-location of hodograph center.&nbsp; Use -1 for default location.<br>* HodYcent= y-location of hodograph center.&nbsp; Use -1 for default location.<br>* HodSize = Size of hodograph in inches <br>* NumRing = Number of rings to place in hodograph (must be at least 1)<br>* HodRing = Wind speed increment of each hodograph ring<br>* HodoDep = Depth (above lowest level in mb) of end of hodograph trace<br>* TickInt = Interval (in kts) at which tick marks are drawn along the axes<br>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Use 0 for no tick marks.<br>* TickSize= Size of tick mark in inches<br>* Text4XC = X-location of midpoint of hodograph text output. Use -1 for default.<br>* Text4YC = Y-location of midpoint of hodograph text output. Use -1 for default.<br><br>HodXcent= 6<br>HodYcent= 9<br>HodSize = 2<br>NumRing = 3<br>HodRing = 10<br>HodoDep = 500<br>TickInt = 5<br>TickSize= 0.1<br>Text4XC = -1<br>Text4YC = -1<br><br>*--------------- Helicity Options ---------------------------------------<br>*<br>* MeanVTop = Top pressure level (mb) of mean-wind calculation<br>* MeanVBot = Bottom pressure level (mb) of mean-wind calculation<br>* HelicDep = Depth in mb (above ground) of helicity integration<br>* StormMot = Type of storm motion estimation scheme.&nbsp; Use following:&nbsp; <br>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 = No departure from mean wind.<br>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 = Davies-Jones (1990) approach<br>* FillArrw = Whether to fill the arrowhead of the storm motion vector<br>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [1 = yes, 0 = no]<br><br>MeanVTop= 300 <br>MeanVBot= 850<br>HelicDep= 300<br>StormMot= 0<br>FillArrw= 1<br><br>*<br>*---------------- Color Options ------------------------------------------<br>*<br>* ThetCol = Color of dry adiabats<br>* TempCol = Color of temperature lines<br>* MixCol&nbsp; = Color of mixing ratio lines<br>* ThtwCol = Color of moist adiabats<br>* TSndCol = Color of Temperature Sounding <br>* DSndCol = Color of Dewpoint Sounding<br>* RHCol&nbsp;&nbsp; = Color of RH Sounding<br>* PrclCol = Color of parcel trace<br>* BarbCol = Color of wind barbs (choose -1 for color according to speed)<br>* HodoCol = Color of hodograph trace<br><br>ThetCol = 23<br>TempCol = 79<br>MixCol&nbsp; = 38<br>ThtwCol = 39<br>TSndCol = 29 <br>DSndCol = 49<br>RHCol&nbsp;&nbsp; = 3<br>PrclCol = 1<br>BarbCol = 1<br>HodoCol = 2<br><br>*<br>*-------------------- Line Style Options ------------------------------------<br>*<br>* GrADS Styles: 1=solid;2=long dash;3=short dash;4=long,short dashed;<br>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5=dotted;6=dot dash;7=dot dot dash<br>*<br>* ThetLine = Line Style of dry adiabats<br>* TempLine = Line Style of temperature lines<br>* MixLine&nbsp; = Line Style of mixing ratio lines<br>* ThtwLine = Line Style of moist adiabats<br>* TSndLine = Line Style of Temperature Sounding<br>* DSndLine = Line Style of Dewpoint Sounding<br>* RHLine&nbsp;&nbsp; = Line Style of RH sounding<br>* PrclLine = Line Style of parcel trace<br>* HodoLine = Line Style of hodograph trace<br>*<br><br>ThetLine = 1<br>TempLine = 1<br>MixLine&nbsp; = 5<br>ThtwLine = 2<br>TSndLine = 1<br>DSndLine = 2<br>RHLine&nbsp;&nbsp; = 1<br>PrclLine = 3<br>HodoLine = 1<br><br>*<br>*------------------- Line Thickness Options---------------------------------<br>* GrADS Line Thickness: increases with increasing number. Influences <br>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hardcopy output more strongly than screen output.<br>*<br>*<br>* ThetThk = Line Thickness of dry adiabats<br>* TempThk = Line Thickness of temperature lines<br>* MixThk&nbsp; = Line Thickness of mixing ratio lines<br>* ThtwThk = Line Thickness of moist adiabats<br>* TSndThk = Line Thickness of temperature sounding<br>* DSndThk = Line thickness of dewpoint sounding<br>* RHThk&nbsp;&nbsp; = Line thickness of RH sounding<br>* PrclThk = Line thickness of parcel trace<br>* HodoThk = Line thickness of hodograph trace<br>* BarbThk = Line thickness of wind barbs<br><br>ThetThk = 3<br>TempThk = 1<br>MixThk&nbsp; = 7<br>ThtwThk = 3<br>TSndThk = 12<br>DSndThk = 12<br>RHThk&nbsp;&nbsp; = 8<br>PrclThk = 6 <br>HodoThk = 6 <br>BarbThk = 2<br><br>*<br>*------------------- Data Point Marker Options -----------------------------<br>* GrADS Marker Types: 0 = none ; 1 = cross ; 2 = open circle ; <br>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3 = closed circle ; 4 = open square ; 5 = closed square<br>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6 = X ; 7 = diamond ; 8 = triangle ; 9 = none<br>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10 = open circle with vertical line ; 11 = open oval<br>*<br>* TSndMrk = Mark type of data point marker for temperature sounding<br>* DSndMrk = Mark type of data point marker for dewpoint sounding<br>* RHMrk&nbsp;&nbsp; = Mark type of data point marker for relative humidity sounding<br>* MrkSize = Mark size (inches) of each data marker<br><br>TSndMrk = 3<br>DSndMrk = 3<br>RHMrk&nbsp;&nbsp; = 0<br>MrkSize = 0.1<br><br><br>* !!!!! YOU SHOULD NOT NEED TO CHANGE ANYTHING BELOW HERE !!!!!<br>****************************************************************************<br><br>*-------------------------------------------<br>* grab user-specified environment dimensions<br>*-------------------------------------------<br><br>"q dims"<br>rec=sublin(result,2)<br>_xtype=subwrd(rec,3)<br>_xval=subwrd(rec,9)<br>rec=sublin(result,3)<br>_yval=subwrd(rec,9)<br>_ytype=subwrd(rec,3)<br>rec=sublin(result,4)<br>_ptype=subwrd(rec,3)<br>_pmax=subwrd(rec,6)<br>_pmin=subwrd(rec,8)<br>_zmin=subwrd(rec,11)<br>_zmax=subwrd(rec,13)<br>rec=sublin(result,5)<br>_ttype=subwrd(rec,3)<br>_tval=subwrd(rec,9)<br><br>"q file"<br>rec=sublin(result,5)<br>_zmaxfile=subwrd(rec,9)<br><br>*-------------------------------------------------------------<br>* Check to ensure that dimensions are valid.&nbsp; Warn &amp; exit if not.<br>*--------------------------------------------------------------<br><br>dimrc=0<br>If (_xtype != "fixed")<br>&nbsp; say "X-Dims Error:&nbsp; Not fixed.&nbsp; Use 'set lon' or 'set x' to specify a value."<br>&nbsp; dimrc=-1<br>Endif<br><br>If (_ytype != "fixed")<br>&nbsp; say "Y-Dims Error:&nbsp; Not fixed.&nbsp; Use 'set lat' or 'set y' to specify a value"<br>&nbsp; dimrc=-1<br>Endif<br><br>If (_ptype != "varying")<br>&nbsp;&nbsp; say "Z-Dims Error:&nbsp; Not varying.&nbsp; Use 'set lev' or 'set z' to specify a range."<br>&nbsp;&nbsp; dimrc=-1<br>Endif<br><br>If (_ttype != "fixed")<br>&nbsp; say "Time Error:&nbsp;&nbsp;&nbsp;&nbsp; Not fixed.&nbsp; Use 'set time' or 'set t' to specify a value"<br>&nbsp; dimrc=-1<br>Endif<br><br><br>If (dimrc &lt; 0)<br>&nbsp; Return(-1)<br>Endif<br><br><br>*<br>* A few global variables used in units conversion<br>*<br><br>_pi=3.14159265<br>_dtr=_pi/180<br>_rtd=1/_dtr <br>_ktm=0.514444<br>_mtk=1/_ktm<br><br>* A few global constants used in thermo calcs<br><br>_C0=0.99999683 <br>_C1=-0.90826951/100<br>_C2= 0.78736169/10000<br>_C3=-0.61117958/1000000<br>_C4= 0.43884187/pow(10,8) <br>_C5=-0.29883885/pow(10,10)<br>_C6= 0.21874425/pow(10,12)<br>_C7=-0.17892321/pow(10,14)<br>_C8= 0.11112018/pow(10,16)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>_C9=-0.30994571/pow(10,19)<br><br>*Calculo la dirección e intensidad del viento usando las funciones GetWdir y GetWsp<br><br>&nbsp;<br><br><br><br><br>* A pressure array of power calculations which should be performed<br>* only once to reduce execution time.<br><br>zz=1100<br>while (zz &gt; 10)<br>&nbsp;&nbsp;&nbsp; subscr=zz/10<br>&nbsp;&nbsp;&nbsp; _powpres.subscr=pow(zz,0.286)<br>&nbsp;&nbsp;&nbsp; zz=zz-10<br>endwhile<br><br>*<br>* Turn off options not available due to user data limitations<br>*<br><br>If (ClrScrn = 1) <br>&nbsp; "clear"<br>Endif<br><br>If (sndspd = -1 | snddir = -1) <br>&nbsp; DrawBarb = 0<br>&nbsp; DrawHodo = 0<br>&nbsp; DrawHeli = 0<br>Endif<br><br>If (snddewp = -1) <br>&nbsp; DrawDSnd = 0<br>&nbsp; DrawRH&nbsp;&nbsp; = 0<br>&nbsp; DrawPrcl = 0<br>&nbsp; DrawPMax = 0<br>&nbsp; DrawIndx = 0<br>Endif<br><br>If (sndtemp = -1)<br>&nbsp; DrawTSnd = 0<br>&nbsp; DrawRH&nbsp;&nbsp; = 0<br>&nbsp; DrawPrcl = 0<br>&nbsp; DrawPMax = 0<br>&nbsp; DrawIndx = 0<br>&nbsp; DrawZLev = 0<br>Endif<br><br>If (NumRing &lt; 1) <br>&nbsp; DrawHodo = 0<br>Endif <br>&nbsp; <br>"q gxinfo"<br>rec=sublin(result,2)<br>xsize=subwrd(rec,4)<br><br>If (xsize = 11) <br>&nbsp;&nbsp; PageType = "Landscape"<br>Else<br>&nbsp;&nbsp; PageType = "Portrait"<br>Endif<br>&nbsp; <br>*------------------------------------------------------<br>* calculate constants determining slope/shape of diagram<br>* based on temp/pressure values given by user<br>*-------------------------------------------------------<br><br>"set x 1"<br>"set y 1"<br>"set z 1"<br>"set t 1"<br>_m1=(T1+T2-2*T3)/(2*log10(P2/P3))<br>_m2=(T2-T3-_m1*log10(P2/P3))/50<br>_m3=(T1-_m1*log10(P1))<br><br>"set z "_zmin" "_zmax&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>"set zlog on"<br>"set xlab off"<br><br>*-------------------------------------------------<br>* perform coordinate transformation to Skew-T/LogP<br>*-------------------------------------------------<br><br>"set gxout stat"<br>"set x "_xval<br>"set y "_yval<br>"set t "_tval<br>"define tempx=("sndtemp"-"_m1"*log10(lev)-"_m3")/"_m2<br>"define dewpx=("snddewp"-"_m1"*log10(lev)-"_m3")/"_m2<br><br>If (PageType = "Portrait") <br>&nbsp;&nbsp; "set parea 0.7 7 0.75 10"<br>Else<br>&nbsp;&nbsp; "set parea 0.7 6.5 0.5 8"<br>Endif<br>&nbsp; <br>"set axlim 0 100"<br>"set lon 0 100"<br>"set grid on 1 1"<br><br>"set z "_zmin " " _zmax<br>"set lon 0 100"<br>"set clevs -900"<br>"set gxout contour"<br><br>*-------------------------------------<br>* Draw pressure lines <br>*-------------------------------------<br><br>If (DrawPLev = 0) <br>&nbsp;&nbsp; "set ylab off"<br>Else<br>&nbsp;&nbsp; "set ylab on"<br>&nbsp;&nbsp; "set ylopts 1 5 0.18"<br>&nbsp;&nbsp; "set xlopts 1 3 0.18"<br>Endif<br><br>"d lon"<br><br>*--------------------------------------<br>* Determine corners of skewt/logp frame<br>*--------------------------------------<br><br>"q w2xy 100 "_pmin<br>rxloc=subwrd(result,3)<br>tyloc=subwrd(result,6)<br>"q w2xy 0 "_pmax<br>lxloc=subwrd(result,3)<br>byloc=subwrd(result,6)<br><br>If (DrawPLev = 1 &amp; LblAxes = 1)<br>&nbsp;&nbsp; "set strsiz 0.15"<br>&nbsp;&nbsp; "set string 1 c 3 0"<br>&nbsp;&nbsp; If (PageType = "Portrait") <br>* "draw string 0.5 10.5 hPa."<br>&nbsp;&nbsp; Else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "draw string 0.5 8.35 hPa."<br>&nbsp;&nbsp; Endif<br>Endif<br><br>*---------------------------------------------------<br>* Calculate &amp; draw actual height lines using temp data<br>*---------------------------------------------------<br><br>If (DrawZLev &gt; 0)<br>&nbsp;&nbsp; say "Calculating observed height levels from temp/pressure data."<br>&nbsp;&nbsp; zz=1<br>&nbsp;&nbsp; "set gxout stat"<br>&nbsp;&nbsp; "set x "_xval<br>&nbsp;&nbsp; "set y "_yval<br>&nbsp;&nbsp; "set t "_tval<br>&nbsp;&nbsp; count=0<br>&nbsp;&nbsp; while (zz &lt; _zmax)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "set z "zz<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pp.zz=subwrd(result,4)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lpp.zz=log(pp.zz)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "d "sndtemp<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rec=sublin(result,8)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tt=subwrd(rec,4)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (tt &gt; -900) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tk=tt+273.15<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; count=count+1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zzm=zz-1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If (count = 1) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If (DrawZLev = 2)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; htlb="ASL"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; height.zz=SfcElev<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; htlb="AGL"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; height.zz=0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Endif<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sfcz=height.zz<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DZ=29.2857*(lpp.zzm-lpp.zz)*(lpp.zz*tk+lpp.zzm*tkold)/(lpp.zz+lpp.zzm) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; height.zz=height.zzm+DZ<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; highz=height.zz<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Endif<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; height.zz = -9999<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; endif<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tkold=tk<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zz=zz+1<br>&nbsp;&nbsp; endwhile<br><br>&nbsp;&nbsp; maxht=int(highz/1000)<br>&nbsp;&nbsp; if (int(sfcz/1000) = sfcz/1000)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; minht=int(sfcz/1000)<br>&nbsp;&nbsp; else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; minht=1+int(sfcz/1000)<br>&nbsp;&nbsp; endif<br><br>&nbsp;&nbsp; ht=minht<br>&nbsp;&nbsp; "set line 1 3 1"<br>&nbsp;&nbsp; "set strsiz 0.10"<br>&nbsp;&nbsp; "set string 1 l 3 0"<br>&nbsp;&nbsp; while (ht &lt;= maxht)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zz=1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (height.zz/1000 &lt;= ht)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zz=zz+1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; endwhile<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zzm=zz-1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PBelow=pp.zzm<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PAbove=pp.zz<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HBelow=height.zzm<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HAbove=height.zz<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DZ=HAbove-HBelow<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DP=PAbove-PBelow<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Del=ht*1000-HBelow<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Est=PBelow+Del*DP/DZ<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If (Est &gt;= _pmin &amp; Est &lt;= _pmax)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "q w2xy 1 " Est<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yloc=subwrd(result,6)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "draw line " lxloc " " yloc " " rxloc " " yloc<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "draw string 0.22 "yloc-0.05" "ht<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Endif<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ht=ht+1<br>&nbsp;&nbsp; endwhile<br>&nbsp;&nbsp; "set strsiz 0.10"<br>&nbsp;&nbsp; "set string 1"<br>&nbsp;&nbsp; If (LblAxes = 1)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If (PageType = "Portrait") <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "draw string 0.25 10.85 km"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "draw string 0.25 10.75 "htlb<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "draw string 0.25 10.65 OBS"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "draw string 0.25 8.35 km"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "draw string 0.25 8.25 "htlb<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "draw string 0.25 8.15 OBS"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Endif<br>&nbsp;&nbsp; Endif<br>Endif<br><br><br>*---------------------------------------------------<br>* Draw height levels (height above MSL using Std Atm)<br>*---------------------------------------------------<br><br>If (DrawZSTD = 1)<br>&nbsp;&nbsp; "set strsiz 0.10"<br>&nbsp;&nbsp; minht=30.735*(1-pow(_pmax/1013.26,0.287))<br>&nbsp;&nbsp; minht=int(minht+0.5)<br>&nbsp;&nbsp; maxht=30.735*(1-pow(_pmin/1013.26,0.287))<br>&nbsp;&nbsp; maxht=int(maxht)<br>&nbsp;&nbsp; "set gxout stat"<br>&nbsp;&nbsp; zcount=minht&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp; while (zcount &lt;= maxht) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; plev=1013.26*pow((1-zcount/30.735),3.4843)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "q w2xy 0 "plev <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yloc=subwrd(result,6)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "draw string 0 "yloc-0.05" "zcount<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zcount=zcount+1<br>&nbsp;&nbsp; endwhile<br>&nbsp;&nbsp; "set strsiz 0.10"<br>&nbsp;&nbsp; If (LblAxes = 1)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If (PageType = "Portrait") <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "draw string 0 10.85 km"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "draw string 0 10.75 ASL"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "draw string 0 10.65 STD"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "draw string 0 8.35 km"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "draw string 0 8.25 ASL"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "draw string 0 8.15 STD"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Endif<br>&nbsp; Endif<br>Endif<br><br><br>*-----------------------<br>* Plot temperature lines <br>*-----------------------<br><br>If (DrawTemp = 1)<br>&nbsp;&nbsp; "set strsiz 0.1"<br>&nbsp;&nbsp; "set z "_zmin " " _zmax<br>&nbsp;&nbsp; "set line "TempCol " " TempLine " "TempThk<br>&nbsp;&nbsp; "set string 1 c 3 0"<br>&nbsp;&nbsp; "set gxout stat"<br>&nbsp;&nbsp; maxtline=GetTemp(100,_pmax)<br>&nbsp;&nbsp; mintline=GetTemp(0,_pmin)<br><br>&nbsp;&nbsp; maxtline=tempint*int(maxtline/tempint)<br>&nbsp;&nbsp; mintline=tempint*int(mintline/tempint)<br><br>&nbsp;&nbsp; tloop=mintline<br>&nbsp;&nbsp; While (tloop &lt;= maxtline) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Botxtemp=GetXLoc(tloop,_pmax)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "q w2xy "Botxtemp " " _pmax<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Botxloc=subwrd(result,3)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Botyloc=byloc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Topxtemp=GetXLoc(tloop,_pmin)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "q w2xy "Topxtemp " " _pmin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Topxloc=subwrd(result,3)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Topyloc=tyloc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If (Botxtemp &lt;= 100 | Topxtemp &lt;= 100) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If (Topxtemp &gt; 100)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Slope=(Topyloc-Botyloc)/(Topxtemp-Botxtemp)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b=Topyloc-Slope*Topxtemp<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Topyloc=Slope*100+b<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Topxloc=rxloc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Endif<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If (Botxtemp &lt; 0)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Slope=(Topyloc-Botyloc)/(Topxtemp-Botxtemp)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b=Botyloc-Slope*Botxtemp<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Botyloc=b<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Botxloc=lxloc <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "set strsiz 0.15"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "draw string " Botxloc-0.05 " " Botyloc-0.15 " " tloop<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Endif<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "draw line "Botxloc " " Botyloc " " Topxloc " " Topyloc<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Endif<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tloop=tloop+tempint<br>&nbsp;&nbsp; EndWhile<br>&nbsp;&nbsp; If (LblAxes = 1) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "set strsiz 0.15"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "set string 1 c"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If (PageType = "Portrait")<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "draw string 4.0 0.35 Temperatura (`3.`0C)"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "draw string 7.7 0.35 Viento m/s "<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "draw string 3.5 0.15 Temperatura (`3.`0C)"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Endif<br>&nbsp;&nbsp; Endif<br>Endif<br><br><br>*------------------<br>* Plot dry adiabats<br>*------------------<br><br>If (DrawThet = 1)<br>&nbsp;&nbsp; temp=GetTemp(100,_pmin)<br>&nbsp;&nbsp; maxtheta=GetThet2(temp,-100,_pmin)<br>&nbsp;&nbsp; maxtheta=thetaint*int(maxtheta/thetaint)<br>&nbsp;&nbsp; temp=GetTemp(0,_pmax)<br>&nbsp;&nbsp; mintheta=GetThet2(temp,-100,_pmax)<br>&nbsp;&nbsp; mintheta=thetaint*int(mintheta/thetaint)<br>&nbsp;&nbsp; <br>&nbsp;&nbsp; "set lon 0 100"<br>&nbsp;&nbsp; "set y 1"<br>&nbsp;&nbsp; "set z 1"<br>&nbsp;&nbsp; tloop=mintheta<br>&nbsp;&nbsp; "set line "ThetCol" "ThetLine " "ThetThk<br>&nbsp;&nbsp; While (tloop &lt;= maxtheta)<br>&nbsp;&nbsp;&nbsp;&nbsp; PTemp=LiftDry(tloop,1000,_pmin,1,_pmin,_pmax)&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; tloop=tloop+thetaint<br>&nbsp;&nbsp; Endwhile<br>Endif<br><br>*------------------------<br>* Plot mixing ratio lines<br>*------------------------<br><br>If (DrawMix = 1)<br>&nbsp;&nbsp; If (MixStop &lt; _pmin) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MixStop = _pmin<br>&nbsp;&nbsp; Endif<br>&nbsp;&nbsp; "set string 1 l"<br>&nbsp;&nbsp; "set z "_zmin " " _zmax<br>&nbsp;&nbsp; "set cint 1"<br>&nbsp;&nbsp; "set line "MixCol" " MixLine " "MixThk<br>&nbsp;&nbsp; cont = 1<br>&nbsp;&nbsp; mloop=subwrd(wsclevs,1)<br>&nbsp;&nbsp; count = 1<br>&nbsp;&nbsp; While (cont = 1) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BotCoef=log(mloop*_pmax/3801.66)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BotTval=-245.5*BotCoef/(BotCoef-17.67)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Botxtemp=GetXLoc(BotTval,_pmax)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "q w2xy "Botxtemp " " _pmax<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Botxloc=subwrd(result,3)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Botyloc=byloc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TopCoef=log(mloop*MixStop/3801.66)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TopTval=-245.5*TopCoef/(TopCoef-17.67)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Topxtemp=GetXLoc(TopTval,MixStop)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "q w2xy "Topxtemp " " MixStop<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Topxloc=subwrd(result,3)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Topyloc=subwrd(result,6) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "set string "MixCol" l 3"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "set strsiz 0.09"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If (Botxtemp &lt;= 100 | Topxtemp &lt;= 100) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If (Topxtemp &gt; 100)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Slope=(Topyloc-Botyloc)/(Topxtemp-Botxtemp)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b=Topyloc-Slope*Topxtemp<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Topyloc=Slope*100+b<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Topxloc=rxloc <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "draw string " Topxloc+0.05 " " Topyloc&nbsp; " " mloop<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "draw string " Topxloc " " Topyloc+0.1 " " mloop<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Endif<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If (Botxtemp &lt; 0)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Slope=(Topyloc-Botyloc)/(Topxtemp-Botxtemp)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b=Botyloc-Slope*Botxtemp<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Botyloc=b<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Botxloc=lxloc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Endif<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "draw line "Botxloc " " Botyloc " " Topxloc " " Topyloc<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Endif<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; count=count+1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mloop=subwrd(wsclevs,count)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If (mloop = "" | count &gt; 50) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cont = 0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Endif<br>&nbsp;&nbsp; EndWhile<br>&nbsp;&nbsp; If (LblAxes = 1)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "set strsiz 0.15"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "set string 1 c 3 90"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If (PageType = "Portrait")<br>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "draw string 7.40 4.75 Relacion de Mezcla (g/kg)"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Else<br>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "draw string 6.90 4.25 Mixing Ratio (g/kg)"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Endif<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "set string 1 c 3 0"<br>&nbsp;&nbsp; Endif<br>Endif<br><br>*-----------------------------<br>* Plot moist (pseudo) adiabats<br>*-----------------------------<br><br>If (DrawThtw = 1)<br>&nbsp;&nbsp; "set lon 0 100"<br>&nbsp;&nbsp; "set y 1"<br>&nbsp;&nbsp; "set z 1"<br>&nbsp;&nbsp; "set gxout stat"<br>&nbsp;&nbsp; tloop=80<br>&nbsp;&nbsp; "set line "ThtwCol" "ThtwLine " "ThtwThk<br>&nbsp;&nbsp; While (tloop &gt; -80)<br>&nbsp;&nbsp;&nbsp;&nbsp; PTemp=LiftWet(tloop,1000,ThtwStop,1,_pmin,_pmax)&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; tloop=tloop-thetwint<br>&nbsp;&nbsp; Endwhile<br>Endif<br><br><br>*-----------------------------------------------------<br>* Plot transformed user-specified temperature sounding<br>*-----------------------------------------------------<br><br>If (DrawTSnd = 1)<br>&nbsp;&nbsp; say "Drawing temperature sounding."<br>&nbsp;&nbsp; "set gxout line"<br>&nbsp;&nbsp; "set x "_xval<br>&nbsp;&nbsp; "set y "_yval<br>&nbsp;&nbsp; "set z "_zmin" "_zmax&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp; "set ccolor "TSndCol<br>&nbsp;&nbsp; "set cstyle "TSndLine<br>&nbsp;&nbsp; "set cmark "TSndMrk<br>&nbsp;&nbsp; "set digsiz "MrkSize<br>&nbsp;&nbsp; "set cthick "TSndThk <br>&nbsp;&nbsp; "set missconn on"<br>&nbsp;&nbsp; "d tempx"<br>Endif<br><br>*---------------------------------------------------<br>* Plot transformed user-specified dewpoint sounding<br>*---------------------------------------------------<br><br>If (DrawDSnd = 1)<br>&nbsp;&nbsp; say "Drawing dewpoint sounding."<br>&nbsp;&nbsp; "set gxout line"<br>&nbsp;&nbsp; "set x "_xval<br>&nbsp;&nbsp; "set y "_yval<br>&nbsp;&nbsp; "set z "_zmin" "_zmax<br>&nbsp;&nbsp; "set cmark "DSndMrk <br>&nbsp;&nbsp; "set digsiz "MrkSize<br>&nbsp;&nbsp; "set ccolor "DSndCol<br>&nbsp;&nbsp; "set cstyle "DSndLine<br>&nbsp;&nbsp; "set cthick "DSndThk<br>&nbsp;&nbsp; "set missconn on"<br>&nbsp;&nbsp; "d dewpx"<br>Endif<br><br>*----------------------------------------<br>* Determine lowest level of reported&nbsp; data<br>*----------------------------------------<br><br>If (DrawTSnd = 1) <br>&nbsp;&nbsp; field=sndtemp<br>Else<br>&nbsp;&nbsp; field=sndspd<br>Endif<br><br>"set gxout stat"<br>"set x "_xval<br>"set y "_yval<br>"set t "_tval<br>"set lev " _pmax " " _pmin<br>"d maskout(lev,"field"+300)"<br>rec=sublin(result,1)<br>check=substr(rec,1,6)<br>If (check = "Notice") <br>&nbsp;&nbsp;&nbsp; rec=sublin(result,9)<br>Else<br>&nbsp;&nbsp;&nbsp; rec=sublin(result,8)<br>Endif<br>SfcPlev=subwrd(rec,5)<br><br>If (DrawTSnd = 1 &amp; DrawDSnd = 1)<br>&nbsp;&nbsp; "set lev "SfcPlev<br>&nbsp;&nbsp; "d "sndtemp<br>&nbsp;&nbsp; rec=sublin(result,8)<br>&nbsp;&nbsp; Sfctemp=subwrd(rec,4)<br>&nbsp;&nbsp; "d "snddewp<br>&nbsp;&nbsp; rec=sublin(result,8)<br>&nbsp;&nbsp; Sfcdewp=subwrd(rec,4)<br>&nbsp;&nbsp; SfcThee=Thetae(Sfctemp,Sfcdewp,SfcPlev)<br><br>*------------------------------------------<br>* Calculate temperature and pressure of LCL<br>*------------------------------------------<br><br>&nbsp;&nbsp; TLcl=Templcl(Sfctemp,Sfcdewp)<br>&nbsp;&nbsp; PLcl=Preslcl(Sfctemp,Sfcdewp,SfcPlev)<br>Endif<br><br>*----------------------------------------------------------<br>* Plot parcel path from surface to LCL and up moist adiabat<br>*----------------------------------------------------------<br><br>If (DrawPrcl = 1)<br>&nbsp;&nbsp; say "Drawing parcel path from surface upward."<br>&nbsp;&nbsp; If (PageType = "Portrait")<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xloc=7.15<br>&nbsp;&nbsp; Else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xloc=6.65<br>&nbsp;&nbsp; Endif<br>&nbsp;&nbsp; "q w2xy 1 "PLcl<br>&nbsp;&nbsp; rec=sublin(result,1)<br>&nbsp;&nbsp; yloc=subwrd(rec,6)<br>&nbsp;&nbsp; "set strsiz 0.1"<br>&nbsp;&nbsp; If (PLcl &lt; _pmax) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "set string 1 l"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "draw string "xloc" "yloc" LCL"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "set line 1 1 1"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "draw line "xloc-0.15" "yloc" "xloc-0.05" "yloc<br>&nbsp;&nbsp; Endif<br>&nbsp;&nbsp; "set lon 0 100"<br>&nbsp;&nbsp; "set gxout stat"<br>&nbsp;&nbsp; "set line "PrclCol" "PrclLine " " PrclThk<br>&nbsp;&nbsp; PTemp=LiftDry(Sfctemp,SfcPlev,PLcl,1,_pmin,_pmax)<br>&nbsp;&nbsp; Ptemp=LiftWet(TLcl,PLcl,_pmin,1,_pmin,_pmax)<br>Endif<br><br>*-------------------------------------------------------<br>* Determine level within lowest 250mb having highest<br>* theta-e value<br>*-------------------------------------------------------<br><br>If (DrawTSnd = 1 &amp; DrawDSnd = 1)<br>&nbsp; "set x "_xval<br>&nbsp; "set y "_yval<br>&nbsp; "set t "_tval<br>&nbsp;&nbsp; zz=1<br>&nbsp;&nbsp; MaxThee=-999<br>&nbsp;&nbsp; "set gxout stat"<br>&nbsp;&nbsp; while (zz &lt;= _zmax &amp; pp &gt; _pmax-250)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "set z "zz<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pp=subwrd(result,4)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "d "sndtemp<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rec=sublin(result,8)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tt=subwrd(rec,4)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "d "snddewp<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rec=sublin(result,8)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dd=subwrd(rec,4)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If (abs(tt) &lt; 130 &amp; abs(dd) &lt; 130) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Thee=Thetae(tt,dd,pp)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If (Thee &gt; MaxThee) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MaxThee=Thee<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TMaxThee=tt<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DMaxThee=dd <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PMaxThee=pp<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Endif<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; endif<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zz=zz+1<br>&nbsp;&nbsp; Endwhile<br>&nbsp;&nbsp; If (PMaxThee = SfcPlev-250) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PMaxThee = SfcPlev<br>&nbsp;&nbsp; Endif<br>*------------------------------------------------------<br>* Calculate temperature and pressure of LCL from highest&nbsp;&nbsp; <br>* theta-e level<br>*------------------------------------------------------<br>&nbsp;&nbsp; If (SfcPlev != PMaxThee) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TLclMax=Templcl(TMaxThee,DMaxThee)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PLclMax=Preslcl(TMaxThee,DMaxThee,PMaxThee)<br>&nbsp;&nbsp; Endif<br>Endif<br><br>*----------------------------------------------------------<br>* Plot parcel path from highest theta-e level to LCL and up<br>* moist adiabat<br>*----------------------------------------------------------<br><br>If (DrawPMax = 1 &amp; SfcPlev != PMaxThee)<br>&nbsp;&nbsp; say "Drawing parcel path from most unstable level upward."<br>&nbsp;&nbsp; If (PageType = "Portrait")<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xloc=7.15<br>&nbsp;&nbsp; Else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xloc=6.65<br>&nbsp;&nbsp; Endif<br>&nbsp;&nbsp; "q w2xy 1 "PLclMax<br>&nbsp;&nbsp; rec=sublin(result,1)<br>&nbsp;&nbsp; yloc=subwrd(rec,6)<br>&nbsp;&nbsp; "set strsiz 0.1"<br>&nbsp;&nbsp; If (PLclMax &lt; _pmax) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "set string 1 l"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "draw string "xloc" "yloc" LCL"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "set line 1 1 1"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "draw line "xloc-0.15" "yloc" "xloc-0.05" "yloc<br>&nbsp;&nbsp; Endif<br>&nbsp;&nbsp; "set lon 0 100"<br>&nbsp;&nbsp; "set gxout stat"<br>&nbsp;&nbsp; "set line "PrclCol" "PrclLine " " PrclThk<br>&nbsp;&nbsp; PTemp=LiftDry(TMaxThee,PMaxThee,PLclMax,1,_pmin,_pmax)<br>&nbsp;&nbsp; Ptemp=LiftWet(TLclMax,PLclMax,_pmin,1,_pmin,_pmax)<br>Endif<br><br>*--------------------------------<br>* Draw thermodynamic indices<br>*--------------------------------<br><br>If (DrawIndx = 1) <br>&nbsp;&nbsp; "set string 1 l"<br>&nbsp;&nbsp; "set strsiz 0.10"<br>&nbsp;&nbsp; "set x "_xval<br>&nbsp;&nbsp; "set y "_yval<br>&nbsp;&nbsp; "set t "_tval<br>&nbsp;&nbsp; say "Calculating precipitable water."<br>&nbsp;&nbsp; pw=precipw(sndtemp,snddewp,_pmax,_pmin)<br>&nbsp;&nbsp; say "Calculating thermodynamic indices."<br>&nbsp;&nbsp; Temp850=interp(sndtemp,850)<br>&nbsp;&nbsp; Temp700=interp(sndtemp,700)<br>&nbsp;&nbsp; Temp500=interp(sndtemp,500)<br>&nbsp;&nbsp; Dewp850=interp(snddewp,850)<br>&nbsp;&nbsp; Dewp700=interp(snddewp,700) <br>&nbsp;&nbsp; Dewp500=interp(snddewp,500)<br>&nbsp;&nbsp; If (Temp850&gt;-900 &amp; Dewp850&gt;-900 &amp; Dewp700&gt;-900 &amp; Temp700&gt;-900 &amp; Temp500&gt;-900) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; K=Temp850+Dewp850+Dewp700-Temp700-Temp500<br>&nbsp;&nbsp; Else <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; K=-999<br>&nbsp;&nbsp; Endif<br>&nbsp;&nbsp; If (Temp850 &gt; -900 &amp; Dewp850 &gt; -900 &amp; Temp500 &gt; -900)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tt=Temp850+Dewp850-2*Temp500<br>&nbsp;&nbsp; Else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tt=-999<br>&nbsp;&nbsp; Endif<br>&nbsp;&nbsp; Temp500V=virtual2(Temp500+273.15,Dewp500+273.15,500)-273.15<br>&nbsp;&nbsp; PclTemp=LiftWet(TLcl,PLcl,500,0)<br>&nbsp;&nbsp; PclTempV=virtual2(PclTemp+273.15,PclTemp+273.15,500)-273.15<br>&nbsp;&nbsp; SLI=Temp500V-PclTempV<br>&nbsp;&nbsp; rec=CAPE(TLcl,PLcl,200,sndtemp,snddewp)<br>&nbsp;&nbsp; Pos=subwrd(rec,1)<br>&nbsp;&nbsp; CIN=subwrd(rec,2)<br><br>&nbsp;&nbsp; If (SfcPlev != PMaxThee) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PclTemp=LiftWet(TLclMax,PLclMax,500,0)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PclTempV=virtual2(PclTemp+273.15,PclTemp+273.15,500)-273.15<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LIMax=Temp500V-PclTempV<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rec=CAPE(TLclMax,PLclMax,100,sndtemp,snddewp)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PosMax=subwrd(rec,1)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CINMax=subwrd(rec,2)<br>&nbsp;&nbsp; Else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LIMax=SLI<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PosMax=Pos<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CINMax=CIN<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MaxThee=SfcThee<br>&nbsp;&nbsp; Endif<br>&nbsp;<br>&nbsp;&nbsp; If (PageType = "Portrait") <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If (Text1XC = -1)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Text1XC=rxloc-0.75<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Endif<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If (Text1YC = -1)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Text1YC=tyloc-2.25<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Endif<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If (Text2XC = -1)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Text2XC=rxloc-0.75<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Endif<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If (Text2YC = -1)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Text2YC=tyloc-3.25<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Endif<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If (Text3XC = -1)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Text3XC=rxloc-0.75<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Endif<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If (Text3YC = -1)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Text3YC=tyloc-4.40<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Endif<br>&nbsp;&nbsp; Else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If (Text1XC = -1)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Text1XC=rxloc+2.50<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Endif<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If (Text1YC = -1)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Text1YC=tyloc-3.00<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Endif<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If (Text2XC = -1)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Text2XC=rxloc+2.50<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Endif<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If (Text2YC = -1)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Text2YC=tyloc-4.00<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Endif<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If (Text3XC = -1)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Text3XC=rxloc+2.50<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Endif<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If (Text3YC = -1)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Text3YC=tyloc-5.10<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Endif<br>&nbsp;&nbsp; Endif<br>&nbsp;&nbsp; "set string 1 l 3"<br>&nbsp;&nbsp; "set line 0 1 3"<br>&nbsp;&nbsp; "draw recf&nbsp; "Text1XC-0.75 " " Text1YC-0.40 " " Text1XC+0.75 " " Text1YC+0.25<br>&nbsp;&nbsp; "set line 1 1 3"<br>&nbsp;&nbsp; "draw rec&nbsp; "Text1XC-0.75 " " Text1YC-0.40 " " Text1XC+0.75 " " Text1YC+0.25<br>&nbsp;&nbsp; "draw string "Text1XC-0.70 " " Text1YC+0.10"&nbsp; K" <br>&nbsp;&nbsp; "draw string "Text1XC+0.25 " " Text1YC+0.10" " int(K)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp; "draw string "Text1XC-0.70 " " Text1YC-0.10 "&nbsp; TT" <br>&nbsp;&nbsp; "draw string "Text1XC+0.25 " " Text1YC-0.10 " " int(tt)<br>&nbsp;&nbsp; "draw string "Text1XC-0.70 " " Text1YC-0.25 "&nbsp; AP(cm)" <br>&nbsp;&nbsp; "draw string "Text1XC+0.25 " " Text1YC-0.25 " " int(pw*100)/100<br>&nbsp;&nbsp; "set line 0 1 3"<br>&nbsp;&nbsp; "draw recf&nbsp; "Text2XC-0.75 " " Text2YC-0.60 " " Text2XC+0.75 " " Text2YC+0.60<br>&nbsp;&nbsp; "set line 1 1 3"<br>&nbsp;&nbsp; "draw rec&nbsp; "Text2XC-0.75 " " Text2YC-0.60 " " Text2XC+0.75 " " Text2YC+0.60<br>&nbsp;&nbsp; "draw string "Text2XC-0.35 " " Text2YC+0.50 " Superficie"<br>&nbsp;&nbsp; "draw string "Text2XC-0.70 " " Text2YC+0.30 "&nbsp; Temp(`3.`0C)" <br>&nbsp;&nbsp; "draw string "Text2XC+0.25 " " Text2YC+0.30 " " int(Sfctemp*10)/10<br>&nbsp;&nbsp; "draw string "Text2XC-0.70 " " Text2YC+0.15 "&nbsp; Dewp(`3.`0C)" <br>&nbsp;&nbsp; "draw string "Text2XC+0.25 " " Text2YC+0.15 " " int(Sfcdewp*10)/10<br>&nbsp;&nbsp; "draw string "Text2XC-0.70 " " Text2YC "&nbsp;&nbsp; `3z`0`bE`n(K)"<br>&nbsp;&nbsp; "draw string "Text2XC+0.25 " " Text2YC " " int(SfcThee) <br>&nbsp;&nbsp; "draw string "Text2XC-0.70 " " Text2YC-0.15 "&nbsp; LI"<br>&nbsp;&nbsp; "draw string "Text2XC+0.25 " " Text2YC-0.15 " " round(SLI)<br>&nbsp;&nbsp; "draw string "Text2XC-0.70 " " Text2YC-0.30 "&nbsp; CAPE(J)"<br>&nbsp;&nbsp; "draw string "Text2XC+0.25 " " Text2YC-0.30 " " int(Pos)&nbsp;&nbsp; <br>&nbsp;&nbsp; "draw string "Text2XC-0.70 " " Text2YC-0.45 "&nbsp; CIN(J)"<br>&nbsp;&nbsp; "draw string "Text2XC+0.25 " " Text2YC-0.45 " " int(CIN)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp; "set line 0 1 3"<br>&nbsp;&nbsp; "draw recf&nbsp; "Text3XC-0.75 " " Text3YC-0.55 " "&nbsp; Text3XC+0.75 " " Text3YC+0.55<br>&nbsp;&nbsp; "set line 1 1 3"<br>&nbsp;&nbsp; "draw rec&nbsp; "Text3XC-0.75 " " Text3YC-0.55 " "&nbsp; Text3XC+0.75 " " Text3YC+0.55<br>&nbsp;&nbsp; "draw string "Text3XC-0.60 " " Text3YC+0.45 " Mas inestable"<br>&nbsp;&nbsp; "draw string "Text3XC-0.70 " " Text3YC+0.20 "&nbsp; Pres(hPa)" <br>&nbsp;&nbsp; "draw string "Text3XC+0.25 " " Text3YC+0.20 " " int(PMaxThee)<br>&nbsp;&nbsp; "draw string "Text3XC-0.70 " " Text3YC+0.05 " `3z`0`bE`n(K)"<br>&nbsp;&nbsp; "draw string "Text3XC+0.25 " " Text3YC+0.05 " " int(MaxThee)<br>&nbsp;&nbsp; "draw string "Text3XC-0.70 " " Text3YC-0.10 " LI" <br>&nbsp;&nbsp; "draw string "Text3XC+0.25 " " Text3YC-0.10 " "round(LIMax)<br>&nbsp;&nbsp; "draw string "Text3XC-0.70 " " Text3YC-0.25 " CAPE(J)" <br>&nbsp;&nbsp; "draw string "Text3XC+0.25 " " Text3YC-0.25 " "int(PosMax) <br>&nbsp;&nbsp; "draw string "Text3XC-0.70 " " Text3YC-0.40 " CIN(J)"<br>&nbsp;&nbsp; "draw string "Text3XC+0.25 " " Text3YC-0.40 " " int(CINMax) <br>Endif<br><br>*-----------------------------<br>* Draw wind profile along side<br>*-----------------------------<br><br>If (DrawBarb = 1) <br>&nbsp;&nbsp; say "Drawing Wind Profile."<br>&nbsp;&nbsp; If (poleloc = -1) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If (PageType = "Portrait")<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; poleloc = 8.0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; poleloc = 7.5 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Endif<br>&nbsp;&nbsp; Endif<br>&nbsp;&nbsp; If (barbline = 1)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "set line 1 1 3"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "draw line "poleloc " " byloc " " poleloc " " tyloc<br>&nbsp;&nbsp; Endif<br>&nbsp;&nbsp; If (BarbCol = -1) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'set rgb 41 255 0 132'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'set rgb 42 255 0 168'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'set rgb 43 255 0 204'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'set rgb 44 255 0 240'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'set rgb 45 255 0 255'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'set rgb 46 204 0 255'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'set rgb 47 174 0 255'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'set rgb 48 138 0 255'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'set rgb 49 108 0 255'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'set rgb 50 84 0 255'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'set rgb 51 40 0 255'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'set rgb 52 0 0&nbsp; 255'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'set rgb 53 0 42 255'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'set rgb 54 0 84 255'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'set rgb 55 0 120 255'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'set rgb 56 0 150 255'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'set rgb 57 0 192 255'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'set rgb 58 0 240 255'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'set rgb 59 0 255 210'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'set rgb 60 0 255 160' <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'set rgb 61 0 255 126'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'set rgb 62 0 255 78'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'set rgb 63 84 255 0'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'set rgb 64 138 255 0'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'set rgb 65 188 255 0'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'set rgb 66 236 255 0'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'set rgb 67 255 255 0'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'set rgb 68 255 222 0'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'set rgb 69 255 192 0'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'set rgb 70 255 162 0'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'set rgb 71 255 138 0'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'set rgb 72 255 108 0'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'set rgb 73 255 84 0'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'set rgb 74 255 54 0'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'set rgb 75 255 12 0'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'set rgb 76 255 0 34'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'set rgb 77 255 0 70'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'set rgb 78 255 0 105'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'set rgb 79 255 0 140'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'set rgb 80 255 0 175'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'set rgb 81 255 0 215'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'set rgb 82 255 0 255'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'set rgb 83 255 255 255'<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; col1='83 83 83 83 83 83 83 83 83 83 82 81 80 79 78'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; col2='77 76 75 74 73 72 71 70 69 68 67 66 65 64 63'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; col3='62 61 60 59 58 57 56 55 54 53 52 51 50 49 48'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'set rbcols 'col1' 'col2' 'col3<br>&nbsp;&nbsp; Endif<br>&nbsp;&nbsp; "set z "_zmin" "_zmax<br>&nbsp;&nbsp; "set gxout stat"<br>&nbsp;&nbsp; zz=1<br>&nbsp;&nbsp; wspd=-999<br>&nbsp;&nbsp; cont=1<br>&nbsp;&nbsp; While (cont = 1 &amp; zz &lt; _zmax) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "set z "zz<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pres=subwrd(result,4)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "d "u<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rec=sublin(result,8)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; uwnd=subwrd(rec,4)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "d "v<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rec=sublin(result,8)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vwnd=subwrd(rec,4)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wspd=GetWSpd(uwnd,vwnd)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (wspd &lt; 0 | pres &gt; _pmax) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zz=zz+1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cont=0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Endif<br>&nbsp;&nbsp; Endwhile<br>&nbsp;&nbsp; While (zz &lt;= _zmax)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "d "u"(z="zz")"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rec=sublin(result,8)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; uwnd=subwrd(rec,4)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "d "v"(z="zz")"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rec=sublin(result,8)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vwnd=subwrd(rec,4)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wspd=GetWSpd(uwnd,vwnd)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If (BarbCol &gt;= 0)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "set line "BarbCol " 1 "BarbThk<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tempbcol=55+wspd/5&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If (tempbcol &gt; 83) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tempbcol = 83<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Endif<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "set line "tempbcol " 1 "BarbThk<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Endif<br>&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "d "u"(z="zz")"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rec=sublin(result,8)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; uwnd=subwrd(rec,4)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "d "v"(z="zz")"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rec=sublin(result,8)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vwnd=subwrd(rec,4)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(vwnd != undef)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wspd=GetWSpd(uwnd,vwnd)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wdir=GetWDir(uwnd,vwnd)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wspd=0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wdir=0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Endif<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xwind=GetUWnd(wspd,wdir)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ywind=GetVWnd(wspd,wdir)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "query gr2xy 5 "zz<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; y1=subwrd(result,6) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (wspd &gt; 0) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cc=polelen/wspd<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xendpole=poleloc-xwind*cc<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yendpole=y1-ywind*cc<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; endif<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (xendpole&gt;0 &amp; wspd &gt;= 0.5)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (flagbase = 1) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "draw mark 3 "poleloc " " y1 " 0.05"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; endif<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "draw line " poleloc " " y1 "&nbsp; " xendpole " " yendpole<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; flagloop=wspd/10<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; windcount=wspd<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; flagcount=0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xflagstart=xendpole<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yflagstart=yendpole<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dx=cos((180-wdir)*_dtr)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dy=sin((180-wdir)*_dtr)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (windcount &gt; 47.5)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; flagcount=flagcount+1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dxflag=-len50*dx<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dyflag=-len50*dy<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xflagend=xflagstart+dxflag<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yflagend=yflagstart+dyflag<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; windcount=windcount-50<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x1=xflagstart+0.5*wid50*xwind/wspd<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; y1=yflagstart+0.5*wid50*ywind/wspd<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x2=xflagstart-0.5*wid50*xwind/wspd<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; y2=yflagstart-0.5*wid50*ywind/wspd<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If (Fill50 = 1) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "draw polyf "x1" "y1" "x2" "y2" "xflagend" "yflagend" "x1" "y1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "draw line "x1 " "y1 " " xflagend " " yflagend " "&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "draw line "x2 " "y2 " " xflagend " " yflagend<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "draw line "x1 " "y1 " " x2 " " y2<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Endif<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xflagstart=xflagstart+spac50*xwind/wspd<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yflagstart=yflagstart+spac50*ywind/wspd<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; endwhile<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (windcount &gt; 7.5 ) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; flagcount=flagcount+1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dxflag=-len10*dx<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dyflag=-len10*dy<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xflagend=xflagstart+dxflag<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yflagend=yflagstart+dyflag<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; windcount=windcount-10<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "draw line " xflagstart " " yflagstart " " xflagend " " yflagend<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xflagstart=xflagstart+spac10*xwind/wspd<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yflagstart=yflagstart+spac10*ywind/wspd<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; endwhile<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (windcount &gt; 2.5) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; flagcount=flagcount+1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (flagcount = 1) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xflagstart=xflagstart+spac05*xwind/wspd<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yflagstart=yflagstart+spac05*ywind/wspd<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; endif<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dxflag=-len05*dx<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dyflag=-len05*dy<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xflagend=xflagstart+dxflag<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yflagend=yflagstart+dyflag<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; windcount=windcount-5<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "draw line " xflagstart " " yflagstart " " xflagend " " yflagend<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; endif<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (wspd &lt; 0.5 &amp; wspd &gt;= 0) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "draw mark 2 " poleloc " " y1 " 0.08"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; endif<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; endif<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zz=zz+barbint<br>&nbsp;&nbsp; endwhile<br>Endif<br><br>*----------------<br>* Draw Hodograph<br>*----------------<br><br>If (DrawHodo = 1)<br>&nbsp;&nbsp; say "Drawing Hodograph."<br><br>&nbsp;&nbsp; If (HodXcent = -1 | HodYcent = -1) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If (PageType = "Portrait") <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HodXcent=6<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HodYcent=9.5&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rec=sublin(result,8)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; uwnd=subwrd(rec,4)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HodXcent=9<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HodYcent=7.0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Endif<br>&nbsp;&nbsp; Endif<br>&nbsp;&nbsp; HodL=HodXcent-HodSize/2.0<br>&nbsp;&nbsp; HodR=HodXcent+HodSize/2.0<br>&nbsp;&nbsp; HodT=HodYcent+HodSize/2.0<br>&nbsp;&nbsp; HodB=HodYcent-HodSize/2.0<br>&nbsp;&nbsp; RingSpac=HodSize/(NumRing*2)<br>&nbsp;&nbsp; "set line 0"<br>&nbsp;&nbsp; "draw recf "HodL" "HodB" "HodR" "HodT<br>&nbsp;&nbsp; "set line "HodoCol" 1 6"<br>&nbsp;&nbsp; "draw rec "HodL" "HodB" "HodR" "HodT<br>&nbsp;&nbsp; "set line 1 1 3"<br>&nbsp;&nbsp; "set string 1 c"<br>&nbsp;&nbsp; "draw mark 1 "HodXcent " "HodYcent " " HodSize<br>&nbsp;&nbsp; i=1<br>&nbsp;&nbsp; While (i &lt;= NumRing)<br>&nbsp;&nbsp;&nbsp;&nbsp; "set strsiz 0.10"<br>&nbsp;&nbsp;&nbsp;&nbsp; "set string 1 c 3 45"<br>&nbsp;&nbsp;&nbsp;&nbsp; uwnd=-i*HodRing*cos(45*_dtr)<br>&nbsp;&nbsp;&nbsp;&nbsp; xloc=HodXcent+uwnd*RingSpac/HodRing<br>&nbsp;&nbsp;&nbsp;&nbsp; yloc=HodYcent+uwnd*RingSpac/HodRing<br>&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; "draw mark 2 "HodXcent " " HodYcent " " i*HodSize/NumRing<br>&nbsp;&nbsp;&nbsp;&nbsp; "draw string "xloc " " yloc " " HodRing*i<br>&nbsp;&nbsp;&nbsp;&nbsp; i=i+1<br>&nbsp;&nbsp; Endwhile<br>&nbsp;&nbsp; "set string 1 l 3 0"<br>&nbsp;&nbsp; If (TickInt &gt; 0) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i=0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (i &lt; HodRing*NumRing) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dist=i*RingSpac/HodRing<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hrxloc=HodXcent+dist&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hlxloc=HodXcent-dist&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; htyloc=HodYcent+dist<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hbyloc=HodYcent-dist<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "set line 1 1 3"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "draw line "hrxloc " " HodYcent-TickSize/2 " " hrxloc " " HodYcent+TickSize/2<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "draw line "hlxloc " " HodYcent-TickSize/2 " " hlxloc " " HodYcent+TickSize/2<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "draw line "HodXcent+TickSize/2 " " htyloc " " HodXcent-TickSize/2 " " htyloc<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "draw line "HodXcent+TickSize/2 " " hbyloc " " HodXcent-TickSize/2 " " hbyloc<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i=i+TickInt<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; endwhile<br>&nbsp;&nbsp; Endif<br>&nbsp;&nbsp; "set line "HodoCol " " HodoLine " "HodoThk<br>&nbsp;&nbsp; "draw string "HodL+0.05 " " HodT-0.1 " m/s"<br>&nbsp;&nbsp; zloop=_zmin<br>&nbsp;&nbsp; xold=-999<br>&nbsp;&nbsp; yold=-999<br>&nbsp;&nbsp; count=0<br>&nbsp;&nbsp; Depth=0<br>&nbsp;&nbsp; While (zloop &lt; _zmax &amp; Depth &lt; HodoDep)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "set z "zloop<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pres=subwrd(result,4)<br>&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "d "u<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rec=sublin(result,8)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; uwnd=subwrd(rec,4)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "d "v<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rec=sublin(result,8)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vwnd=subwrd(rec,4)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (uwnd = undef)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; uwnd=0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vwnd=0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; endif<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If (wspd &gt;= 0) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xloc=HodXcent+uwnd*RingSpac/HodRing<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yloc=HodYcent+vwnd*RingSpac/HodRing<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If (xloc &gt; 0 &amp; yloc &gt; 0 &amp; xold &gt; 0 &amp; yold &gt; 0) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Depth=Depth+pold-pres<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; count=count+1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If (count = 1) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "draw mark 3 "xold " " yold " 0.05"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Endif<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "draw line "xold" "yold" "xloc" "yloc<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Endif<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xold=xloc<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yold=yloc<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Endif<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zloop=zloop+1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pold=pres<br>&nbsp;&nbsp; EndWhile<br><br>&nbsp;&nbsp; If (count &gt; 0) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "draw mark 3 "xold " " yold " 0.05"<br>&nbsp;&nbsp; Endif<br>Endif<br><br>*----------------------------------------------<br>* Calculate and Display Absolute &amp; S-R Helicity<br>*----------------------------------------------<br><br>If (DrawHeli = 1) <br>&nbsp;&nbsp; say "Calculating Helicity &amp; SR Helicity."<br>&nbsp;&nbsp; delp=10<br>&nbsp;&nbsp; UTotal=0<br>&nbsp;&nbsp; VTotal=0<br><br>* First, calculate mass-weighted mean wind <br>* Since delp is a constant, and mass is proportional to <br>* delp, this is a simple sum.<br><br>&nbsp;&nbsp; "set lev "_pmax " " _pmin<br>&nbsp;&nbsp; "define uwndarr="sndspd"*cos((270-"snddir")*"_dtr")"<br>&nbsp;&nbsp; "define vwndarr="sndspd"*sin((270-"snddir")*"_dtr")"<br><br>&nbsp;&nbsp; pres=MeanVBot<br>&nbsp;&nbsp; While (pres &gt;= MeanVTop)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; uwnd=interp(uwndarr,pres)*_ktm<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vwnd=interp(vwndarr,pres)*_ktm<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If (uwnd &gt; -900 &amp; vwnd &gt; -900) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UTotal=UTotal+uwnd<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VTotal=VTotal+vwnd<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Endif<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pres=pres-delp<br>&nbsp;&nbsp; EndWhile<br>&nbsp;&nbsp; vcount=1+(MeanVBot-MeanVTop)/delp <br>&nbsp;&nbsp; Umean=UTotal/vcount<br>&nbsp;&nbsp; Vmean=VTotal/vcount<br>&nbsp;&nbsp; Spdmean=GetWSpd(Umean,Vmean)<br>&nbsp;&nbsp; MeanDir=GetWDir(Umean,Vmean)<br><br>* Now, rotate and reduce mean wind to get storm motion<br><br>&nbsp;&nbsp; If (StormMot = 1) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If (Spdmean &lt; 15) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Reduct=0.25<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Rotate=30<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Reduct=0.20<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Rotate=20<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Endif<br>&nbsp;&nbsp; Else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Reduct=0.0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Rotate=0.0<br>&nbsp;&nbsp; Endif<br><br>&nbsp;&nbsp; UReduce=(1-Reduct)*Umean<br>&nbsp;&nbsp; VReduce=(1-Reduct)*Vmean<br>&nbsp;&nbsp; StormSpd=GetWSpd(UReduce,VReduce)<br><br>&nbsp;&nbsp; StormDir=GetWDir(UReduce,VReduce)+Rotate<br>&nbsp;&nbsp; If (StormDir &gt;= 360) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; StormDir=StormDir-360<br>&nbsp;&nbsp; Endif<br><br>&nbsp;&nbsp; StormU=GetUWnd(StormSpd,StormDir)<br>&nbsp;&nbsp; StormV=GetVWnd(StormSpd,StormDir)<br><br>* Draw Storm Motion Vector<br><br>&nbsp;&nbsp; xloc=HodXcent+_mtk*StormU*RingSpac/HodRing<br>&nbsp;&nbsp; yloc=HodYcent+_mtk*StormV*RingSpac/HodRing<br><br>&nbsp;&nbsp; "set line 1 1 4"<br>&nbsp;&nbsp; "draw line "HodXcent " " HodYcent " " xloc " " yloc<br>&nbsp;&nbsp; Arr1U=GetUWnd(HodRing/10,StormDir+30)<br>&nbsp;&nbsp; Arr1V=GetVWnd(HodRing/10,StormDir+30)<br>&nbsp;&nbsp; Arr2U=GetUWnd(HodRing/10,StormDir-30)<br>&nbsp;&nbsp; Arr2V=GetVWnd(HodRing/10,StormDir-30)<br><br>&nbsp;&nbsp; xloc2=xloc-Arr1U/HodRing<br>&nbsp;&nbsp; xloc3=xloc-Arr2U/HodRing<br>&nbsp;&nbsp; yloc2=yloc-Arr1V/HodRing<br>&nbsp;&nbsp; yloc3=yloc-Arr2V/HodRing<br><br>&nbsp;&nbsp; "set line 1 1 3"<br><br>&nbsp;&nbsp; If (FillArrw = 0) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "draw line "xloc" "yloc" "xloc2" "yloc2<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "draw line "xloc" "yloc" "xloc3" "yloc3<br>&nbsp;&nbsp; Else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "draw polyf "xloc" "yloc" "xloc2" "yloc2" "xloc3" "yloc3" "xloc" "yloc<br>&nbsp;&nbsp; Endif<br><br>&nbsp;<br>* Now, calculate SR and Environmental Helicity<br>&nbsp;<br>&nbsp;&nbsp; helic=0<br>&nbsp;&nbsp; SRhelic=0<br>&nbsp;&nbsp; MinP=SfcPlev-HelicDep<br>&nbsp;&nbsp; pres=SfcPlev<br>&nbsp;&nbsp; uwndold=-999<br>&nbsp;&nbsp; vwndold=-999<br>&nbsp;&nbsp; While (pres &gt;= MinP)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; uwnd=interp(uwndarr,pres)*_ktm<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vwnd=interp(vwndarr,pres)*_ktm<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If (uwnd &gt; -900 &amp; uwndold &gt; -900)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; du=uwnd-uwndold<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dv=vwnd-vwndold<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ubar=0.5*(uwnd+uwndold)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vbar=0.5*(vwnd+vwndold)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; uhelic=-dv*ubar&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vhelic=du*vbar&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SRuhelic=-dv*(ubar-StormU)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SRvhelic=du*(vbar-StormV)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SRhelic=SRhelic+SRuhelic+SRvhelic<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; helic=helic+uhelic+vhelic<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Endif<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; uwndold=uwnd<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vwndold=vwnd<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pres=pres-delp<br>&nbsp;&nbsp; EndWhile<br><br>&nbsp;&nbsp; "set strsiz 0.1"<br>&nbsp;&nbsp; "set string 1 l 3"<br>&nbsp;&nbsp; If (PageType = "Portrait") <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If (Text4XC = -1)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Text4XC=rxloc-0.75<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Endif<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If (Text4YC = -1) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Text4YC=tyloc-5.45<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Endif<br>&nbsp;&nbsp; Else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If (Text4XC = -1)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Text4XC=rxloc+2.50<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Endif<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If (Text4YC = -1)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Text4YC=tyloc-6.10<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Endif<br>&nbsp;&nbsp; Endif<br>&nbsp;&nbsp; "set line 0 1 3"<br>&nbsp;&nbsp; "draw recf&nbsp; "Text4XC-0.75 " "Text4YC-0.5 " " Text4XC+0.75 " " Text4YC+0.5<br>&nbsp;&nbsp; "set line 1 1 3"<br>&nbsp;&nbsp; "draw rec&nbsp; "Text4XC-0.75 " "Text4YC-0.5 " " Text4XC+0.75 " " Text4YC+0.5<br>&nbsp;&nbsp; "draw string "Text4XC-0.45 " " Text4YC+0.40 " Hodograph"<br>&nbsp;&nbsp; "draw string "Text4XC-0.70 " " Text4YC+0.20 " EH"<br>&nbsp;&nbsp; "draw string "Text4XC+0.25 " " Text4YC+0.20 " "int(helic)<br>&nbsp;&nbsp; "draw string "Text4XC-0.70 " " Text4YC+0.05 " SREH"<br>&nbsp;&nbsp; "draw string "Text4XC+0.25 " " Text4YC+0.05 " " int(SRhelic)<br>&nbsp;&nbsp; "draw string "Text4XC-0.70 " " Text4YC-0.20 " StmDir"<br>&nbsp;&nbsp; "draw string "Text4XC+0.25 " " Text4YC-0.20 " " int(StormDir)"`3.`0"<br>&nbsp;&nbsp; "draw string "Text4XC-0.70 " " Text4YC-0.35 " StmSpd(kt)"<br>&nbsp;&nbsp; "draw string "Text4XC+0.25 " " Text4YC-0.35 " " int(_mtk*StormSpd)<br>Endif<br><br>*---------------------------------------------------<br>* Plot RH profile.<br>*---------------------------------------------------<br><br>If (DrawRH = 1)<br>&nbsp; "set z "_zmin" "_zmax<br>&nbsp; "set x "_xval<br>&nbsp; "set y "_yval<br>&nbsp; "set t "_tval<br>&nbsp; "set zlog on"<br>&nbsp; "set gxout line"<br>&nbsp; "set ccolor "RHCol<br>&nbsp; "set cstyle "RHLine<br>&nbsp; "set cmark "RHMrk<br>&nbsp; "set digsiz "MrkSize<br>&nbsp; "set missconn on"<br>&nbsp; "set xlab on"<br>&nbsp; "set frame off"<br>&nbsp; "set vrange 0 350"<br>&nbsp; "set xlpos 0 t"<br>&nbsp; "set xlevs 25 50 75 100"<br>&nbsp; "set grid vertical 5"<br>&nbsp; "define rh=100*exp((17.2694*"snddewp")/("snddewp"+237.3)-(17.2694*"sndtemp")/("sndtemp"+237.3))"<br>&nbsp; "d rh"<br>&nbsp;&nbsp; If (LblAxes = 1)<br>&nbsp;&nbsp;&nbsp;&nbsp; "set string 1 c 3 0"<br>&nbsp;&nbsp;&nbsp;&nbsp; "set strsiz 0.125"<br>&nbsp;&nbsp;&nbsp;&nbsp; If (PageType = "Portrait")<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "draw string 1.5 10.85 RH (%)"<br>&nbsp;&nbsp;&nbsp;&nbsp; Else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "draw string 1.75 8.35 RH (%)"<br>&nbsp;&nbsp;&nbsp;&nbsp; Endif<br>&nbsp;&nbsp; Endif<br>Endif<br><br>*------------------------------------------<br>* Reset environment to original dimensions<br>*------------------------------------------<br><br>"set t "_tval<br>"set x "_xval <br>"set y "_yval <br>"set z "_zmin " "_zmax<br><br>say "Done."<br><br>*Return(0)<br><br>*************************************************************************<br>function Templcl(temp,dewp)<br><br>*------------------------------------------------------<br>* Calculate the temp at the LCL given temp &amp; dewp in C<br>*------------------------------------------------------<br><br>tempk=temp+273.15<br>dewpk=dewp+273.15<br>Parta=1/(dewpk-56)<br>Partb=log(tempk/dewpk)/800<br>Tlcl=1/(Parta+Partb)+56<br>return(Tlcl-273.15)<br><br>**************************************************************************<br><br>function Preslcl(temp,dewp,pres)<br><br>*-------------------------------------------------------<br>* Calculate press of LCL given temp &amp; dewp in C and pressure<br>*-------------------------------------------------------<br><br>Tlclk=Templcl(temp,dewp)+273.15<br>tempk=temp+273.15<br>theta=tempk*pow(1000/pres,0.286)<br>plcl=1000*pow(Tlclk/theta,3.48)<br>return(plcl)<br><br>**************************************************************************<br>function LiftWet(startt,startp,endp,display,Pmin,Pmax)<br><br>*--------------------------------------------------------------------<br>* Lift a parcel moist adiabatically from startp to endp.<br>* Init temp is startt in C.&nbsp; If you wish to see the parcel's<br>* path plotted, display should be 1.&nbsp; Returns temp of parcel at endp.<br>*--------------------------------------------------------------------<br><br>temp=startt<br>pres=startp<br>cont = 1<br>delp=10<br>While (pres &gt;= endp &amp; cont = 1) <br>&nbsp;&nbsp;&nbsp; If (display = 1) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xtemp=GetXLoc(temp,pres)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "q w2xy "xtemp" "pres<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xloc=subwrd(result,3)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yloc=subwrd(result,6)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If (xtemp &lt; 0 | xtemp &gt; 100)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cont=0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If (pres &gt;= Pmin &amp; pres &lt; Pmax &amp; pres &lt; startp)&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "draw line "xold" "yold" "xloc" "yloc <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Endif<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Endif<br>&nbsp;&nbsp;&nbsp; Endif<br>&nbsp;&nbsp;&nbsp; xold=xloc<br>&nbsp;&nbsp;&nbsp; yold=yloc<br>&nbsp;&nbsp;&nbsp; temp=temp-100*delp*gammaw(temp,pres-delp/2,100)<br>&nbsp;&nbsp;&nbsp; pres=pres-delp<br>EndWhile<br>return(temp)<br><br><br>**************************************************************************<br>function LiftDry(startt,startp,endp,display,Pmin,Pmax)<br><br>*--------------------------------------------------------------------<br>* Lift a parcel dry adiabatically from startp to endp.<br>* Init temp is startt in C.&nbsp; If you wish to see the parcel's<br>* path plotted, display should be 1.&nbsp; Returns temp of parcel at endp.<br>*--------------------------------------------------------------------<br><br>starttk=startt+273.15<br>cont = 1<br>delp=10<br>round=int(startp/10)*10<br>subscr=0.1*round<br>powstart=pow(startp,-0.286)<br>temp=starttk*_powpres.subscr*powstart-273.15<br>pres=round-10<br>While (pres &gt;= endp &amp; cont = 1) <br>&nbsp;&nbsp;&nbsp; subscr=0.1*pres<br>&nbsp;&nbsp;&nbsp; temp=starttk*_powpres.subscr*powstart-273.15<br>&nbsp;&nbsp;&nbsp; If (display = 1) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xtemp=GetXLoc(temp,pres)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "q w2xy "xtemp" "pres<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xloc=subwrd(result,3)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yloc=subwrd(result,6)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If (xtempold &gt; 0 &amp; xtempold &lt; 100 &amp; xtemp &gt; 0 &amp; xtemp &lt; 100) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If (pres &gt;= Pmin &amp; pres &lt; Pmax &amp; pres &lt; startp)&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "draw line "xold" "yold" "xloc" "yloc <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Endif<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Endif<br>&nbsp;&nbsp;&nbsp; Endif<br>&nbsp;&nbsp;&nbsp; xold=xloc<br>&nbsp;&nbsp;&nbsp; xtempold=xtemp<br>&nbsp;&nbsp;&nbsp; yold=yloc<br>&nbsp;&nbsp;&nbsp; pres=pres-delp<br>EndWhile<br>return(temp)<br><br>**************************************************************************<br>function CAPE(startt,startp,endp,sndtemp,snddewp)<br><br>*---------------------------------------------------------------------<br>* Returns all postive area and convective inhibition above LCL.<br>* Parcel is lifted from LCL at startt,startp and is halted<br>* at endp.&nbsp;&nbsp; Integration method used is trapezoid method.<br>*---------------------------------------------------------------------<br><br>pres=startp<br>PclTemp=startt<br>PclTempV=virtual2(PclTemp+273.15,PclTemp+273.15,pres)-273.15<br>delp=10<br>Pos=0<br>Neg=0<br>Neg2=0<br><br>count=0<br>While (pres &gt;= endp)<br>&nbsp;&nbsp; EnvTemp=interp(sndtemp,pres)<br>&nbsp;&nbsp; EnvDewp=interp(snddewp,pres)<br>&nbsp;&nbsp; EnvTempV=virtual2(EnvTemp+273.15,EnvDewp+273.15,pres)-273.15<br>&nbsp;&nbsp; DelT=PclTempV-EnvTempV<br>&nbsp;&nbsp; If (abs(EnvTempV) &lt; 130 &amp; abs(PclTempV) &lt; 130)<br>&nbsp;&nbsp;&nbsp;&nbsp; count=count+1<br>&nbsp;&nbsp;&nbsp;&nbsp; If (count &gt; 1) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Val=DelT/pres+Prev <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If (Val &gt; 0)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Pos=Pos+Val<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Neg2=0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Neg=Neg+abs(Val)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Neg2=Neg2+abs(Val)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Endif<br>&nbsp;&nbsp;&nbsp;&nbsp; Endif<br>&nbsp;&nbsp;&nbsp;&nbsp; Prev=DelT/pres<br>&nbsp;&nbsp; Endif<br>&nbsp;&nbsp; pres=pres-delp<br>&nbsp;&nbsp; PclTemp=PclTemp-100*delp*gammaw(PclTemp,pres,100)<br>&nbsp;&nbsp; PclTempV=virtual2(PclTemp+273.15,PclTemp+273.15,pres)-273.15<br>Endwhile<br><br>Pos=0.5*Pos*287*delp<br>CIN=0.5*(Neg-Neg2)*287*delp<br><br>return(Pos" "CIN)<br><br>***************************************************************************<br>function gammaw(tempc,pres,rh)<br><br>*-----------------------------------------------------------------------<br>* Function to calculate the moist adiabatic lapse rate (deg C/Pa) based<br>* on the temperature, pressure, and rh of the environment.<br>*----------------------------------------------------------------------<br><br>tempk=tempc+273.15<br>es=satvap2(tempc)<br>ws=mixratio(es,pres)<br>w=rh*ws/100<br>tempv=virtual(tempk,w)<br>latent=latentc(tempc)<br><br>A=1.0+latent*ws/(287*tempk)<br>B=1.0+0.622*latent*latent*ws/(1005*287*tempk*tempk)<br>Density=100*pres/(287*tempv)<br>lapse=(A/B)/(1005*Density)<br>return(lapse)<br><br>*************************************************************************<br>function latentc(tempc)<br><br>*-----------------------------------------------------------------------<br>* Function to return the latent heat of condensation in J/kg given<br>* temperature in degrees Celsius.<br>*-----------------------------------------------------------------------<br><br>val=2502.2-2.43089*tempc<br><br>return(val*1000)<br><br>*************************************************************************<br>function precipw(sndtemp,snddewp,startp,endp)<br><br>*-----------------------------------------------------------------------<br>* Function to calculate the precipitable water (cm) in a sounding<br>* starting at pressure level startp and ending at pressure level endp.<br>*-----------------------------------------------------------------------<br><br>ppold=-999<br>ttold=-999<br>ddold=-999<br>delp=10<br>Int=0<br>mix=0 <br>pres=startp<br>logpp=log(pres)<br>logppm=log(pres-delp)<br>while (pres &gt;= endp)<br>&nbsp;&nbsp; tt=interp(sndtemp,pres)<br>&nbsp;&nbsp; dd=interp(snddewp,pres)<br>&nbsp;&nbsp; if (tt&gt;-900 &amp; ttold&gt;-900 &amp; dd&gt;-900 &amp; ddold&gt;-900) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e=satvap2(dd)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mix=mixratio(e,pres)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mixavg=(logpp*mix+logppm*mixold)/(logpp+logppm)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Int=Int+1.020408*mixavg*delp<br>&nbsp;&nbsp; endif<br>&nbsp;&nbsp; ttold=tt<br>&nbsp;&nbsp; ddold=dd<br>&nbsp;&nbsp; ppold=pp<br>&nbsp;&nbsp; mixold=mix<br>&nbsp;&nbsp; pres=pres-delp<br>&nbsp;&nbsp; logpp=logppm<br>&nbsp;&nbsp; logppm=log(pres-delp)<br>endwhile<br><br>return(Int)<br><br>*************************************************************************<br><br>function virtual(temp,mix)<br><br>*------------------------------------------------------------<br>* Function to return virtual temperature given temperature in <br>* kelvin and mixing ratio in g/g.<br>*-------------------------------------------------------------<br><br>tempv=temp*(1.0+0.6*mix)<br><br>return (tempv)<br><br>************************************************************************<br><br>function virtual2(temp,dewp,pres)<br>&nbsp; <br>*------------------------------------------------------------<br>* Function to return virtual temperature in kelvin given temperature in<br>* kelvin and dewpoint in kelvin and pressure in mb<br>*-------------------------------------------------------------<br><br>if (temp &gt; 0 &amp; dewp &gt; 0) <br>&nbsp; vap=satvap2(dewp-273.15)<br>&nbsp; mix=mixratio(vap,pres)<br>&nbsp; tempv=virtual(temp,mix)<br>else<br>&nbsp; tempv=-9999<br>endif<br><br>return (tempv)<br>&nbsp; <br>************************************************************************<br><br>function satvapor(temp)<br><br>*---------------------------------------------------------------<br>* Given temp in Celsius, returns saturation vapor pressure in mb<br>*---------------------------------------------------------------<br><br>pol=_C0+temp*(_C1+temp*(_C2+temp*(_C3+temp*(_C4+temp*(_C5+temp*(_C6+temp*(_C7+temp*(_C8+temp*(_C9)))))))))<br><br>return(6.1078/pow(pol,8))<br><br>************************************************************************<br><br>function satvap2(temp)<br><br>*---------------------------------------------------------------<br>* Given temp in Celsius, returns saturation vapor pressure in mb<br>*---------------------------------------------------------------<br><br>es=6.112*exp(17.67*temp/(temp+243.5))<br><br>return(es)<br><br>*************************************************************************<br><br>function mixratio(e,p)<br><br>*------------------------------------------------------<br>* Given vapor pressure and pressure, return mixing ratio<br>*-------------------------------------------------------<br><br>mix=0.622*e/(p-e)<br><br>return(mix)<br><br>************************************************************************<br><br>function getrh(temp,dewp,pres)<br><br>tempk=temp+273.15<br>dewpk=dewp+273.15<br><br>es=satvap2(temp)<br><br>If (temp &gt; 0) <br>&nbsp;&nbsp; A=2.53*pow(10,9)<br>&nbsp;&nbsp; B=5420<br>Else<br>&nbsp;&nbsp; A=3.41*pow(10,10)<br>&nbsp;&nbsp; B=6130<br>Endif<br><br>w=A*0.622*exp(-B/dewpk)/pres<br>ws=mixratio(es,pres)<br><br>return(100*w/ws)<br><br>************************************************************************<br>function interp(array,pres)<br><br>*------------------------------------------------------------------------<br>* Interpolate inside array for pressure level pres.<br>* Returns estimated value of array at pressure pres.<br>*------------------------------------------------------------------------<br><br>"set gxout stat"<br>"set lev "pres<br>altpres=subwrd(result,4)<br>"q dims"<br>rec=sublin(result,4)<br>zlev=subwrd(rec,9)<br><br>If (zlev &lt; 2 | zlev &gt; _zmaxfile)<br>&nbsp; Vest = -9999.0<br>Else<br>&nbsp; If (altpres &gt; pres)<br>&nbsp;&nbsp;&nbsp; zlev=zlev+1<br>&nbsp; Endif<br>&nbsp; "set z "zlev<br>&nbsp; PAbove=subwrd(result,4)<br>&nbsp; "d "array"(lev="PAbove")"<br>&nbsp; rec=sublin(result,8)<br>&nbsp; VAbove=subwrd(rec,4)<br>&nbsp; "set z "zlev-1<br>&nbsp; PBelow=subwrd(result,4)<br>&nbsp; "d "array"(lev="PBelow")"<br>&nbsp; rec=sublin(result,8)<br>&nbsp; VBelow=subwrd(rec,4)<br><br>* Now if we are in a region of missing data, find next good level.<br><br>&nbsp; If (abs(VAbove) &gt; 130 &amp; zlev &gt; 1 &amp; zlev &lt; _zmaxfile)<br>&nbsp;&nbsp;&nbsp;&nbsp; zz=zlev<br>&nbsp;&nbsp;&nbsp;&nbsp; While (abs(VAbove) &gt; 130 &amp; zz &lt; _zmaxfile)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zz=zz+1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "set z "zz<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PAbove=subwrd(result,4)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "d "array"(lev="PAbove")"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rec=sublin(result,8)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VAbove=subwrd(rec,4)<br>&nbsp;&nbsp;&nbsp;&nbsp; EndWhile<br>&nbsp; Endif<br><br>&nbsp; If (abs(VBelow) &gt; 130 &amp; zlev &gt; 1 &amp; zlev &lt; _zmaxfile)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zz=zlev-1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; While (abs(VBelow) &gt; 130 &amp; zz &gt; 1) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zz=zz-1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "set z "zz<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PBelow=subwrd(result,4)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "d "array"(lev="PBelow")"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rec=sublin(result,8)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VBelow=subwrd(rec,4)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EndWhile<br>&nbsp; Endif<br><br>&nbsp; If (abs(VAbove) &lt; 130 &amp; abs(VBelow) &lt; 130)<br>&nbsp;&nbsp;&nbsp;&nbsp; Vest=VBelow+log(PBelow/pres)*(VAbove-VBelow)/log(PBelow/PAbove)<br>&nbsp; Else<br>&nbsp;&nbsp;&nbsp;&nbsp; Vest=-9999.0<br>&nbsp; Endif<br><br>Endif<br><br>Return(Vest)<br><br>****************************************************************************<br><br>function GetUWnd(wspd,wdir)<br><br>*------------------------<br>* Get x-component of wind. <br>*------------------------<br><br><br>If (wspd &gt;= 0) <br>&nbsp;&nbsp; xwind=wspd*cos((270-wdir)*_dtr)<br>Else<br>&nbsp;&nbsp; xwind = -9999.0<br>Endif<br>return(xwind)<br><br>**************************************************************************<br><br>function GetVWnd(wspd,wdir)<br><br>*-----------------------<br>* Get y-component of wind<br>*------------------------<br><br>If (wspd &gt;= 0) <br>&nbsp;&nbsp; ywind=wspd*sin((270-wdir)*_dtr)<br>Else<br>&nbsp;&nbsp; ywind = -9999.0<br>Endif<br>return(ywind)<br><br><br>*************************************************************************<br><br>function GetWSpd(xwind,ywind)<br><br><br>"set gxout stat"<br>"d mag("xwind","ywind")"<br>rec=sublin(result,8)<br>val=subwrd(rec,4)<br><br>return (val)<br><br>*************************************************************************<br><br>function GetWDir(xwind,ywind)<br><br>* Return wind direction given x and y components<br><br>"set gxout stat"<br>"define theta=270-"_rtd"*atan2("ywind","xwind")"<br>"d theta"<br>rec=sublin(result,8)<br>Dir=subwrd(rec,4)<br><br>If (Dir &gt; 360)<br>&nbsp;&nbsp; Dir=Dir-360<br>Endif<br><br>If (Dir &lt; 0)<br>&nbsp;&nbsp; Dir=360+Dir<br>Endif<br><br>return(Dir)<br><br>*************************************************************************<br><br>function GetXLoc(temp,pres)<br><br>*-------------------------------------------------<br>* Get x-location on skew-t based on temp, pressure<br>*-------------------------------------------------<br><br>xloc=(temp-_m1*log10(pres)-_m3)/_m2<br>return(xloc)<br><br>*************************************************************************<br>&nbsp;<br>function GetTemp(xloc,pres) <br><br>*------------------------------------------------- <br>* Return temperature at location given by xloc,pres<br>*-------------------------------------------------<br><br>tempval=_m1*log10(pres)+_m2*xloc+_m3<br>return(tempval)<br><br>**************************************************************************<br><br>function GetTheta(temp,pres)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br><br>*---------------------------------------------------<br>* Calculate theta for a given temperature and pressure<br>*---------------------------------------------------<br><br>theta=(temp+273.15)*pow(1000/pres,0.286)-273.15<br>return(theta)<br><br><br>*************************************************************************<br><br>function GetThet2(temp,dewp,pres)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br><br>*---------------------------------------------------<br>* Calculate theta for a given temperature,dewp, and pressure<br>*---------------------------------------------------<br><br>tempk=273.15+temp<br>dewpk=273.15+dewp<br><br>es=satvap2(temp)<br>ws=mixratio(es,pres)<br><br>mix=10*getrh(temp,dewp,pres)*ws<br><br>exponent=0.2854*(1.0-0.00028*mix)<br>theta=(temp+273.15)*pow(1000/pres,exponent)-273.15<br>return(theta)<br><br>*************************************************************************<br><br>function Thetae(temp,dewp,pres)<br><br>*--------------------------------------------------------------<br>* Return equiv. pot. temp in Kelvin given temp, dewp in celsius<br>* From Bolton (1980) Mon Wea Rev<br>*--------------------------------------------------------------<br><br>es=satvap2(temp)<br>ws=mixratio(es,pres)<br>mix=10*getrh(temp,dewp,pres)*ws<br>theta=GetThet2(temp,dewp,pres)+273.15<br>TLcl=Templcl(temp,dewp)+273.15<br>thetae=theta*exp((3.376/TLcl-0.00254)*mix*(1.0+0.00081*mix))<br><br>return(thetae)<br><br>**************************************************************************<br><br><br>function int(i0)<br><br>*--------------------------<br>* Return integer of i0<br>*--------------------------<br>&nbsp; i=0<br>&nbsp; while(i&lt;12)<br>&nbsp;&nbsp;&nbsp; i=i+1<br>&nbsp;&nbsp;&nbsp; if(substr(i0,i,1)='.')<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i0=substr(i0,1,i-1)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break<br>&nbsp;&nbsp;&nbsp; endif<br>&nbsp; endwhile<br>return(i0)<br><br>*************************************************************************<br><br>function abs(i)<br><br>*----------------------------<br>* return absolute value of i<br>*----------------------------<br><br>&nbsp; if (i &lt; 0) <br>&nbsp;&nbsp;&nbsp;&nbsp; absval=-i<br>&nbsp; else <br>&nbsp;&nbsp;&nbsp;&nbsp; absval=i<br>&nbsp; endif<br><br>return(absval)<br><br>*************************************************************************<br><br>function log(i)<br><br>*---------------------------<br>* return natural log of i<br>*---------------------------<br><br>"set gxout stat"<br>"d log("i")"<br>rec=sublin(result,8)<br>val=subwrd(rec,4)<br>return(val)<br><br>*************************************************************************<br><br>function log10(i)<br><br>*--------------------------<br>* return log base 10 of i<br>*--------------------------<br><br>"set gxout stat"<br>"d log10("i")"<br>rec=sublin(result,8)<br>val=subwrd(rec,4)<br>return(val)<br><br>*************************************************************************<br><br>function pow(i,j)<br><br>*-------------------------------<br>* return power of i raised to j<br>*-------------------------------<br><br>"set gxout stat"<br>"d pow("i","j")"<br>rec=sublin(result,8)<br>val=subwrd(rec,4)<br>return(val)<br><br>************************************************************************<br><br>function cos(i)<br><br>*-----------------------------------------<br>* return cosine of i, where i is in radians<br>*------------------------------------------<br><br>"set gxout stat"<br>"d cos("i")"<br>rec=sublin(result,8)<br>val=subwrd(rec,4)<br>return(val)<br><br>************************************************************************<br><br>function sin(i)<br><br>*------------------------------------------<br>* return sine of i, where i is in radians<br>*------------------------------------------<br><br>"set gxout stat"<br>"d sin("i")"<br>rec=sublin(result,8)<br>val=subwrd(rec,4)<br>return(val)<br><br>************************************************************************<br><br>function exp(i)<br><br>*------------------------------------------<br>* return exponential of i<br>*------------------------------------------<br><br>"set gxout stat"<br>"d exp("i")"<br>rec=sublin(result,8)<br>val=subwrd(rec,4)<br>return(val)<br><br>***********************************************************************<br>function round(i)<br><br>rr=abs(1.0*i)<br>rr=int(rr+0.5)<br>if (i &lt; 0)<br>&nbsp;&nbsp; rr=-1*rr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>endif<br>return(rr)<br><br><br>                                               </body>
</html>