<div dir="ltr"><div><div><div>Hi all,<br><br></div>There have been a few enquiries recently about plotting freezing levels.<br><br></div>For data on sigma levels with sigma level height given, one can adapt Bob Hart&#39;s script, <a href="http://isen.gs" target="_blank">isen.gs</a>, to do this. (See the script library on the grads website.)<br>







<br></div><div>That script can also be adapted to plot any variable on any surface, such as height on potential vorticity, height on potential temperature, wind on potential temperature, or wind on potential vorticity etc.<br>







<br> (Ideally, you should use do this calculation in height coordinates with a polynomial interpolation or Fourier series, but I think a linear interpolation 
between sigma levels works well if you have enough sigma levels in your data file.)<br><br></div><div>I&#39;ve added my version of the script below. (It&#39;s set up to work with fwrite and several output files and times at the moment. The gen*ctl files are generic non-dimensional files which are needed for fwrite purposes. Feel free to modify the script as you please.)<br>



<br></div><div>Cheers,<br></div><div><br>Ted Pollock<br>
</div><div><br></div><div>**********************<a href="http://frzlvl.gs">frzlvl.gs</a>*************************<br></div><div><br>function frzlvl(args)<br><br>dom=1<br>
while(dom&lt;=3)<br>
<br>
&#39;set gxout fwrite&#39;<br>&#39;set fwrite FRZ.d&#39;dom&#39;.dat&#39;<br><br>tt=1<br>while(tt&lt;=48)<br><br>&#39;open gen.d&#39;dom&#39;.3d.ctl&#39;<br>&#39;open gen.d&#39;dom&#39;.2d.ctl&#39;<br><br>&#39;set t &#39;tt<br>







&#39;set z 1 23&#39;<br>&#39;define height=z+ter.2&#39;<br><br>&#39;set z 1 23&#39;<br>&#39;define temp=t&#39;<br>&#39;set z 2 23&#39;<br>&#39;define tempp=t(z-1)&#39;<br>&#39;set z 1 22&#39;<br>&#39;define tempm=t(z+1)&#39;<br>







<br>&#39;define tabove=0.5*maskout(maskout(temp,temp-273.15),temp(z-1)-temp(z+1))+0.5*ma<br>skout(maskout(temp,273.15-tempm),temp(z-1)-temp(z+1))&#39;<br>&#39;define tbelow=0.5*maskout(maskout(temp,tempp-273.15),temp(z-1)-temp(z+1))+0.5*m<br>







askout(maskout(temp,273.15-temp),temp(z-1)-temp(z+1))&#39;<br><br>&#39;define fabove=tabove*0+height&#39;<br>&#39;define fbelow=tbelow*0+height&#39;<br><br>&#39;set z 1&#39;<br><br>&#39;define fabove=max(maskout(fabove,temp(z+0)-temp(z+1)),z=1,z=23)&#39;<br>







&#39;define fbelow=max(maskout(fbelow,temp(z+0)-temp(z+1)),z=1,z=23)&#39;<br>&#39;define tabove=max(maskout(tabove,temp(z+0)-temp(z+1)),z=1,z=23)&#39;<br>&#39;define tbelow=max(maskout(tbelow,temp(z+0)-temp(z+1)),z=1,z=23)&#39;<br>







<br>&#39;define slope=(fabove-fbelow)/(tabove-tbelow)&#39;<br>&#39;define b=fbelow-slope*tbelow&#39;<br>&#39;define interp=slope*273.15+b&#39;<br><br>&#39;d const(maskout(interp,interp),0,-u)+const(const(interp,0),1,-u)*(ter.2+((t-273<br>







.15)/0.0075))&#39;<br>&#39;d ter.2&#39;<br><br><br>&#39;close 2&#39;<br>&#39;close 1&#39;<br><br>tt=tt+1<br>endwhile<br><br>&#39;disable fwrite&#39;<br><br>dom=dom+1<br>endwhile<br><br>&#39;quit&#39;<br><br>return<br><br>







</div></div>