List routines by category:
Atmospheric Sciences |
Benchmarking |
Color |
Date/Time |
Doc |
File & I/O |
BPCH Format |
Scientific Data Formats |
GAMAP Examples |
GAMAP Internals |
GAMAP Utilities |
GAMAP Data Manipulation |
GAMAP Models &
Grids |
GAMAP Plotting |
General |
Graphics |
Math & Units |
Plotting |
Regridding |
Strings |
Structures |
Time Series
List routines by alphabetical order:
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z
NAME: GAMAP PURPOSE: Menu-driven user interface for creating plots with the GAMAP package subroutines. The actual data retrieval and plotting is done with ctm_plot.pro. This routine mainly collects all user requests and passes them on to CTM_PLOT. CATEGORY: GAMAP Utilities, GAMAP Plotting CALLING SEQUENCE: GAMAP, [ DiagN [, Keywords ] ] INPUTS: DIAGN -> A diagnostic number or category to restrict the record selection (default is: use all). KEYWORD PARAMETERS: General keywords: ----------------------------------------------------------------- FILENAME -> CTM output file name. Default is to display a pickfile dialog and let the user select. You can have wildcards ('*', '?') in your filename which restricts the file selection. /NOFILE -> Don't query for filename but display all records that have already been loaded. This can save you a couple of mouse clicks when you want to create several plots with data from one file, and it also useful when you want to plot data from 'external' files that were converted with ctm_make_datainfo. If a filename is given or no data were loaded, the file selection dialog will appear anyhow. /RESETDEFAULTS -> If set, will reset all GAMAP values to their defaults. /HELP -> Displays a help page. RESULT -> Returns a structure with the data subset as plotted and the respective X and Y coordinates. Returns only one data record though. TOPTITLE -> Add a specific title centered on top of each page of output. Keywords to restrict the number of records displayed for selection: ----------------------------------------------------------------- TRACER -> A tracer number to restrict record selection TAU0 -> Time value (at beginning of record) DATE -> 6 digit date (e.g. 940101) at the beginning of the output record (this gets translated into a TAU0 value via the function nymd2tau). You can specify more than one date at a time using a vector (e.g. [940101, 940301]). For the GISS model(s), you also have to specify /GISS_Date in order to get correct tau values. The time is assumed to be 00 GMT. For other times use the TAU0 keyword as TAU0=nymd2tau(dates,times). /GISS_Date -> set this flag if you are using the DATE keyword with GISS model output. Keywords defining output options (these override defaults in gamap.defaults) ----------------------------------------------------------------- /PS -> If set, will directly send output to the 'idl.ps' file. If not set, GAMAP will prompt the user whether to create the 'idl.ps' file. OUTFILENAME -> Name of file to send PostScript output to. /NOTIMESTAMP -> Do not include a user ID and time stamp on the postscript plot. Unnecessary if the TIMESTAMP value in gamap.defaults is set to 0. XSIZE, YSIZE, XOFFSET, YOFFSET -> GAMAP will pass these keywords to routine OPEN_DEVICE, for setting the size and margins of PostScript output. /DO_BMP -> If set, GAMAP will save animation frames as BMP files. If not set, GAMAP will prompt the user whether to save animation frames to BMP files. DO_BMP overrides the default setting in "gamap.defaults". BMPFILENAME -> Name of BMP file to save animation frames to. If the token %N% is used in BMPFILENAME, then GAMAP will replace %N% with the actual frame number. If BMPFILENAME is not set, or if DO_BMP is set to *QUERY in "gamap.defaults", GAMAP will prompt user to supply BMPFILENAME. /DO_GIF -> If set, GAMAP will save animation frames as GIF files. If not set, GAMAP will prompt the user whether to save animation frames to GIF files. DO_GIF overrides the default setting in "gamap.defaults". GIFFILENAME -> Name of GIF file to save animation frames to. If the token %N% is used in GIFFILENAME, then GAMAP will replace %N% with the actual frame number. If GIFFILENAME is not set, or if DO_GIF is set to *QUERY in "gamap.defaults", GAMAP will prompt user to supply GIFFILENAME. /DO_JPEG -> If set, GAMAP will save animation frames as BMP files. If not set, GAMAP will prompt the user whether to save animation frames to JPEG files. DO_JPEG overrides the default setting in "gamap.defaults". JPEGFILENAME -> Name of JPEG file to save animation frames to. If the token %N% is used in JPEGFILENAME, then GAMAP will replace %N% with the actual frame number. If JPEGFILENAME is not set, or if DO_JPEG is set to *QUERY in "gamap.defaults", GAMAP will prompt user to supply JPEGFILENAME. /DO_PNG -> If set, GAMAP will save animation frames as PNG files. If not set, GAMAP will prompt the user whether to save animation frames to PNG files. DO_PNG overrides the default setting in "gamap.defaults". PNGFILENAME -> Name of PNG file to save animation frames to. If the token %N% is used in PNGFILENAME, then GAMAP will replace %N% with the actual frame number. If PNGFILENAME is not set, or if DO_PNG is set to *QUERY in "gamap.defaults", GAMAP will prompt user to supply PNGFILENAME. /DO_TIFF -> If set, GAMAP will save animation frames as TIFF files. If not set, GAMAP will prompt the user whether to save animation frames to TIFF files. DO_TIFF overrides the default setting in "gamap.defaults". TIFFFILENAME -> Name of TIFF file to save animation frames to. If the token %N% is used in TIFFFILENAME, then GAMAP will replace %N% with the actual frame number. If TIFFFILENAME is not set, or if DO_PNG is set to *QUERY in "gamap.defaults", GAMAP will prompt user to supply TIFFFILENAME. /POLAR -> Set this keyword for polar pots. This forces latitude ranges to extend to one pole and longitude ranges to span the globe. Polar plots only work for global (at least longitudinally) data sets. Currently, polar plots are supported only for contour plots. _EXTRA=e -> Picks up extra keywords for CTM_PLOT, etc... OUTPUTS: SUBROUTINES: Internal subroutines: ------------------------------------------------------ GAMAP_CheckDataBlockConsistency (function) GAMAP_FindNearestCenters (function) GAMAP_GetDataBlockRanges (function) GAMAP_GetDefaultRanges GAMAP_AutoYRange (function) GAMAP_PrintDimInfo GAMAP_QueryAnimationOptions GAMAP_QueryAverageOrTotal GAMAP_QueryPostScriptOptions GAMAP_SelectDataBlocks (function) GAMAP_SelectPlotType GAMAP_QueryIsoPleth GAMAP_StoreGridInfo GAMAP_UserRangeEntry (function) GAMAP_GetFrameFileName (function) Also uses external subroutines: ------------------------------------------------------ CHOICE (function) CLOSE_DEVICE CTM_PLOT OPEN_DEVICE STRREPL (function) STRWHERE (function) DEFAULT_RANGE (function) CHKSTRU (function) REPLACE_TOKEN (function) CTM_GRID (function) MAKE_SELECTION(function) TVREAD (function) REQUIREMENTS: None NOTES: (1) GAMAP can read ASCII punch files with GEOS or GISS, model II diagnostics, binary punch files (as defined in Jan 1999), and GEOS-CTM binary restart files. Binary punch files are processed much faster and allow "windowing" of output. (2) For pixel plots, GAMAP can only plot cylindrical maps with rectangular projections. Arbitrary map projections should be possible with any type of contour plot. For polar plots, use the /POLAR keyword. Other projections have not been tested and may lead to unexpected results. (3) GAMAP forces map ranges to coincide with the grid box edges, so that the map and pixel plot will be aligned. Each "pixel" size corresponds to one full grid box. For grids with half-polar boxes, it is therefore recommended not to plot the polar latitudes, since those boxes will show up as full-size boxes and shift the rest of the plot accordingly. (4) When the user selects multiple data blocks, GAMAP will produce a multi-panel plot if !p.multi indicates more than one panel on the screen (use the MULTIPANEL procedure to turn it on). If you plot only one panel per screen, GAMAP will automatically start XInterAnimate to present your own movie to you. Be aware that XInterAnimate is limited by your system resources. With default window sizes, we can usually display at least 30 frames. ADDENDUM: 3-D isopleth maps will not be animated. (bmy, 1/22/01) (5) Animation frames can also be written to GIF or MPEG files. Defaults can be set in "gamap.defaults", or specified via the command line. You can also save individual GAMAP plots as GIF files. If you want to animate them later (e.g. using ULead's GIF-Animator), make sure to specify the RANGE keyword to get identical color schemes (or use contours). (6) The GAMAP authors wish to point out that it is still relatively expensive to produce color plots on the printer. We encourage you to try out contour plots and make a test print on a black and white printer before you make a color print. (7) The 3-D isopleth maps do not quite work with MULTIPANEL, since they are produced with screen capture in the Z-Buffer. Hence Hence, the X window device has to be re-initialized each time, which negates the MULTIPANEL utility. PostScript plots of 3-D isopleth maps will print one plot per page. We can live with this for the time being. Isopleth maps can also be written to GIF files. (8) Now uses D. Fanning's TVREAD function to perform better device-independent screen capture. (cf. www.dfanning.com) EXAMPLES: (1) GAMAP ; operates fully interactively MULTIPANEL,nplots=6 ; turn on multi-panel environment GAMAP ; same as above, but produce multi-panel plots with ; 6 plots per page (2) GAMAP, 'IJ-AVG-$', tra=4 ; Will create a CO (tracer=4) plot for the ND45 diagnostic. ; GAMAP will display dialog pickfile box and will scan the ; file for all records with ND45 and tracer 4. Those will be ; displayed and the user can then select a record to be plotted. (3) GAMAP, [ 'IJ-AVG-$', 'BIOBSRCE' ], tra=[2,4], $ date=[19940601, 19940801], $ FileName='~bmy/terra/CTM4/ctm.pch',/ps ; In this example the file is fully specified, hence no file ; selection dialog will be displayed. GAMAP scans the file ; for all records of 'IJ-AVG-$' and 'BIOBSRCE' and tracers ; 2 (OX) and 4 (NOX) and it seelcts only those records that ; begin on the first of JUNE or AUGUST 1994. Because the ps ; flag is set, the output will be directed to the postscript ; file 'idl.ps' without first being displayed on the screen. MODIFICATION HISTORY: mgs, 12 Nov 1998: VERSION 1.00 bmy, 16 Nov 1998: - added defaults for LAT, LEV, LON, PTYPE - now prompts for PS - now prompts user for /PS output bmy, 17 Nov 1998: - now call DEFAULT_RANGE to ensure that that LAT, LON, LEVEL have two elements, even if there is only one unique value. - now uses N_UNIQ.PRO to test for the number of unique elements in LON, LAT, and LEVEL. mgs, 17 Nov 1998: - finishing touches for first release. - added NOFILE keyword - added plot type b/w contours mgs, 18 Nov 1998: - added timestamp as default when closing postscript files bmy, 08 Jan 1999: - Will also prompt for totaling (if averaging is not selected) bmy, 13 Jan 1999: - now prompt user for OUTFILENAME bmy, 15 Jan 1999: VERSION 1.02 - add support for 3-D data slices - clean up user interface so that the user menu of plotting options is only invoked when plotting a 2-D map. bmy, 19 Jan 1999: - added binary flag masking - added defaults for averaging and selection - improved echoback of information to user bmy, 20 Jan 1999: - prompts user again if data block selection or averaging selection is out of range - fixed bug: now default data block selection is saved. - Reset PS to 0 and OUTFILENAME to '' if we are plotting a 0-D or 3-D data block - updated comments mgs, 21 Jan 1999: - dimensional information now in subroutine - improved binary masking - added several Quit options - Postscript options now controlled from gamap.defaults - removed NoTimeStamp keyword (now set in gamap.defaults) bmy, 12 Feb 1999: VERSION 1.03 - now works with data blocks that are sub-regions of the globe - added functions GAMAP_GetDataBlockRanges GAMAP_SelectDataBlock, and GAMAP_QueryAverageOrTotal - updated comments bmy, 17 Feb 1999: VERSION 1.20 - Replace DATAINFO.OFFSET by DATAINFO.FIRST, which contains the I, J, L indices of the first grid box - Animation facility added - added functions GAMAP_GetModelInfo, GAMAP_CheckDataBlockConsistency, GAMAP_SelectPlotType, and GAMAP_QueryPostScriptOptions. - Also renamed function GAMAP_SelectDataBlock to GAMAP_SelectDataBlocks, since one can now select multiple data blocks bmy, 18 Feb 1999: - added /RESETDEFAULTS keyword - removed /ANIMATE keyword bmy, 19 Feb 1999: - added NOAUTOYRANGE keyword - added function GAMAP_AutoYRange - added GIFFILENAME keyword - added GIF_SAV to common block SAVEVALUES - call REPLACE_TOKEN to replace token text in DEFAULTGIFFILENAME bmy, 22 Feb 1999: - added more animation options - added DO_GIF, DO_MPEG, DO_ANIMATE, and MPEGFILENAME keywords - added GAMAP_QueryAnimationOptions routine bmy, 23 Feb 1999: - small bug fixes bmy, 04 Mar 1999: - added internal routines GAMAP_FindNearestEdges and GAMAP_GetDefaultRanges - now force lat/lon ranges to coincide with grid box edges - warn user if lat range contains half-polar boxes, since TVIMAGE will treat them as whole boxes and the map overlay will be inaccurate! bmy, 05 Mar 1999: - Clean up FILEINFO/DATAINFO matching process - renamed/reorganized internal functions\ bmy, 20 Mar 1999: - bug fix for default ranges (may need more fixing later on) mgs, 22 Mar 1999: - added ALREADY_PS flag for multi-panel use - animation now only if !p.multi does not have more than 1 panel to display mgs, 23 Mar 1999: - improved comments and examples - removed unnecessary function MatchFileInfo... (easier with make_selection) - changed all "string booleans" to booleans - Do_Animation now an entirely local variable mgs, 25 Mar 1999: - few minor bug fixes - improved handling of default ranges - detect out of range in record selection - now allows for 2D field plots bmy, 17 May 1999: - now resolve DEFAULT_RANGE explicitly and call DEFRANGE_STR2NUM separately - few minor fixes in GAMAP_UserRangeEntry for data blocks that straddle the date line. mgs, 19 May 1999: - some more cleaning - implemented SAVE option after data record selection - user selection for longitudes greatly improved - some adjustments in FindNearestEdges, notably for range 0..360. Unfortunately, the 0 meridian gridline will be omitted in such plots. If we wanted to include it we would need to carry an extra GLOBAL flag because lower and upper edges (grid box indices) are identical. mgs, 20 May 1999: - added option to save record seelction to file. mgs, 24 May 1999: - yet more work had to be done to make lon/lat selection as user would expect it to work. - renamed FindNearestEdges to ..Centers mgs, 25 May 1999: - still more fiddling. Yuck! RELEASE OF GAMAP VERSION 1.40 bmy, 26 May 1999: - Added polar plot capabilities - fixed reset of plot ranges when latitude is +-90 mgs, 27 May 1999: - already_ps flag now also prevents user query. - default lat range for global fields now back to -88..88 only for "reset" conditions. Otherwise -90..90 is recognized and remembered. mgs, 28 May 1999: - added RESULT keyword. - added TOPTITLE keyword. bmy, 28 May 1999: - restrict plot type menu for polar plots bmy & mgs, 02 Jun 1999: - add /NOERASE to MULTIPANEL call when testing for last plot on page - updated some comments mgs, 30 Jun 1999: - make sure to return only one lat/lon box if user enters single value (even on edges). bmy, 07 Jul 1999: - small bug fixes bmy, 15 Sep 1999: GAMAP VERSION 1.43 - changes for 23L GISS-II-PRIME model - minor bug fixes bmy, 25 Oct 1999: GAMAP VERSION 1.44 - added /MULTIPLE keyword -- option to write to a GIF file w/ multiple frames bmy, 23 Nov 1999: - /SMALLCHEM now works correctly! bmy, 26 Apr 2000: GAMAP VERSION 1.45 - now make sure tracer numbers are mod 100L when saving data blocks to disk bmy, 19 Jun 2000: - now create NS string array by concatenating smaller arrays of < 1024 elements bmy, 20 Jun 2000: - bug fix -- set NS[0] blank for string output bmy, 03 Oct 2000: GAMAP VERSION 1.46 bmy, 22 Jan 2001: GAMAP VERSION 1.47 - removed obsolete code - now produce a 3-D isopleth map instead of calling the volume slicer routine - added ISOPLETH keyword - added internal subroutine GAMAP_QueryIsopleth - allow PostScript output for 3-D maps, and suppress animation for 3-D maps. bmy, 13 Mar 2001: - remove a couple more instances of the obsolete STR_SEP routine. Replaced with STRSPLIT( /EXTRACT ). bmy, 28 Jun 2001: GAMAP VERSION 1.48 - bug fix in GAMAP_StoreDataInfo: for GENERIC grids with NLAYERS=0, be sure to call CTM_GRID with the /NO_VERTICAL flag. bmy, 29 Aug 2001: - added XSIZE, YSIZE, XOFFSET, YOFFSET keywords to pass to OPEN_DEVICE mje & bmy, 17 Dec 2001: GAMAP VERSION 1.49 - add _EXTRA=e in call to CTM_WRITEBPCH, so that we can pass the /APPEND keyword bmy, 17 Jan 2002: GAMAP VERSION 1.50 - now call STRBREAK wrapper routine from the TOOLS subdirectory for backwards compatiblity for string-splitting - use FORWARD_FUNCTION to declare STRBREAK bmy, 24 Jan 2002: - deleted obsolete code bmy, 06 Dec 2002: GAMAP VERSION 1.52 - removed /DO_MPEG and MPEGFILENAME keywords - now use D. Fanning's TVREAD for better device-independent screen capture - removed /MULTIPLE keyword for GIF output - added /DO_PNG, /DO_BMP, /DO_JPEG, /DO_TIFF keywords - added internal function GAMAP_GetFrameFileName bmy, 13 Nov 2003: GAMAP VERSION 2.01 - comment out XINTERANIMATE options bmy, 27 Aug 2004: GAMAP VERSION 2.03 - now call CTM_PLOT_TIMESERIES to plot data from bpch files containing GEOS-CHEM station timeseries output (e.g. ND48 diagnostic) bmy, 27 Oct 2004: - now pass /QUIET keyword to GAMAP_AUTOYRANGE, CTM_PLOT_TIMESERIES, and CTM_PLOT - hardwire QUIET=1 in to suppress extra printing bmy, 28 Jun 2005: GAMAP VERSION 2.04 - Strip white spaces in FILENAME, if present bmy & phs, 13 Jul 2007: GAMAP VERSION 2.10 bmy & phs, 20 Nov 2007: GAMAP VERSION 2.11 - If any 4D data blocks are encountered, then only use the first 3 dimensions phs, 22 Sep 2009: GAMAP VERSION 2.13 - Added /NoDialog to all call to TVRead bmy, 26 Feb 2010: GAMAP VERSION 2.14 - Now allow polar maps to use pixel plots bmy, 11 Feb 2011: GAMAP VERSION 2.15 - Updated welcome screen
(See /n/home09/ryantosca/IDL/gamap2/gamap_util/gamap.pro)
NAME: GAMAP2_HTML PURPOSE: Wrapper routine for IDL2HTML. Is used to call IDL2HTML repeatedly in order to create HTML documentation for each of the source code files in the GAMAP installation. The user may sort routines by alphabetical order or by category. CATEGORY: Documentation CALLING SEQUENCE: GAMAP2_HTML [, Keywords ] INPUTS: None KEYWORD PARAMETERS: OUTDIR -> Specifies the directory in which HTML documenation will be created. Passes this to IDL2HTML. /ALL_ROUTINES -> Select this option to create an HTML file with documentation information about all routines in the GAMAP directory. The output file name will be "gamap2_html.pro". /BY_ALPHABET -> Select this option to create HTML documentation files for GAMAP routines by alphabetical order. A file will be created for each letter of the alphabet. /BY_CATEGORY -> Select this option to create HTML documentation files for GAMAP routines according to category (as specified by the "CATEGORY" tag of the IDL doc header). A files will be created for each individual category. NOTE: GAMAP routines may be cross-linked across more than one category. OUTPUTS: SUBROUTINES: External Routines Required: ============================ IDL2HTML PROGRAM_DIR (function) REQUIREMENTS: None NOTES: (1) See also the documentation to IDL2HTML and the IDL manual for routine MK_HTML_HELP. (2) One of /ALL_ROUTINES, /BY_ALPHABET, or /BY_CATEGORY must be selected. EXAMPLES: (1) GAMAP2_HTML, /ALL_ROUTINES, OUTDIR='manual/html' ; Creates HTML documentation from the std headers to ; each of the IDL source code programs in the GAMAP ; installation. Writes output to the manual/html ; directory. The output file name is "gamap2.html", ; which directory. (2) GAMAP2_HTML, /BY_ALPHABET, OUTDIR="manual/html" ; Creates HTML documentation from the std headers to ; each of the IDL source code programs in the GAMAP ; installation. Will search through the IDL doc ; headers and create a new HTML file for each ; letter of the alphabet. (3) GAMAP2_HTML, /BY_CATEGORY, OUTDIR='manual/html' ; Creates HTML documentation from the std headers to ; each of the IDL source code programs in the GAMAP ; installation. Will search through the IDL doc ; headers and create a new HTML file for each ; category. MODIFICATION HISTORY: bmy & phs, 23 Jul 2007: GAMAP VERSION 2.10 bmy, 20 Nov 2007: GAMAP VERSION 2.11 - Added new category for timeseries routines bmy, 06 Aug 2010: GAMAP VERSION 2.14 - Now check to see if OUTDIR exists
(See /n/home09/ryantosca/IDL/gamap2/doc/gamap2_html.pro)
NAME: GAMAP2_MANUAL_CREATE PURPOSE: This routine creates the HTML documentation pages for each of the GAMAP routines. This is a convenience wrapper routine which calls both GAMAP2_HTML and FIX_MANUAL_HTML. CATEGORY: Documentation CALLING SEQUENCE: GAMAP2_MANUAL_CREATE INPUTS: None KEYWORD PARAMETERS: None OUTPUTS: None SUBROUTINES: External Routines Required: ============================ GAMAP2_HTML FIX_MANUAL_HTML REQUIREMENTS: None NOTES: Will save output to the ../manual/html/* directories. EXAMPLES: GAMAP2_MANUAL_CREATE ; Creates HTML documentation from the std headers to ; each of the IDL source code programs in the GAMAP ; installation. Writes output to the manual/html ; directory. MODIFICATION HISTORY: bmy, 01 Jul 2008: GAMAP VERSION 2.12
(See /n/home09/ryantosca/IDL/gamap2/doc/gamap2_manual_create.pro)
NAME: GAMAP2_REVISIONS PURPOSE: Wrapper routine for REVISIONS, used to create a "REVISIONS" file for each code directory in the GAMAP installation. CATEGORY: Documentation CALLING SEQUENCE: GAMAP2_REVISIONS INPUTS: None KEYWORD PARAMETERS: None OUTPUTS: None SUBROUTINES: External Subroutines Required: =============================== PROGRAM_DIR (function) REVISIONS REQUIREMENTS: None NOTES: The REVISIONS routine requires the tag "MODIFICATION HISTORY" to be present. Files without this tag (e.g. data files or input files) will not be included in the REVISIONS output. EXAMPLE: GAMAP2_REVISIONS ; Search through all of the directories in the GAMAP ; installation and create a REVISIONS file containing ; the modification histories of each *.pro file. MODIFICATION HISTORY: bmy, 17 Jul 2007: VERSION 1.00
(See /n/home09/ryantosca/IDL/gamap2/doc/gamap2_revisions.pro)
NAME: GAMAP_CMN PURPOSE: Contains global common block for Global Atmospheric Model output Analysis Package include file (include with @gamap_cmn) CATEGORY: GAMAP Internals CALLING SEQUENCE: @gamap_cmn INPUTS: None KEYWORD PARAMETERS: None OUTPUTS: None SUBROUTINES: None REQUIREMENTS: Referenced by gamap_init.pro and gamap.pro NOTES: None MODIFICATION HISTORY: mgs, 14 Aug 1998 INITIAL VERSION mgs, 21 Jan 1999: - added postscript variables bmy, 22 Feb 1999: - added options for animation (GIF, MPEG filenames) bmy, 10 Dec 2002: GAMAP VERSION 1.52 - removed DO_MPEG and DEFAULTMPEGFILENAME - added DO_BMP and DEFAULTBMPFILENAME - added DO_JPEG and DEFAULTJPEGFILENAME - added DO_PNG and DEFAULTPNGFILENAME - added DO_TIFF and DEFAULTTIFFFILENAME bmy, 13 Nov 2003: GAMAP VERSION 2.01 - re-added DO_MPEG and DEFAULTMPEGFILENAME - removed CREATEANIMATION, this was only ever used for XINTERANIMATE (obsolete) bmy & phs, 13 Jul 2007: GAMAP VERSION 2.10
(See /n/home09/ryantosca/IDL/gamap2/internals/gamap_cmn.pro)
NAME: GAMAP_COLORS PURPOSE: Concatenates several different color tables (including IDL standard color tables and the ColorBrewer color tables) into single file for for use with GAMAP. CATEGORY: Color CALLING SEQUENCE: GAMAP_COLORS INPUTS: OUTFILENAME -> Name of the color table file to modify. Default is "gamap_colors.tbl". GAMAP_COLORS will locate this file with FILE_WHICH. KEYWORD PARAMETERS: None OUTPUTS: None SUBROUTINES: External Subroutines Required: ============================== MYCT REQUIREMENTS: None NOTES: IDL's MODIFYCT function may require that the file to be modified already be on disk. EXAMPLE: GAMAP_COLORS, 'new_gamap_colors.tbl' ; Will modify the colortable file ; 'new_gamap_colors.tbl'. MODIFICATION HISTORY: bmy, 18 Apr 2008: VERSION 1.00
(See /n/home09/ryantosca/IDL/gamap2/color/gamap_colors.pro)
NAME: GAMAP_INIT PURPOSE: Initialize global common block for Global Atmospheric Model (output) Analysis Package (GAMAP). This routine is called automatically when gamap_cmn.pro is included in a file ( @gamap_cmn.pro ), but it executes only once. User preferences are read from the file gamap.defaults in the current directory or the directory where gamap_init.pro resides. CATEGORY: GAMAP Internals CALLING SEQUENCE: GAMAP_INIT INPUTS: none KEYWORD PARAMETERS: DEBUG -> set a (new) debug level (0 or 1). OUTPUTS: none SUBROUTINES: Uses FILE_EXIST, EXTRACT_PATH, and OPEN_FILE REQUIREMENTS: None NOTES: If you change the definition of the common block in gamap_cmn.pro, make sure to accomodate these changes in GAMAP_INIT. EXAMPLE: GAMAP_INIT MODIFICATION HISTORY: mgs, 14 Aug 1998: VERSION 1.00 mgs, 21 Sep 1998: - changed gamap.cmn to gamap_cmn.pro mgs, 05 Oct 1998: - type assignment fix to DEBUG when read mgs, 08 Oct 1998: - now runs through after CTM_CLEANUP and does not delete global pointers if valid. - added DEBUG keyword mgs, 21 Jan 1999: - added postscript options bmy, 19 Feb 1999: - added GIF_FILENAME bmy, 22 Feb 1999: VERSION 1.01 - added more animation options - changed POSTSCRIPT to DO_POSTSCRIPT - default path now amalthea mgs, 23 Mar 1999: - slight change in defaults bmy, 19 Jan 2000: GAMAP VERSION 1.44 - replaced the deprecated STR_SEP function with STRSPLIT for IDL 5.3+ - Now STRTRIM each token so that the case statement will find matches - cosmetic changes, updated comments bmy, 13 Mar 2001: GAMAP VERSION 1.47 - now supports MacOS operating system bmy, 07 Jun 2001: - removed obsolete code prior to 3/13/01 bmy, 17 Jan 2002: GAMAP VERSION 1.50 - now call STRBREAK wrapper routine from the TOOLS subdirectory for backwards compatiblity for string-splitting; - use FORWARD_FUNCTION to declare STRBREAK bmy, 10 Dec 2002: GAMAP VERSION 1.52 - added options for BMP, JPEG, PNG, TIFF output - added internal function TRIMTOK bmy, 13 Nov 2003: GAMAP VERSION 2.01 - re-added option for MPEG animation - removed CREATEANIMATION, this was only ever used for XINTERANIMATE (obsolete) bmy & phs, 13 Jul 2007: GAMAP VERSION 2.10 - Now use the IDL FILE_WHICH routine to locate the gamap.defaults file
(See /n/home09/ryantosca/IDL/gamap2/internals/gamap_init.pro)
NAME: GC_COMBINE_ND48 PURPOSE: Combine timeseries data from the Geos-CHEM ND48 diagnostics contained in one or more binary punch files. The goal is to combine, for one station, all the data blocks (there is one per time step) into one single 4-D data block (we want the time to be the 4th dimension). This is basically to take advantage of support for 4D dataset in GAMAP v2-10. GEOS-Chem ND48 (as in v7-04-12) outputs one file for all stations and all time steps. GC_COMBINE_ND48 will write one file but each timeseries will be in one data block instead of as many as the number of timesteps. This will make reading the timeseries with CTM_GET_DATA a lot faster. Two basic signal processing before saving the data can be applied: moving average and/or daily maximum. LIMITATION: daily maximum will not make sense if series do not cover full days. CATEGORY: GAMAP Utilities, GAMAP Data Manipulation, Time Series CALLING SEQUENCE: GC_COMBINE_ND48 [, Keywords ] OPTIONAL INPUTS: By defaults all stations are processed. And one output file is created that contains all the stations timeseries. KEYWORD PARAMETERS: ;============ For I/O files/directory ===================== INFILE -> one or more station file(s) from ND48 diagnostic. If more than one file is processed, it is assumed that, once sorted in alphabetical order, they are in chronological order (this is automatically the case, if you insert YYYYMMDD into ND48 filenames in input.geos). INDIR -> Directory where to look for "stations" files. Can be either input or output keyword: Input: when defined, ALL files satisfying the MASK keyword in the directory will be selected. Ouput: set to a variable name that will contains the DIR of the selected files. It is ignored (both input and output roles) if INFILE is provided. If neither INFILE nor INDIR is set, then a dialog window that allows multiple files selection (keep CTRL or SHIFT key down) will pop-up. MASK -> Pattern Mask to find files in INDIR. Default is "stations*". OUTFILENAME -> Name of the file that will contain the new timeseries. Default is 'combined'+INFILE[0], in the same directory as stations file. If the full path is not included, the file is created in the working directory. The routine prevents from overwriting any input file. ;================= Data Selection ====================== STATIONNB -> Station(s) number. Can be one or more elements (up to the number of stations in ND48). Use to select a subset of the stations instead of all of them. TIME -> vector for selecting time span. The data covering [min(TIME),max(TIME)] are selected. If only one element, then the closest-in-time data is selected. If min and/or max of TIME is outside the range of available time steps, the first or last available time step is used. Note 1: this is also an output keyword. Then, if passed by reference, TIME becomes the time vector in output. See example (6). Note 2: if using DMAX or DAVG, then TIME should be long integer (YYYYMMDD), if not it should be Tau format. ;================= Signal Processing ====================== MAVG -> to apply a running average filter to the series. MAVG value will define the boxcar size and must be GE 3. Even numbers are increased by +1. The IDL SMOOTH routine is called and accept _extra keywords (NAN, EDGE_TRUNCATE, and MISSING). DMAX -> to select the daily maxima of the time series. If both MAVG and Dmax are set, the moving average is performed first and you get the daily max of the moving average. (Local time is not accounted for: days start and end at 0 UT everywhere). DAVG -> to select the daily average of the time series. If both MAVG and DAVG are set, the moving average is performed first and you get the daily average of the moving average. (Local time is not accounted for: days start and end at 0 UT everywhere). ;================= Output keywords ======================== All the following keywords will apply to only ONE station. The last one is used if none or more than one is requested. DATA -> set to a variable name that will hold the selected timeseries data on exit. This is a 4D array (1,1,lev,time) even though only one station is selected. LON -> set to a variable name that will hold the longitude of the data set on exit. LAT -> set to a variable name that will hold the latitude of the data set on exit. LEV -> set to a variable name that will hold the vector of levels for the data set on exit. TIME -> set to a variable name that will hold the time vector for the station on exit. Given as Tau values, unless DMAX or DAVG is set, then as YYYYMMDD. LOCALTIME -> if set, the TIME vector is in local time instead of UT. Has no effect if /DMAX or /DAVG. ;================= Others ======================== NOSAVE -> set to not save output into a BPCH file. Useful if you just want to check results with output keywords. VERBOSE -> Set to print informational message about the time series. particularly useful to double check area/location selected with subset keywords. _EXTRA=e -> Picks up extra keywords for SMOOTH and DIALOG_PICKFILE. OUTPUTS: See output keywords above. SUBROUTINES: REQUIREMENTS: References many routines from GAMAP package. Requires GAMAP v2.10 for handling 4D dataset. NOTES: If memory issues show up, try to save one timeseries (i.e., one station at a time). EXAMPLES: ;; (1) Read multiple timeseries files selected w/ a pop-up window (use SHIFT key for muliple selections). Save with the default filename in the default directory: GC_COMBINE_ND48 ;; (2) Like example (1), but saves only the daily max of the ;; 9-hours average timeseries: GC_COMBINE_ND48, /dmax, mavg=8 ;; (3) read ALL stations files from directory '~/path/' ;; without a pop-up window (no interactivity, good for batch ;; processing). Default MASk and outfile name are used. GC_COMBINE_ND48, indir='~/path/' ;; (4) Like example (3) but select only the first available ;; station, and save the result in a specified file: GC_COMBINE_ND48, Station=1, indir='~/path/', outfile='~/path/series1.bpch' ;; (5) read files from directory '~/path/', and select 3rd station. ;; Do not save combined timeseries. Get outputs in variables ;; data, lon, lat and time. GC_COMBINE_ND48, indir='~/path/', station=3, data=data, lon=lon, lat=lat, time=time Help, reform(data) PLOT, time, data[0,0,0,*], title='Lon= strtrim(lon,2)+'- Lat='+strtrim(lat,2) ;; (6) Like (5), but limit the time to 23rd-28th of July ;; 2001. Not the use of two commands to get the output ;; time vector. time = [nymd2tau(20010723L,20010728l)] GC_COMBINE_ND48, indir='~/path/', station=3, data=data, lon=lon, lat=lat, time=time HELP, time MODIFICATION HISTORY: phs, 31 Jul 2007: GAMAP VERSION 2.10 - Initial version phs, 11 Oct 2007: - few bugs fix - added output keywords phs, 15 Oct 2007: - added LOCALTIME keyword phs, 18 Oct 2007: - do not save if output file is one of the input file. phs, 26 Oct 2007: - TIME can be use to select the time span of the series. Added DAVG keyword. phs, 30 Oct 2007: - couple of minor fixes. phs, 11 Aug 2009: - major fix: bug fix when same tracer in several stations bmy, 12 Mar 2009: GAMAP VERSION 2.14 - Typo at line 429 fixed
(See /n/home09/ryantosca/IDL/gamap2/timeseries/gc_combine_nd48.pro)
NAME: GC_COMBINE_ND49 PURPOSE: Combine timeseries data from several bpch files into 4D data. Typically used with Geos-CHEM ND49 timeseries output and met fields in bpch files (a3, a6, i6). For met fields, see example (9) and (10). Each ND49 and Met Fields file has data for one day. But, files with time series that do no cover a day per file, can also be processed. See example (11), but keep in mind that the daily max or average options are then **** MEANINGLESS ****, and should not be used. WHAT IS DONE: (1) We combine all the data blocks for one tracer (there is one per time step) into one single 4-D data block (with time in 4th dimension). This takes advantage of support for 4D dataset introduced in GAMAP v2-10. (2) The combined series can be saved into a binary punch file. You end up with one file per tracer that covers many days of output, instead of one file per day for all tracers. The space saving can be more than 60%. (3) A subarea (even a single location) can be extracted. But for multiple but not contiguous locations, call the routine as many time as needed. (4) Shorter timeseries can be selected/saved, by specifying Tau range, or day (as YYYYMMDD long integer) range if daily max or average is selected. (5) Two basic signal processing before saving the data can be performed: moving average and/or daily maximum/minimum/average. ## LIMITATION ## : full days considered for ND49, ie, GEOS-Chem runs should start and end at midnight (YYYYMMDD 000000 in input.geos) CATEGORY: GAMAP Utilities, GAMAP Data Manipulation, Time Series CALLING SEQUENCE: GC_COMBINE_ND49 [, TRACER ][, CATEGORY ][, Keywords ] INPUTS: TRACER -> The tracer number. Default is 1. CATEGORY -> The category name (default is "IJ-AVG-$") for which to read data. KEYWORD PARAMETERS: ;============ For I/O files/directory ===================== FILELIST -> list of files to process. Usually used as output keyword to get the list of files selected with INDIR and MASK or through a dialog window. Can be used as input. Then INDIR and MASK are ignored. INDIR -> Directory where to look for MASK files. If provided, ALL files satisfying the MASK keyword in the directory will be selected. If not provided, a dialog window that allows multiple files selection (keep SHIFT key down) will pop-up. See EXAMPLES below for tips. If set to an undefined variable name, it will hold the directory of the selected files (output keyword). NOTE: If more than one file is processed, it is assumed that, once sorted in alphabetical order, they are in chronological order (this is the case with GEOS-Chem default naming of ND49 output files: they contain YYYYMMDD). MASK -> Pattern Mask to find files in INDIR. Default is "ts*.bpch". OUTDIR -> Output directory where to save the file with the new timeseries data set will be. Default is INDIR. If the user has not write permission in INDIR, writintg is cancelled. OUTFILENAME -> Name of the file that will contain the timeseries. Default is 'combts_%TRACERNAME%.bpch', for COMB ined T ime S eries. The routine prevents from overwriting any input file. ;============ To extract subset of data =================== LON -> A one or two-elements vector specifying the longitude of one location or one area. If LON is outside the ND49 area, the program print a warning, and uses border value. LAT -> same as LON, but for Latitudes LEV -> same as LON, but for Levels. Refers to the model grid. ; - - you can also select indices into the requested 3D cube: LLEV -> A one or two-element vector specifying the min and max of available levels to be included in the file. Default is ALL available levels. Default FORTRAN indexing is used: LLEV #1 is the first level ***requested*** in ND49. See LEV above otherwise. ILON, JLAT -> same as LLEV but for Longitude and Latitude indices. Starting at 1 at the first ***requested*** grid box in ND49. TIME -> vector for selecting time span. The data covering [min(TIME),max(TIME)] are selected. If only one element, then the closest-in-time data are selected. TIME must be given as Tau (double) or YYYYMMDD (long) if /DMAX or /DAVG. If both DMAX (or DAVG) and LOCALTIME are set, TIME is ignored. ** TIP ** if you select a short time span, it may be useful to limit the number of files to process by redefining MASK or using FILELIST. That will speed up the process. ;================= Signal Processing ====================== MAVG -> to apply a running average filter to the series. MAVG value will define the boxcar size and must be GE 3. Even numbers are increased by +1. The IDL SMOOTH routine is called and accept _extra keywords (NaN, Edge_truncate, missing). DMAX -> to select the daily maxima of the time series. If both MAVG and Dmax are set, the moving average is performed first and you get the daily max of the moving average. DAVG -> to select the daily average of the time series. If both MAVG and DAVG are set, the moving average is performed first and you get the daily average of the moving average. LOCALTIME -> to get DAVG or DMAX computed over local days instead of UT days. See details below. ;================= Output keywords ======================== DATA -> set to a variable name that will hold the selected timeseries data on exit. This is a 4D array (nLon, nLat, nLevel, ntime) even if only one location is selected. OUTLON -> set to a variable name that will hold the vector of longitudes of the data set on exit. OUTLAT -> set to a variable name that will hold the vector of latitudes of the data set on exit. OUTLEV -> set to a variable name that will hold the vector of Levels of the data set on exit. OUTALT -> set to a variable name that will hold the vector of altitudes for the data set on exit. OUTTIME -> set to a variable name that will hold the time vector corresponding to the data set on exit. Format is Tau, or YYYYMMDD if /DMAX. LOCALTIME -> if set, OUTTIME becomes a Nb_OutLon X Nb_TimeStep array, with each vector OUTTIME[i,*] holding the time vector in local time instead of UT. That vector will apply to all j and k for DATA[i,j,k,*]. Specific case of... both DMAX (or DAVG) and LOCALTIME being set. The daily max (average) is obtained after shifting the timeseries, so they start at 00 LT everywhere (or the first available time step just before 00 LT). The first max (average) value is for the first complete local day of the series. The OUTTIME array is then a [numbers of complete days, 2] array that gives the local YYYYMMDD for both positive and negative longitudes. See also note about TAU0/TAU1 below. Note that the time step of the series must be small enough for the DMAX/DAVG w/r/t Local Time to be reliable. ;================= Others ======================== NOSAVE -> set to not save output into a BPCH file. Useful if you just want to check results with output keywords. VERBOSE -> Set to print informational message about the time series. Particularly useful to double check the area/location selected with subset keywords. _EXTRA=e -> Picks up extra keywords for SMOOTH and DIALOG_PICKFILE. OUTPUTS: See output keywords above. SUBROUTINES: REQUIREMENTS: References many routines from GAMAP package. Requires GAMAP v2.10 for saving 4D dataset into binary punch file. NOTES: ######## ND49 and Met Fields only. For ND48, see ######## ######## GC_COMBINE_ND48 (not as well maintained) ######## Written with batch processing in mind. It is recommended to save all ND49 outputs into one dedicated directory, and to use keywords (INDIR, OUTDIR, OUTFILE..) and save the new combined timeseries in a new directory. About TAU0 and TAU1 : in the DataInfo structure, they are set to the beginning and end of the timeseries. For daily data, we compute them by setting HH:MM:SS to 00:00:00. If LocalTime is set, UT is still used for TAU0 and TAU1, so we can use only one value. If both LocalTime and DMAX are set, tau0 and tau1 give the first and last (local) days for longitudes less than 0 (west). For East longitudes, you need to add one day to these to get the correct date. EXAMPLES: ;; In the following examples, it is assumed that tracer 1 ;; has been saved with ND49 ;; (1) Read multiple timeseries files selected w/ a pop-up window (use SHIFT key for muliple selections). Saved series at ALL available locations into default directory and filename: GC_COMBINE_ND49 exactly the same as: GC_COMBINE_ND49, 1, 'IJ-AVG-$' ;; (2) Like example (1), but saves only the daily max of the ;; 9-hours average timeseries: GC_COMBINE_ND49, 1, 'IJ-AVG-$', /dmax, mavg=8 ;; (3) Like example (1), but do not save the timeseries. Get ;; the timeseries in the variable TS in output: GC_COMBINE_ND49, 1, 'IJ-AVG-$', /nosave, data=TS ;; (4) read **ALL** MASK-files from directory '~/path/' ;; without a pop-up window (no interactivity, good for batch ;; processing): GC_COMBINE_ND49, 1, 'IJ-AVG-$', indir='~/path/', outfile='series1.dat' ;; (5) Like example (4), but with selection of ONE station: GC_COMBINE_ND49, 1, 'IJ-AVG-$', indir='~/path/', outfile='station1.bpch',$ lon=-65., lat=45., lev=1 ;; (6) Like example (5), but with shorter time series (from ;; 2001/7/20 20:00 to 2001/7/23 2:00): GC_COMBINE_ND49, 1, 'IJ-AVG-$', indir='~/path/', outfile='station1.bpch',$ lon=-65., lat=45., lev=1, $ Time=[nymd2tau(20010720l,200000l),nymd2tau(20010723l,20000l)] ;; (7) Like example (6), but select Daily Max and for few ;; days only (from 23rd to 28th of July 2001): GC_COMBINE_ND49, 1, 'IJ-AVG-$', indir='~/path/', outfile='station1.bpch',$ lon=-65., lat=45., lev=1, /DMax, Time=[20010723L,20010728L] ;; (8) read **ALL** MASK-files from a directory selected with ;; a pop-up window: GC_COMBINE_ND49, 1, 'IJ-AVG-$', indir=dialog_pickfile(/dir) ;; (9) read CLOUD FRACTION from GEOS-4 met fields. Interactive way. GC_COMBINE_ND49, nosave=1, data=ts, $ mask='/as/data/master/ctm/GEOS_4x5.d/GEOS_4_v4/1985/02/*a6*', $ 7, 'GMAO-2d', outtime=time ;; (10) read CLOUD FRACTION from GEOS-4 met fields. All data from February 1985 automatically: GC_COMBINE_ND49, nosave=1, data=ts, $ indir='/as/data/master/ctm/GEOS_4x5.d/GEOS_4_v4/1985/02/', $ mask='*a6*', $ 7, 'GMAO-2d', outtime=time ;; (11) Read 3 series of 2004 GFED2 emissions (3hr, 8-day and monthly): ; -- get data from MASK and DIRECTORY dir3hr = '/as/data/geos/GEOS_1x1/GFED2_3hr_200901/2004/' dirMon = '/as/data/geos/GEOS_1x1/GFED2_200601/2004/' dir8day = '/as/data/geos/GEOS_1x1/GFED2_8day_200712/2004/' mask3hr = 'GFED2.3hr.C_20040*.generic.1x1' maskMon = 'GFED2_C_2004*.generic.1x1' mask8day = 'GFED2_8day_C_2004*.generic.1x1' gc_combine_nd49, 99, 'GFED2-BB', /nosave, data=d3hr, $ mask=mask3hr, indir=dir3hr, outTime=tau3hr, /verb gc_combine_nd49, 99, 'GFED2-BB', /nosave, data=d8day, $ mask=mask8day, indir=dir8day, outTime=tau8day, /verb gc_combine_nd49, 99, 'GFED2-BB', /nosave, data=dMon, $ mask=maskMon, indir=dirMon, outTime=tauMon, /verb ;-- Julian Time for each data set (the half time step is added to ; get the time series centered on their period, since we plot ; histograms, with psym=10) temp = tau2yymmdd( tau3hr + 1.5 ) Jul3hr = JulDay(temp.month, temp.day, temp.year, temp.hour, temp.minute) temp = tau2yymmdd( tau8day + (4.*24.) ) Jul8day = JulDay(temp.month, temp.day, temp.year, temp.hour, temp.minute) temp = tau2yymmdd(tauMon + 15.*24.) JulMon = JulDay(temp.month, temp.day, temp.year, temp.hour, temp.minute) ; -- convert from [g C/m2/time-period] to [Tg C/time-period] GridInfo = CTM_GRID( CTM_TYPE( 'generic', res=[1., 1.] ) ) Surface = CTM_BOXSIZE( GridInfo, /cm2 ) dim = size(surface, /dimensions) d3hr = d3hr * rebin( Surface, dim[0], dim[1], 1, (size(d3hr))[4] ) d8day = d8day * rebin( Surface, dim[0], dim[1], 1, (size(d8day))[4] ) dMon = dMon * rebin( Surface, dim[0], dim[1], 1, (size(dMon))[4] ) d3hr = d3hr * 1e-9 d8day = d8day * 1e-9 dMon = dMon * 1e-9 ; -- Sum data over space, and convert to [ Tg C/s ] sum3hr = total( total( total(d3hr, 1), 1), 1) / (3. * 3600.) sum8day = total( total( total(d8day, 1), 1), 1) / (8. *24. * 3600.) ; -- Plot time series dummy = label_date( date_format=['%D', '%M'] ) plot, Jul3hr, sum3hr, /ynozero, color=!myct.black, $ title='Total GFED2 emissions in 2004 (Tg C/sec)', $ /xstyle, $ xtickformat=['label_date', 'label_date', 'label_date'], $ xtickunit=['day', 'month'], $ position=[0.1, 0.15, 0.9, 0.9], $ psym=10 oplot, Jul8day, sum8day, thick=2., color=!myct.black, psym=10 MODIFICATION HISTORY: phs, 6 Jun 2007: GAMAP VERSION 2.05 - Initial version phs, 25 Jul 2007: GAMAP VERSION 2.10 - added Moving Average and Daily Max as signal processing available before saving/passing data. - added Lon and Lat keywords to select one location or a smaller area. - added output keywords. phs, 4 Oct 2007: - Bug fix for OUTTIME keyword phs, 12 Oct 2007: - Added OUTLEV output keyword, and LEV input keyword. - INDIR can be used as output keyword. phs, 15 Oct 2007: - added LOCALTIME keyword phs, 18 Oct 2007: - do not save if output file is one of the input file. phs, 26 Oct 2007: - bug fix for LON and LAT - added TIME keyword to limit timeseries in time. phs, 28 Oct 2007: - DMAX accounts for LOCALTIME if set. - Bug fix for OutTime when /DMax. phs, 04 Apr 2008: GAMAP VERSION 2.12 - added DAVG keyword - now cleanup the /no_global pointers - added the FILELIST keyword phs, 17 Jul 2008: - Added comments phs, 15 Aug 2008: GAMAP VERSION 2.13 - Bug fix for OutTime when /DMax or /DMean and input are from at least two different months mb & phs, 02 Dec 2008: - DIM is forced to 32-bit integer (LONG) phs, 08 Jan 2009: - Now can process files that cover time periods different from one day. bmy, 14 Apr 2010: GAMAP VERSION 2.14 - Add _EXTRA=e to CTM_GET_DATA so as to pass down any flags for nested grids
(See /n/home09/ryantosca/IDL/gamap2/timeseries/gc_combine_nd49.pro)
NAME: GETDATABLOCK PURPOSE: Retrieve information stored in a DATA block somewhere within an IDL routine. The DATA block must be "hidden" as comment lines for the IDL compiler. The data will be returned as string array. CATEGORY: General CALLING SEQUENCE: GETDATABLOCK, DATA [, FILENAME=FILENAME, ,LABEL=LABEL ] INPUTS: KEYWORD PARAMETERS: FILENAME -> optional filename. Normally, the data block is read from the file that contains the current procedure LABEL -> a unique identifier for the start of the data block. Default is '/DATA/'. The end of the data block is reached at the end of file or if the block of comment lines ends. OUTPUTS: DATA -> a string array with the information contained in the data block SUBROUTINES: External Subroutines Required: ====================================== FILE_EXIST (function) ROUTINE_NAME REQUIREMENTS: None NOTES: The file with the datablock is always searched in !PATH EXAMPLE: GETDATABLOCK, SDATA ; This will retrieve a data block labeled '/DATA/' ; from the file of the current IDL routine MODIFICATION HISTORY: mgs, 22 Apr 1998: VERSION 1.00 bmy & phs, 13 Jul 2007: GAMAP VERSION 2.10 - Updated comments, cosmetic changes
(See /n/home09/ryantosca/IDL/gamap2/general/getdatablock.pro)
NAME: GETETA PURPOSE: Defines the eta levels for the various hybrid model grids. GETETA is called by function CTM_GRID. CATEGORY: GAMAP Internals CALLING SEQUENCE: RESULT = GETETA( MNAME [, NLAYERS [, Keywords ] ] ) INPUTS: MNAME -> The name of the model for which eta level information is desired ('GEOS4' or 'GEOS4_30L'). NLAYERS -> Specifies the number of eta layers for the model type. Default is 55 layers. KEYWORD PARAMETERS: PSURF -> Surface pressure in hPa. If PSURF is not specified, GETETA will use 1013.25 hPa (e.g. 1 atmosphere). /CENTERS -> Returns to the calling program an array containing the eta coordinate at grid box centers. /EDGES -> Returns to the calling program an array containing the eta coordinate at grid box edges. A -> Returns to the calling program the "A" vector of values that define the hybrid grid. A has units of [hPa]. B -> Returns to the calling program the "B" vector of values that define the hybrid grid. B is unitless. PRESSURE -> Returns the pressure [hPa] at the grid box edges (if /EDGES is set) or the pressure at the grid box centers (if /CENTERS is set). OUTPUTS: RESULT -> contains the array of eta edges (if /EDGES is set), or eta centers (if /CENTERS is set). SUBROUTINES: None REQUIREMENTS: Called by CTM_GRID.PRO NOTES: Supported models: ----------------------------------------------------------- (1 ) GCAP, 23-layer (name: "GCAP" ) (2 ) GEOS-4, 55-layer (name: "GEOS4" ) (3 ) GEOS-4 30-layer (name: "GEOS4_30L" ) (4 ) GEOS-5, 72-layer (name: "GEOS5" ) (5 ) GEOS-5 47-layer (name: "GEOS5_47L" ) (6 ) GEOS-FP 72-layer (name: "GEOSFP" ) (7 ) GEOS-FP 47-layer (name: "GEOSFP_47L" ) (8 ) MERRA, 72-layer (name: "MERRA" ) (9 ) MERRA 47-layer (name: "MERRA_47L" ) (10) MERRA2, 72-layer (name: "MERRA2" ) (11) MERRA2, 47-layer (name: "MERRA2_47L" ) (12) GISS_II_PRIME 23-layer (name: "GISS_II_PRIME") (13) MATCH 52-layer (name: "MATCH" ) Computing pressure and eta coordinates: ----------------------------------------------------------- In a vertical column, the pressure at the bottom edge of grid box (L) is given by: Pe(L) = A(L) + ( B(L) * Psurface ) and the pressure at the vertical midpoint of grid box (L) is just a simple average of the pressures at the box edges: Pc(L) = ( Pe(L) + Pe(L+1) ) * 0.5 From PEDGE and PCENTER, we can construct the unitless coordinate ETA (which is very similar to the sigma coordinate) as follows: ETAe(L) = ( Pe(L) - Ptop ) / ( Psurface - Ptop ) ETAc(L) = ( Pc(L) - Ptop ) / ( Psurface - Ptop ) For GAMAP plotting routines, we will use the ETA coordinate for hybrid models instead of the sigma coordinate. Psurface is a function of longitude and latitude. GAMAP uses a default Psurface of 1013 hPa (1 atm). However, you should always compute the pressure edges and centers from an accurate surface pressure field (i.e. from met field data files or from GEOS-Chem or other model output. EXAMPLE: EETA = GETETA( 'GEOS4' PSURF=984.0, /EDGES ); ; assigns GEOS-1 eta edges to array EETA CETA = GETETA( 'GEOS4', /CENTERS, PRESSURE=CPRESS ) ; assigns GISS-II eta centers to array CETA ; (Optional) also returns the pressure at level centers MODIFICATION HISTORY: bmy, 06 Nov 2001: GAMAP VERSION 1.49 - based on routine "getsigma.pro" bmy, 04 Nov 2003: GAMAP VERSION 2.01 - now supports "GEOS4_30L" grid - now tests for model name using STRPOS instead of just a straight match - stop w/ an error for non-hybrid grids - now supports 23-layer GISS_II_PRIME model - now supports 52-layer MATCH model bmy, 18 Jun 2004: GAMAP VERSION 2.02a - now supports GCAP 23-layer hybrid grid bmy & phs, 13 Jul 2007: GAMAP VERSION 2.10 - Updated comments bmy, 15 Oct 2009: GAMAP VERSION 2.13 - Now supports GEOS-5 grids bmy, 29 Nov 2010: GAMAP VERSION 2.15 - Now returns hybrid-grid A and B values via the A & B keywords - Now returns the pressure corresponding to ETA via the PRESSURE keyword - Renamed /CENTER to /CENTERS
(See /n/home09/ryantosca/IDL/gamap2/internals/geteta.pro)
NAME: GETMODELANDGRIDINFO PURPOSE: Given a DATAINFO structure, returns the corresponding MODELINFO and GRIDINFO structures. CATEGORY: GAMAP Utilities, GAMAP Models & Grids, Structures CALLING SEQUENCE: CTM_GETMODELANDGRIDINFO, THISDATAINFO, MODELINFO, GRIDINFO INPUTS: THISDATAINFO -> A single of DATAINFO structure which contains the following fields: ** Structure H3DSTRU, 13 tags, length=72: ILUN LONG FILEPOS LONG CATEGORY STRING TRACER INT TRACERNAME STRING TAU0 DOUBLE TAU1 DOUBLE SCALE FLOAT UNIT STRING FORMAT STRING STATUS INT DIM INT OFFSET INT DATA POINTER KEYWORD PARAMETERS: LON -> set to a variable that will hold the longitude centers of the data set. Grid Offsets of data that do not cover the globe are accounted for. LAT -> same as LON, but for Latitude centers. LEVEL -> same as LON, but holds levels indices, starting at 1. OUTPUTS: MODELINFO -> Returns to the calling program the model information structure (see "ctm_type.pro") which corresponds to THISDATAINFO. GRIDINFO -> Returns to the calling program the grid information structure (see "ctm_grid.pro") which corresponds to THISDATAINFO. SUBROUTINES: External Subroutines Required: ============================== GAMAP_CMN (include file) CTM_GRID (function) REQUIREMENTS: None NOTES: None EXAMPLE: ; Read data from "myfile.bpch" ; DATAINFO is an array of structures CTM_GET_DATA, DATAINFO, FILE='myfile.bpch' ; Loop over all data blocks in the file FOR D = 0L, N_ELEMENTS( DATAINFO )-1L DO BEGIN ; Pick the DATAINFO structure for the Dth data block THISDATAINFO = DATAINFO[D].DATA ; Get MODELINFO and GRIDINFO structures for the Dth data block GETMODELANDGRIDINFO, THISDATAINFO, MODELINFO, GRIDINFO ... ENDFOR MODIFICATION HISTORY: bmy, 24 Apr 2002: GAMAP VERSION 1.50 bmy, 28 Jun 2006: GAMAP VERSION 2.05 - Bug fix for multi-level GENERIC grids bmy & phs, 13 Jul 2007: GAMAP VERSION 2.10 phs, 13 May 2008: GAMAP VERSION 2.12 - Added LON and LAT keyword to return data (not global grid) longitude and latitude centers. phs, 8 Oct 2008: GAMAP VERSION 2.13 - Added LEVEL keyword to return levels.
(See /n/home09/ryantosca/IDL/gamap2/gamap_util/getmodelandgridinfo.pro)
NAME: GETSIGMA (function) PURPOSE: Defines the sigma levels for the various grids. GETSIGMA is called by function CTM_GRID. CATEGORY: GAMAP Internals CALLING SEQUENCE: RESULT = GETSIGMA( MNAME [ NLAYERS [ , keywords ] ] ) INPUTS: MNAME -> The name of the model for which sigma level information is desired (e.g. 'geos1', 'giss_ii', etc.) NLAYERS -> Specifies the number of sigma layers for the GISS family of models. Default is 9 layers. KEYWORD PARAMETERS: CENTER -> Returns to the calling program an array containing the sigma centers. EDGES -> Returns to the calling program an array containing the sigma edges. /HELP -> Prints a help screen and returns a value of -1 to the calling program. OUTPUTS: RESULT contains the array of sigma edges (if /EDGES is set), or sigma centers (if /CENTERS is set). SUBROUTINES: REQUIREMENTS: NOTES: Supported models: ------------------------------------------------------- (1 ) GEOS-1 20-layer (6 ) GEOS-3 30-layer (2 ) GEOS-STRAT 46-layer (7 ) GISS-II 9-layer (3 ) GEOS-STRAT 26-layer (8 ) GISS-II-PRIME 9-layer (4 ) GEOS-2 70-layer (9 ) GISS-II-PRIME 23-layer (5 ) GEOS-2 47-layer (10) FSU 14-layer (6 ) GEOS-3 48-layer (11) MOPITT 7-layer You can add more grids as is necessary. EXAMPLE: ESIG = GETSIGMA( 'GEOS1' /EDGES ); ; assigns GEOS-1 sigma edges to array ESIG CSIG = GETSIGMA( 'GISS_II', 9, /CENTERS ) ; assigns GISS-II sigma centers (9 layer model) to array CSIG MODIFICATION HISTORY: mgs, 02 Mar 1998: VERSION 1.00 bmy, 19 Jun 1998: - added dummy FSU sigma edges and centers - brought comments up to date bmy, 16 Oct 1998: - added 26 layer GEOS-STRAT sigma levels mgs, 25 Nov 1998: - improved defaulting of NLayers bmy, 24 Feb 1999: - updated FSU sigma centers & edges with values provided by Amanda Staudt bmy, 27 Jul 1999: GAMAP VERSION 1.42 - added GISS-II-PRIME 23-layer sigma levels - updated comments, cosmetic changes bmy, 16 May 2000: GAMAP VERSION 1.45 - added GEOS-2 grids (47 and 70 layers) bmy, 19 Jun 2000: - added GEOS-2 36 pressure-layer grid bmy, 26 Jul 2000: GAMAP VERSION 1.46 - added GEOS-3 grid (48 layers) bmy, 26 Jul 2001: GAMAP VERSION 1.48 - added GEOS-3 grid (30 layers, regridded) bmy, 18 Dec 2003: GAMAP VERSION 2.01 - Now recognizes GEOS3_30L grid name - Now sets 30 layers as default for GEOS3_30L - Removed HELP keyword, you can use usage.pro bmy & phs, 13 Jul 2007: GAMAP VERSION 2.10
(See /n/home09/ryantosca/IDL/gamap2/internals/getsigma.pro)
NAME: GET_CHARSIZE_NORM PURPOSE: Returns the size in normal coordinates of an average character. The function accounts for !P.MULTI, !P.CHARSIZE, and the charsize scaling you pass to a plotting routine with the CHARSIZE keyword. CATEGORY: Plotting, Strings CALLING SEQUENCE: RESULT = GET_CHARSIZE_NORM( CHARSIZE [, Keywords ] ) INPUTS: CHARSIZE -> A N-elements vector that gives the character size, in character unit: 1.0 is normal size, 2.0 is double size, etc. Default is 1.0. KEYWORD PARAMETERS: /DEVICE -> Set this switch to compute the average character size in device units (which is usually pixel) instead of the default normal coordinates. OUTPUTS: A N-by-2 array that gives average character size in normal coordinates: RESULT[*,0] are along the X direction, RESULT[*,1] are along the Y direction. SUBROUTINES: None REQUIREMENTS: None NOTES: None EXAMPLES: PRINT, GET_CHARSIZE_NORM 0.00878049 0.0168750 PRINT, GET_CHARSIZE_NORM( /DEVICE ) 7.20000 10.8000 MULTIPANEL, 6 PRINT, GET_CHARSIZE_NORM( [1, 2, 3.5 ], /DEVICE ) 3.60000 7.20000 12.6000 ; => X sizes in pixel 5.40000 10.8000 18.9000 ; => Y sizes in pixel MODIFICATION HISTORY: phs, 3 Dec 2007: VERSION 1.00
(See /n/home09/ryantosca/IDL/gamap2/plotting/get_charsize_norm.pro)
NAME: GET_CONC_RANGE PURPOSE: Returns a default plotting range for given GEOS-Chem tracers This will be used to create concentration plots for GEOS-Chem benchmarking. CATEGORY: Benchmarking CALLING SEQUENCE: GET_CONC_RANGE, TRACERNAME, THIS_RANGE, THIS_UNIT INPUTS: TRACERNAME -> Name of the tracer for which a default plotting range will be returned. KEYWORD PARAMETERS: None OUTPUTS: THIS_RANGE -> A 2 element vector with the [min,max] values to be used in creating a tracer difference plot. THIS_UNIT -> String with the units of the data. SUBROUTINES: None REQUIREMENTS: Routine READ_CONC_RANGE must be called before this routine may be used. This will normally be done at the top of driver routine BENCHMARK_1YR. NOTES: (1) Meant to be used in conjunction with the GEOS-Chem benchmark plotting codes. (2) Default ranges for each tracer are read from a file by the complementary routine READ_DIFF_RANGE and stored in the GDR common block. EXAMPLE: READ_CONC_RANGE, 'conc_range.1mon' GET_CONC_RANGE, 'NOx', THIS_LOBOUND, THIS_HIBOUND, THIS_UNIT PRINT, THIS_LOBOUND, THIS_HIBOUND 0.50000 2.00000 PRINT, THIS_UNIT ppbv ; Prints the default plotting range and unit for NOx MODIFICATION HISTORY: bmy, 05 Sep 2012: VERSION 1.00 bmy, 24 Jan 2014: GAMAP VERSION 2.17 - Updated comments
(See /n/home09/ryantosca/IDL/gamap2/benchmark/get_conc_range.pro)
NAME: GET_DEFAULTFORMAT (function) PURPOSE: Return format string that will produce legible and concise strings for a given value range. The format should be applied in a string() statement and the string should be trimmed. CATEGORY: Strings CALLING SEQUENCE: MYFORMAT = GET_DEFAULTFORMAT(minval,maxval [,/LOG]) INPUTS: MINVAL, MAXVAL -> the range of values that shall be displayed with this format. KEYWORD PARAMETERS: /LOG -> set this keyword if you plan logarithmic labels. (changes behaviour for 0.001) DEFAULTLEN -> 1 or 2 strings with the default length specification for 'f' and 'e' formats. If only one string is passed, it will be used for both, otherwise the first string applies to 'f' and the second to 'e'. Example: DEFAULTLEN='10.3' results in 'f10.3'. THRESHOLD -> threshold value to switch from 'f' to 'e' format. Default is '2' for linear and '3' for log scale. This value is determined by the negative decadal log of (maxv-minv) plus 2. OUTPUTS: MYFORMAT -> A format string (e.g. '(f14.2)' ) SUBROUTINES: none REQUIREMENTS: none NOTES: None EXAMPLE: PRINT, GET_DEFAULTFORMAT( 0.01, 1. ) '(f14.2)' PRINT, GET_DEFAULTFORMAT( 0.0001, 0.01 ) '(e12.3)' MODIFICATION HISTORY: mgs, 17 Mar 1999: VERSION 1.00 mgs, 25 Mar 1999: - added DEFAULTLEN keyword mgs, 19 May 1999: - DEFAULTLEN now converted to string. - added THRESHOLD keyword bmy, 27 Sep 2002: TOOLS VERSION 1.51 - made default exponential format e12.2 bmy & phs, 13 Jul 2007: GAMAP VERSION 2.10
(See /n/home09/ryantosca/IDL/gamap2/strings/get_defaultformat.pro)
NAME: GET_DIFF_RANGE PURPOSE: Returns a default plotting range for given GEOS-Chem tracers This will be used to create absolute difference plots for GEOS-Chem benchmarking. CATEGORY: Benchmarking CALLING SEQUENCE: RANGE = GET_DIFF_RANGE( TRACERNAME ) INPUTS: TRACERNAME -> Name of the tracer for which a default plotting range will be returned. KEYWORD PARAMETERS: None OUTPUTS: RANGE -> A 2 element vector with the [min,max] values to be used in creating a tracer difference plot. SUBROUTINES: None REQUIREMENTS: Routine READ_DIFF_RANGE must be called before this routine may be used. This will normally be done at the top of driver routine BENCHMARK_1MON. NOTES: (1) Meant to be used in conjunction with the GEOS-Chem benchmark plotting codes. (2) Default ranges for each tracer are read from a file by the complementary routine READ_DIFF_RANGE and stored in the GDR common block. EXAMPLE: READ_DIFF_RANGE, 'diff_range.1mon' PRINT, GET_DIFF_RANGE( 'NOx' ) -0.100000 0.100000 ; Prints the default plotting range for NOx MODIFICATION HISTORY: bmy, 14 Nov 2007: VERSION 1.00
(See /n/home09/ryantosca/IDL/gamap2/benchmark/get_diff_range.pro)
NAME: GET_FREELUN (function) PURPOSE: Return next available logical unit number. Unlike the internal GET_LUN procedure, this function is not restricted to unit numbers above 100, and it will detect any blocked unit number. CATEGORY: File & I/O CALLING SEQUENCE: lun = GET_FREELUN([LUN]) INPUTS: none KEYWORD PARAMETERS: none OUTPUTS: The lowest available logical unit number. This number is also returned in the LUN parameter for later use. SUBROUTINES: None REQUIREMENTS: None NOTES: None EXAMPLE: OPENW, GET_FREELUN( LUN ), FILENAME ; Open a file and get the next free unit number. MODIFICATION HISTORY: mgs, 17 Sep 1998: VERSION 1.00 bmy & phs, 13 Jul 2007: GAMAP VERSION 2.10 - Updated comments, cosmetic changes
(See /n/home09/ryantosca/IDL/gamap2/file_io/get_freelun.pro)
NAME: GET_GEOS5_PRESS PURPOSE: Returns zonal mean pressure edges and pressure centers for the GEOS-5 grid (47 layers or 72 layers). Because in GEOS-5 we cannot compute the pressures at grid box edges and centers, we must read them in from disk. CATEGORY: GAMAP Internals, GAMAP Models & Grids CALLING SEQUENCE: GET_GEOS5_PRESS, PEDGE, PMID [, Keywords ] INPUTS: None KEYWORD PARAMETERS: FILENAME -> Specifies the name of the file containing average pressures on the GEOS-5 grid. If FILENAME is omitted, then GET_GEOS5_PRESS will use the default filename: "pedge.geos5.{RESOLUTION}.year". NLAYERS -> Specifies the number of layers in the GEOS-5 grid. NLAYERS can be either 47 or 72. Default is 47. RESOLUTION -> Specifies the resolution of the GEOS-5 grid. Default is 4x5. PSURF -> If specified, then PEDGE and PMID will be 1-D vectors, with the surface pressure (i.e. PEDGE[0]) being closest to the passed value of PSURF. /VERBOSE -> Set this switch to toggle verbose output. OUTPUTS: PEDGE -> Array (or vector if PSURF is specified) of pressures at GEOS-5 grid box edges. The PEDGE values have been averaged over 12 months and also averaged over longitudes (i.e. zonal mean). PMID -> Array (or vector if PSURF is specified) of pressures at GEOS-5 grid box centers. The pressures have been averaged over 12 months and also averaged over longitudes (i.e. zonal mean). SUBROUTINES: External Subroutines Required: =================================== CTM_GET_DATA CTM_TYPE (function) REQUIREMENTS: Requires routines from both GAMAP and TOOLS packages. NOTES: (1) At present, we only have saved out a file containing pressure edges from the GEOS-5 47-layer model. EXAMPLE: (1) GET_GEOS5_PRESS, PEDGE, PMID, RES=2 ; Returns pressues at grid box edges (PEDGE) and centers ; (PMID) for the GEOS-5 47L model at 2 x 2.5 resolution. ; PEDGE is a 2-D array of size 91x48. PMID is also a ; 2-D array of size 91x47. (2) GET_GEOS5_PRESS, PEDGE, PMID, RES=2, PSURF=1000.0 ; Returns pressues at grid box edges (PEDGE) and centers ; (PMID) for the GEOS-5 47L model at 2 x 2.5 resolution. ; for the column with the closest surface pressure to ; PSURF=1000 hPa. PEDGE is a 1-D vector w/ 48 elements. ; PMID is also a 1-D vector w/ 47 elements. MODIFICATION HISTORY: bmy & phs, 20 Jun 2007: GAMAP VERSION 2.10 phs, 25 Feb 2008: - check on File_Which output dbm & ccc, 15 Dec 2009: GAMAP VERSION 2.14 - Make sure PSURF is a scalar
(See /n/home09/ryantosca/IDL/gamap2/internals/get_geos5_press.pro)
NAME: GET_IS_EDGED (function) PURPOSE: Determine if a GEOS-5 data field is defined on the vertical grid box edges or centers. CATEGORY: GAMAP Utilities, GAMAP Data Manipulation CALLING SEQUENCE: RESULT = GET_IS_EDGED( NAME ) INPUTS: NAME -> Name of the tracer or met field to be tested. KEYWORD PARAMETERS: OUTPUTS: RESULT -> Returns 1 if the tracer or met field specified by NAME is defined on grid box vertical edges, or 0 otherwise. SUBROUTINES: None REQUIREMENTS: None NOTES: (1) This is currently a KLUDGE. Figure out a more robust way of determining if fields are defined on level edges or level centers later on. (bmy, 7/16/07) (2) Add more names to the CASE statement as necessary. EXAMPLES: (1) PRINT, GET_IS_EDGED( 'PEDGE' ) 1 ; The GEOS-5 PEDGE field is defined on the vertical ; grid edges, so GET_IS_EDGED returns 1. (2) PRINT, GET_IS_EDGED( 'UWND' ) 0 ; The GEOS-5 UWND field is defined on the vertical ; grid centers, so GET_IS_EDGED returns 0. MODIFICATION HISTORY: bmy & phs, 13 Jul 2007: GAMAP VERSION 2.10
(See /n/home09/ryantosca/IDL/gamap2/internals/get_is_edged.pro)
NAME: GET_RANGE PURPOSE: Enter the data range into a variable descriptor array CATEGORY: Atmospheric Sciences CALLING SEQUENCE: GET_RANGE,data,vardesc [,minvalid] INPUTS: DATA -> The data array (NLINES, NVARS) VARDESC -> The variable descriptor array (see GTE_VARDESC). Must contain NVARS elements, and a 2-element vector tagged RANGE. These values will be changed. MINVALID -> minimum valid data value to discriminate against missing values etc. Default is -1.0E30. KEYWORD PARAMETERS: none OUTPUTS: None SUBROUTINES: External Subroutines Required =============================== GTE_VARDESC (function) REQUIREMENTS: None NOTES: None EXAMPLE: ; read binary data and retrieve range READ_BDT0001, '~/tmp/*.bdt', DATA, VARDESC GET_RANGE, DATA, VARDESC MODIFICATION HISTORY: mgs, 24 Aug 1998: VERSION 1.00 bmy & phs, 13 Jul 2007: GAMAP VERSION 2.10
(See /n/home09/ryantosca/IDL/gamap2/atm_sci/get_range.pro)
NAME: GIF2PS PURPOSE: Translates GIF images to PostScript format. CATEGORY: Graphics CALLING SEQUENCE: GIF2PS [, FILENAME [, Keywords ] ] INPUTS: FILENAME (optional) -> Name of the input GIF file. If FILENAME is omitted then GIF2PS will prompt the user to supply a file name via a dialog box. FILENAME may contain wild card characters. KEYWORD PARAMETERS: OUTFILENAME -> Name of the output PostScript file. Default is "idl.ps". /FLIP_BW -> Set this keyword to turn black pixels into white pixels and vice-versa. This is useful for creating PostScript files of GIF images that have a dark background color. XOFFSET, YOFFSET (optional) -> Set these keywords to specify the X and Y Margins in inches. Defaults are XMARGIN = 0.5 inches and YMARGIN = 0.5 inches. _EXTRA=e -> Picks up extra keywords for OPEN_DEVICE, TVIMAGE, and CLOSE_DEVICE. OUTPUTS: Sends output to a PostScript file, whose name is given by the OUTFILENAME keyword. SUBROUTINES: External Subroutines Required: ============================== EXTRACT_FILEPATH (function) DIALOG_PICKFILE (function) TVIMAGE REQUIREMENTS: None NOTES: (1) Image processing options are limited to flipping the black and white pixels. This should be good enough for most purposes. (2) XMARGIN and YMARGIN assume that we are printing out for standard USA 8.5 x 11" page. Device sizes listed below are also in inches. EXAMPLE: (1) GIF2PS, 'my_gif.gif', OUTFILENAME='my_ps.ps' ; Translates the image in "my_gif.gif" to ; the PostScript file "my_ps.ps". (2) GIF2PS, 'my_gif.gif', OUTFILENAME='my_ps.ps', /FLIP_BW ; Same as in (1), but also changes all black ; pixels to white and vice-versa. (3) GIF2PS, 'my_gif.gif', OUTFILENAME='my_ps.ps', /FLIP_BW, $ XMARGIN=0.5, YMARGIN=0.5 ; Same as in (2), but also will "pad" the image with ; 0.5" of white space around each side. MODIFICATION HISTORY: bmy, 28 Jan 2000: VERSION 1.45 bmy & phs, 13 Jul 2007: GAMAP VERSION 2.10
(See /n/home09/ryantosca/IDL/gamap2/graphics/gif2ps.pro)