On Sun, Oct 31, 2010 at 10:58 AM, Mubashar Dogar <span dir="ltr">&lt;<a href="mailto:mubashardogar@gmail.com">mubashardogar@gmail.com</a>&gt;</span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div dir="ltr">Dear GrADS Users,<br><br>I am interested to do EOF analysis using GrADS
udf utility? I am using grads 2.0.a7.oga.3. Could you please guide me
that this version support EOF analysis or I have to swich some older
version of GrADS? It will be highly appreciated if you could guide me
with some steps for doing EOF analysis as well?<br><br></div></blockquote><div><br></div><div>The old EOF udf does not work AS IS in 2.0.a7.oga.3 although with modest effort it could be implemented as an opengrads extension. However, I personally have not had any motivation for doing this because EOFs are really easy with pygrads, e.g.,</div>
<div><br></div><div>       <a href="http://opengrads.org/wiki/index.php?title=PyGrADS_Interactive_Shell#Computing_EOFs">http://opengrads.org/wiki/index.php?title=PyGrADS_Interactive_Shell#Computing_EOFs</a></div><div><br>
</div><div>You don&#39;t really need to learn python to use the pygrads command line interface, but learning python is always a good investment.</div><div><br></div><div>Alternatively, the opengrads bundle that you have includes the IPC extension which includes functions ipc_save/ipc_load that can be very useful to interface to fortran codes such as the EOF udf. See this:</div>
<div><br></div><div>       <a href="http://opengrads.org/doc/udxt/libipc/">http://opengrads.org/doc/udxt/libipc/</a></div><div><br></div><div>The command ipc_save can be used for you to save a variable/expression to a disk file, using the same format used by the old udfs, e..g.,</div>
<div><br></div><div>ga-&gt; ipc_save ps ps.data</div><div><br></div><div>the function ipc_load reads this data back in,</div><div><br></div><div>ga-&gt; d ps - ipc_load(&#39;ps.data&#39;)</div><div><br></div><div>should produce a zero field. Now, if you sandwich a &quot;!&quot; system call in between ipc_save/ipc_load you get a poor man UDF:</div>
<div><br></div><div>ga-&gt; ipc_save ps ps.data</div><div>ga-&gt; ! do_something_with_ps.x  ... commnand line args ...</div><div>ga-&gt; d ipc_load(&#39;output.data&#39;)</div><div><br></div><div>where I am assuming that your  &quot;do_something_with_ps.x&quot; program knows how to read &quot;ps.data&quot; and writes the output file &quot;output.data&quot;; you can pass command line arguments to further inform your program about what to do. Because each variable is saved to an individual file you will need to make adjustments to your old-style UDF to read these from separate files, but this shuldn&#39;t be too hard as the variables are saved in the same file format (see man page above for more details.) The output file written by the old-style UDF is directly readable by ipc_load.  For some syntatic sugar, the 3 lines above (save/!/load) can be folded into a gsUDF</div>
<div><br></div><div>    <a href="http://opengrads.org/doc/udxt/gsudf/">http://opengrads.org/doc/udxt/gsudf/</a></div><div><br></div><div>so that your poor man UDF can appear as a regular function:</div><div><br></div><div>
ga-&gt; d myudf(ps)</div><div><br></div><div>(Recall that gsUDFs allow you to write grads expression functions as a gs script functions.) </div><div><br></div><div>    If I was going to port an existing old-style UDF I&#39;d still implement it as an extension, but the method I just outlined may be more attractive to some people who do not want to bother writing the C-wrapper required by extensions. In all of this, you will need an opengrads bundle distribution. Although you could use sdfwrite as a replacement for ipc_save, in this case you need to revise your UDF to read netcdf files instead, so using ipc_save requires fewer code changes.</div>
<div><br></div><div>   Good Luck,</div><div><br></div><div>       Arlindo</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div dir="ltr">
Regards,<br><br>Mubashar<br clear="all"><br>
</div>
<br>_______________________________________________<br>
gradsusr mailing list<br>
<a href="mailto:gradsusr@gradsusr.org">gradsusr@gradsusr.org</a><br>
<a href="http://gradsusr.org/mailman/listinfo/gradsusr" target="_blank">http://gradsusr.org/mailman/listinfo/gradsusr</a><br>
<br></blockquote></div><br><br clear="all"><br>-- <br>Arlindo da Silva<br><a href="mailto:dasilva@alum.mit.edu">dasilva@alum.mit.edu</a><br>