From: Brian D. <do...@co...> - 2009-02-23 12:57:52
|
There is a major change to the gagrid structure coming soon; we will finalize the "udf" interface then. Please note that none of the internals of grads are maintained as external interfaces or callable libraries, etc. For this reason, any code that calls back into grads or uses the grads include files (ie, grads.h) is, in my viewpoint, BEST MAINTAINED AS A SOURCE MOD. This makes it clear the code must be recompiled when new releases of grads come out, and makes it clear that different versions have to be maintained for different versions of grads. udf's will have their own include files and, where needed, supported call-back entry points. udf's that use these interfaces will be much easier to maintain and support going forward... Brian On Feb 21, 2009, at 11:07 PM, Arlindo da Silva wrote: > All, > > I have started uploading to sf.net sources and binaries for the > OpenGrADS Bundle based on COLA's 2.0.a5 release. > > https://sourceforge.net/project/showfiles.php? > group_id=161773&package_id=305032&release_id=662661 > > The OpenGrADS Bundle is described here: > > http://opengrads.org/wiki/index.php?title=The_OpenGrADS_Bundle > > Before I announce this on gradsusr, could some of you try it out > and give me some feedback? In particular try the executable "merra" > which will start the GUI described in this recipe: > > http://cookbooks.opengrads.org/index.php? > title=Recipe-016:_Accessing_MERRA_data_with_a_Graphical_User_Interface > > Start the executable *opengrads* which comes up with colorized text > as in the attachment. I'll now turn to the windows build and the > Mac native package/installer. Try the extensions which are > documented here: > > http://opengrads.org/doc/#udxt > > In particular the spherical harmonic filter: > > d sh_filt(ps,10) > > gxyat, re, fish, env, etc should all work, but it could always use > more testing. > > From the NEWS file: > > This version is based on COLA's 2.0.a5 release which includes > support for GeoTIFF and KML, in addition to some bug fixes. See > the ChangeLog for details. > > Several important OpenGrADS additions are available with this version: > > - grads is now built with NetCDF v4.0.1beta3 which includes support > for NetCDF-4/HDF-5 (similar to gradsnc4 in v1.9.0-rc1) and has > built in OPeNDAP support. > > - gradsdap is no longer provided as its functionality is now included > in the single executable *grads*. > > - this is the first release of the OpenGrADS Bundle, a relocatable, > minimum configuration package that has all that you need to run > GrADS. See INSTALL for additonal information. > > - we have introduced option -C to enable colorized text > > - preview release of the OpenGrADS Extensions; the same extensions > available in GrADS v1.9.0-rc1 are now available with GrADS v2.0. > > Caveat: as COLA is yet to publish the official API for User Defined > functions in GrADS v2.0 we have adopted here an API that > is based on our work vith v1.9.0-rc1. This is a very low- > level > API that is *not* endorsed by COLA. As such, it is *not* > advisable > that users adopt this API to write their own extensions. > > - These extensions are still being fully tested. Please report any > problems > you encounter. Use them at your own risk. > > - The following extensions are included: > > User > Defined > COMMAND Short Description Function@Library > ---------- ----------------------------------- > -------------------------- > gsudf Initialize gs-function package c_gsudf@^gsudf.gex > printenv Expand environment variables c_xenv@^env.gex > runenv Expand env vars and run command c_env@^env.gex > @ Expand env vars and run command c_env@^env.gex > getenv Get value of environment variable c_getenv@^env.gex > setenv Set value of environment variable c_setenv@^env.gex > gxyat Save images in PNG/SVG/PDF/PS c_gxyat@^gxyat.gex > hello Hello, World! sample command c_hello@^libhello.gex > ipc_verb IPC verbose toggle c_Verb@^libipc.gex > ipc_open Open stream for save/load c_Open@^libipc.gex > ipc_close Close stream c_Close@^libipc.gex > ipc_save Save expression to stream c_Save@^libipc.gex > ipc_define Define variable (obsolete) c_Define@^libipc.gex > ipc_error Print IPC error message c_Error@^libipc.gex > mfhilo Find max/min or H/L in 2D field c_mfhilo@^libmf.gex > cylprms Properties relative to lon/lat c_cylprms@^libmf.gex > shp_lines Draw lines from shapefile c_lines@^shape.gex > shp_polyf Draw polygons from shapefile c_polyf@^shape.gex > ---------- ----------------------------------- > -------------------------- > > User > Defined > FUNCTION Short Description Function@Library > ---------- ----------------------------------- > -------------------------- > speed Wind-speed (sample gs-function) f_gsudf@^gsudf.gex > lt Less than operator f_bjt@^libbjt.gex > jd Julian day f_bjt@^libbjt.gex > cosz Cosine solar zenith angle f_bjt@^libbjt.gex > dayratio Daylight ratio f_bjt@^libbjt.gex > if Conditional function f_bjt@^libbjt.gex > maxv Maximum value f_bjt@^libbjt.gex > minv Minimum value f_bjt@^libbjt.gex > which Label gridpoints f_bjt@^libbjt.gex > ftest F-test f_bjt@^libbjt.gex > ttest T-test f_bjt@^libbjt.gex > tfit Point linear regression f_bjt@^libbjt.gex > fit Global linear regression f_bjt@^libbjt.gex > tcorr2 Time correlation f_bjt@^libbjt.gex > tregr2 Point linear regression f_bjt@^libbjt.gex > tmave2 Time averaging w/masking f_bjt@^libbjt.gex > madvu Calculates -d(u*EXPR)/dx f_bjt@^libbjt.gex > madvv Calculates -d(V*EXPR)/dy f_bjt@^libbjt.gex > madvw Calculates -d(W*EXPR)/dp f_bjt@^libbjt.gex > muadv Zonal advection f_bjt@^libbjt.gex > mvadv Meridional advection f_bjt@^libbjt.gex > mwadv Vertical advection f_bjt@^libbjt.gex > satvap Saturated vapor pressure f_bjt@^libbjt.gex > dew Dew point temperature f_bjt@^libbjt.gex > lw Thermal infrared fluxes f_bjt@^libbjt.gex > lw2 Thermal infrared fluxes v2 f_bjt@^libbjt.gex > pinterp Pressure interpolation f_bjt@^libbjt.gex > zinterp Height interpolation f_bjt@^libbjt.gex > line Draws a line f_bjt@^libbjt.gex > vint2 Mass-weighted vertical integral f_bjt@^libbjt.gex > fish Poisson solver f_fish@^fish.gex > fish_psi Compute streamfunction f_psichi@^fish.gex > fish_chi Compute velocity potential f_psichi@^fish.gex > fish_vor Compute vorticity f_psichi@^fish.gex > fish_div Compute divergence f_psichi@^fish.gex > hello Hello, World! sample function f_hello@^libhello.gex > ipc_save Save expression to stream f_Save@^libipc.gex > ipc_load Load variable from file f_Load@^libipc.gex > smth2d Shuman smoother/de-smoother f_smth2d@^libmf.gex > uv2trw Find radial/tangential velocity f_uv2trw@^libmf.gex > re General interpolator ffre@^re.gex > sh_filt Spherical harmonic filter f_shfilt@^shfilt.gex > sh_power Spherical harmonic spectra f_shpowr@^shfilt.gex > ---------- ----------------------------------- > -------------------------- > > > Building it > ------------ > > To build it, get pre-compiled (or build it yourself) supplibs-2.1.0 > from > > https://sourceforge.net/project/showfiles.php? > group_id=161773&package_id=241681&release_id=661716 > > > > % gacvs co -P Grads > % make > % make check > % bundle/bundle_create.sh > > Then > > % cd opengrads/ > > and take a look ar README and INSTALL. Try this: > > % cd opengrads/Contents > % ./merra > > To make a distribution tarball with the bundle > > % make bundle-dist > > Let me know if you have problems. > > Arlindo > > -- > Arlindo da Silva > da...@al... > <colorized.tiff> |
From: Arlindo da S. <da...@al...> - 2009-02-23 14:32:03
|
On Mon, Feb 23, 2009 at 7:42 AM, Brian Doty <do...@co...> wrote: > > There is a major change to the gagrid structure coming soon; we will finalize the "udf" interface then. > > Please note that none of the internals of grads are maintained as external interfaces or callable libraries, etc. For this reason, any code that calls back into grads or uses the grads include files (ie, grads.h) is, in my viewpoint, BEST MAINTAINED AS A SOURCE MOD. This makes it clear the code must be recompiled when new releases of grads come out, and makes it clear that different versions have to be maintained for different versions of grads. > > udf's will have their own include files and, where needed, supported call-back entry points. udf's that use these interfaces will be much easier to maintain and support going forward... Brian We are at the same page, this is very consistent with the interface proposal I sent you a few weeks ago. For the benefit of the opengrads-devel folks, here is the proposal. http://opengrads.org/wiki/index.php?title=User_Defined_Extensions_in_GrADS_v2.0 Based on the discussion we had in our last face-to-face meeting I incorporated the notion of "API Levels" in the OpenGrADS User Defined Extension (UDX) implementation. Level 0 is the lowest level and the extension functions in there share the same signature as the built-in GrADS functions, while the Level 1 API is along the lines you you describe: independent of the grads non-public internals. Therefore, Level 0 UDFs are *always* bound to a particular version of GrADS. For this reason, I am no longer distributing these as separate packages, but always in the context of a full grads source tree. They are still extensions n the sense that they are deployed by a UDX gateway called from gauser.c/gafunc.c (just a couple of lines in each), this way making much easier for us to catch up with each new COLA release of GrADS. Really, they are add-ons to whatever COLA puts out. The goal is to retain 100% compatibility with COLA releases. So we are not modifying grads (behavior) but extending it --- this is the whole point of the OpenGrADS effort. Given all the maintainability risk of Level 0 UDFs there is one positive characteristic, though. Since the signature is the same as the built-in grads functions, it is trivial to turn any Level 0 UDF into a grads intrinsic function as my recent re() experience demonstrated. Therefore, the Level 0 API provides a framework for experimenting with new functions being proposed for GrADS and also a mechanism for people to write variations of the functions already built in GrADS --- enhancements that later could be submitted to COLA for inclusion in the main codebase. I look for forward to COLA's Level 1 API. Cheers! Arlindo > > On Feb 21, 2009, at 11:07 PM, Arlindo da Silva wrote: > >> All, >> >> I have started uploading to sf.net sources and binaries for the OpenGrADS Bundle based on COLA's 2.0.a5 release. >> >> https://sourceforge.net/project/showfiles.php?group_id=161773&package_id=305032&release_id=662661 >> >> The OpenGrADS Bundle is described here: >> >> http://opengrads.org/wiki/index.php?title=The_OpenGrADS_Bundle >> >> Before I announce this on gradsusr, could some of you try it out and give me some feedback? In particular try the executable "merra" which will start the GUI described in this recipe: >> >> http://cookbooks.opengrads.org/index.php?title=Recipe-016:_Accessing_MERRA_data_with_a_Graphical_User_Interface >> >> Start the executable *opengrads* which comes up with colorized text as in the attachment. I'll now turn to the windows build and the Mac native package/installer. Try the extensions which are documented here: >> >> http://opengrads.org/doc/#udxt >> >> In particular the spherical harmonic filter: >> >> d sh_filt(ps,10) >> >> gxyat, re, fish, env, etc should all work, but it could always use more testing. >> >> From the NEWS file: >> >> This version is based on COLA's 2.0.a5 release which includes >> support for GeoTIFF and KML, in addition to some bug fixes. See >> the ChangeLog for details. >> >> Several important OpenGrADS additions are available with this version: >> >> - grads is now built with NetCDF v4.0.1beta3 which includes support >> for NetCDF-4/HDF-5 (similar to gradsnc4 in v1.9.0-rc1) and has >> built in OPeNDAP support. >> >> - gradsdap is no longer provided as its functionality is now included >> in the single executable *grads*. >> >> - this is the first release of the OpenGrADS Bundle, a relocatable, >> minimum configuration package that has all that you need to run >> GrADS. See INSTALL for additonal information. >> >> - we have introduced option -C to enable colorized text >> >> - preview release of the OpenGrADS Extensions; the same extensions >> available in GrADS v1.9.0-rc1 are now available with GrADS v2.0. >> >> Caveat: as COLA is yet to publish the official API for User Defined >> functions in GrADS v2.0 we have adopted here an API that >> is based on our work vith v1.9.0-rc1. This is a very low-level >> API that is *not* endorsed by COLA. As such, it is *not* advisable >> that users adopt this API to write their own extensions. >> >> - These extensions are still being fully tested. Please report any problems >> you encounter. Use them at your own risk. >> >> - The following extensions are included: >> >> User >> Defined >> COMMAND Short Description Function@Library >> ---------- ----------------------------------- -------------------------- >> gsudf Initialize gs-function package c_gsudf@^gsudf.gex >> printenv Expand environment variables c_xenv@^env.gex >> runenv Expand env vars and run command c_env@^env.gex >> @ Expand env vars and run command c_env@^env.gex >> getenv Get value of environment variable c_getenv@^env.gex >> setenv Set value of environment variable c_setenv@^env.gex >> gxyat Save images in PNG/SVG/PDF/PS c_gxyat@^gxyat.gex >> hello Hello, World! sample command c_hello@^libhello.gex >> ipc_verb IPC verbose toggle c_Verb@^libipc.gex >> ipc_open Open stream for save/load c_Open@^libipc.gex >> ipc_close Close stream c_Close@^libipc.gex >> ipc_save Save expression to stream c_Save@^libipc.gex >> ipc_define Define variable (obsolete) c_Define@^libipc.gex >> ipc_error Print IPC error message c_Error@^libipc.gex >> mfhilo Find max/min or H/L in 2D field c_mfhilo@^libmf.gex >> cylprms Properties relative to lon/lat c_cylprms@^libmf.gex >> shp_lines Draw lines from shapefile c_lines@^shape.gex >> shp_polyf Draw polygons from shapefile c_polyf@^shape.gex >> ---------- ----------------------------------- -------------------------- >> >> User >> Defined >> FUNCTION Short Description Function@Library >> ---------- ----------------------------------- -------------------------- >> speed Wind-speed (sample gs-function) f_gsudf@^gsudf.gex >> lt Less than operator f_bjt@^libbjt.gex >> jd Julian day f_bjt@^libbjt.gex >> cosz Cosine solar zenith angle f_bjt@^libbjt.gex >> dayratio Daylight ratio f_bjt@^libbjt.gex >> if Conditional function f_bjt@^libbjt.gex >> maxv Maximum value f_bjt@^libbjt.gex >> minv Minimum value f_bjt@^libbjt.gex >> which Label gridpoints f_bjt@^libbjt.gex >> ftest F-test f_bjt@^libbjt.gex >> ttest T-test f_bjt@^libbjt.gex >> tfit Point linear regression f_bjt@^libbjt.gex >> fit Global linear regression f_bjt@^libbjt.gex >> tcorr2 Time correlation f_bjt@^libbjt.gex >> tregr2 Point linear regression f_bjt@^libbjt.gex >> tmave2 Time averaging w/masking f_bjt@^libbjt.gex >> madvu Calculates -d(u*EXPR)/dx f_bjt@^libbjt.gex >> madvv Calculates -d(V*EXPR)/dy f_bjt@^libbjt.gex >> madvw Calculates -d(W*EXPR)/dp f_bjt@^libbjt.gex >> muadv Zonal advection f_bjt@^libbjt.gex >> mvadv Meridional advection f_bjt@^libbjt.gex >> mwadv Vertical advection f_bjt@^libbjt.gex >> satvap Saturated vapor pressure f_bjt@^libbjt.gex >> dew Dew point temperature f_bjt@^libbjt.gex >> lw Thermal infrared fluxes f_bjt@^libbjt.gex >> lw2 Thermal infrared fluxes v2 f_bjt@^libbjt.gex >> pinterp Pressure interpolation f_bjt@^libbjt.gex >> zinterp Height interpolation f_bjt@^libbjt.gex >> line Draws a line f_bjt@^libbjt.gex >> vint2 Mass-weighted vertical integral f_bjt@^libbjt.gex >> fish Poisson solver f_fish@^fish.gex >> fish_psi Compute streamfunction f_psichi@^fish.gex >> fish_chi Compute velocity potential f_psichi@^fish.gex >> fish_vor Compute vorticity f_psichi@^fish.gex >> fish_div Compute divergence f_psichi@^fish.gex >> hello Hello, World! sample function f_hello@^libhello.gex >> ipc_save Save expression to stream f_Save@^libipc.gex >> ipc_load Load variable from file f_Load@^libipc.gex >> smth2d Shuman smoother/de-smoother f_smth2d@^libmf.gex >> uv2trw Find radial/tangential velocity f_uv2trw@^libmf.gex >> re General interpolator ffre@^re.gex >> sh_filt Spherical harmonic filter f_shfilt@^shfilt.gex >> sh_power Spherical harmonic spectra f_shpowr@^shfilt.gex >> ---------- ----------------------------------- -------------------------- >> >> >> Building it >> ------------ >> >> To build it, get pre-compiled (or build it yourself) supplibs-2.1.0 from >> >> https://sourceforge.net/project/showfiles.php?group_id=161773&package_id=241681&release_id=661716 >> >> >> >> % gacvs co -P Grads >> % make >> % make check >> % bundle/bundle_create.sh >> >> Then >> >> % cd opengrads/ >> >> and take a look ar README and INSTALL. Try this: >> >> % cd opengrads/Contents >> % ./merra >> >> To make a distribution tarball with the bundle >> >> % make bundle-dist >> >> Let me know if you have problems. >> >> Arlindo >> >> -- >> Arlindo da Silva >> da...@al... >> <colorized.tiff> > -- Arlindo da Silva da...@al... |