say $SSW_SMEI_UCSD/gen/idl/util/say.pro
[Previous] [Next]
 NAME:
	say
 CALLING SEQUENCE:
	PRO say, str, silent=silent, threshold=threshold
 INCLUDE:
	@compile_opt.pro
 CALLS: ***
	InitVar, who_am_i
 CALLED BY:
	InsituTimeSeries [1], InsituTimeSeries [2], getnagoyasources, getootyasources
	is_running, mk_flick, vu_correlate, vu_earthskymap, vu_get_page, vu_getdata
	vu_gettime, vu_header, vu_image, vu_insitu_raw, vu_localskymap, vu_mean, vu_movie
	vu_nagoyasourcemap, vu_new_time, vu_planarcut, vu_prefix, vu_quick_movie
	vu_radialcut, vu_read, vu_remoteview, vu_select, vu_solardisk, vu_spherecut
	vu_syncgrid, vu_synopticmap, vu_timeseries, vu_update_hours, vu_update_marker
	vu_vox_sequence, vu_vox_write, vu_write


scalarproduct $SSW_SMEI_UCSD/gen/idl/toolbox/math/scalarproduct.pro
[Previous] [Next]
 NAME:
	scalarproduct
 PURPOSE:
	Calculate scalar product for two vectors
 CATEGORY:
	gen/idl/toolbox/math
 CALLING SEQUENCE:
	FUNCTION scalarproduct, r1, r2, $
	    cylin   = cylin	, $
	    sphere  = sphere	, $
	    rect    = rect	, $
	    degrees = degrees	, $
	    angle   = angle
 INPUTS:
	r1	arrays[3,*]; type: int or float
	r1	arrays[3,*]; type: int or float
		    vectors for which the product is to be taken.
		    the first dimension identifies the three coordinates: Cartesian (default),
		    cylindrical or spherical.
 OPTIONAL INPUT PARAMETERS:
	/angle	    if set then information about the angle between the two vectors is returned:
			i.e. cos(angle) = |r1.r2|/|r1||r2|
	/cylin, /sphere, /rect
		    indicates whether input vectors are in cylindrical, spherical or rectangular
			coordinates. If none is set then rectangular is assumed.
	/degrees    if set, and spherical or cylindrical coordinates are used, then the angles
			are assumed to be in degrees (default: radians)
 OUTPUTS:
	result	array[*]    same type as input
		    scalar products or angle information are returned as array[n]
 INCLUDE:
	@compile_opt.pro	    ; On error, return to caller
 CALLS: ***
	CV_COORD, InitVar, SyncArgs, SyncDims
 CALLED BY:
	RotationMeasure, jpl_phase
 PROCEDURE:
 >	The arrays r1 and r2 do not necessarily have the same dimensions, i.e.
	if r1 is an array[3,n] and r2 is an array[3] then r2 is interpreted as an array[3,n]
	with all n vectors the same (SyncArgs is used to synchronize the array dimensions).
 >	Arrays r1 and r2 can have more than two dimensions, i.e. if r1 and r2 are both
	arrays[3,n,m] then the scalar products will be returned as array[n,m]
 MODIFICATION HISTORY:
	AUG-1999, Paul Hick (UCSD/CASS)
	NOV-2005, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
	    Extracted from vectorproduct procedure.


SetFileSpec $SSW_SMEI_UCSD/gen/idl/toolbox/files/setfilespec.pro
[Previous] [Next]
 NAME:
	SetFileSpec
 PURPOSE:
	Split file names into file components.
	Optionally parse the file names.
 CATEGORY:
	gen/idl/toolbox/files
 CALLING SEQUENCE:
	PRO SetFileSpec, FileSpec, FileParts, $
	    parse   = Parse , $
	    nosave  = NoSave, $
	    strict  = strict, $
	    status  = Status
 INPUTS:
	FileSpec    string array or scalar, containing file names
		(read-only)
 OPTIONAL INPUT PARAMETERS:
	/parse	    if set, the file names are parsed.
		parsing is successful if
		- The directory exists
		- There is write access to the directory
		- The file name is valid (the file may or may not exist)
		  (if no file name is specified this step is skipped)
		If the parsing is succesful, missing file parts will
		be added to the FileParts array; if not all parts are
		set to the null string.
	/nosave     by default, the FileParts array returned as ouput
		is saved internally in a common block (which can
		be accessed with GetFileSpec and PutFileSpec).
		if nosave is set, the internal data are not overwritten.
	/strict     by default the file type is the part of the
		filename trailing the last dot, i.e. if the file name
		is file.txt.gz, the file type is .gz.
		If /strict is set the type becomes the part following
		the first dot, i.e. the type is .txt.gz.
 OUTPUTS:
	FileParts   string array with one dimension more than
		FileSpec; the extra first dimension has 6 elements,
		containing node, device, directory, name, type, version
		!!! the FileParts argument is sometimes useful in
		combination with the /nosave keyword. Preferably this
		argument should not be used; instead use GetFileSpec
		and PutFileSpec to manipulate the same information.
 OPTIONAL OUTPUT PARAMETERS:
	status=Status	long integer array with same dimensions as FileSpec.
		If keyword Parse set:
		  0 : indicates that parsing failed
		  1 : indicates that parsing was succesfull
		If keyword Parse not set, all values are set to 1
 CALLS: ***
	CheckDir, FILEPATH, FindAllFiles, InitVar, IsType, SyncDims, os_separator, strposn
 INCLUDE:
	@compile_opt.pro	; On error, return to caller
	@filespec_common.pro	; Common block with arrays File and Parts
 CALLED BY:
	FindAllFiles, FindAllSubDirs, GetFileSpec, PutFileSpec, bin_read, bin_write, do_file
	findfile_fix, get_page, gunzip_file, makemovie, mk_flick, nso_fe_read, qImage
	qImage_Pick, qImage_cw_SmeiMask, qSave2File_Save, qView, qView_FileFilter
	qView_PickFiles, qView_Save2File, qView_TMO_tracksky, qset_page_pick, smei_buf
	smei_frm_update, smei_time, smei_www_skymaps, usno_body, vu_check, vu_coronagraph
	vu_earthskymap, vu_extract, vu_get_page, vu_getdata, vu_header, vu_image, vu_insitu
	vu_movie, vu_quick_movie, vu_remoteview, vu_vox_write, www_help_crosslinks
	www_help_files, www_help_get_header, www_help_get_info
 SIDE EFFECTS:
	Internal data are maintained internally (a copy of FileParts)
 RESTRICTIONS:
	FileSpec containing relative directory specifications
	(e.g. [], [-] on VMS, or . and .. on Win32 and Unix), cause
	problems for GetFileSpec. If these are present, then /parse
	should be used to remove them.
 PROCEDURE:
 >	Parsing: the existence check for the directory is done using CheckDir.
	The fully-parsed directory returned by CheckDir is used, so the parse
	keyword can be used to expand environment variables, e.g.
	    SetFileSpec, '$dat/tmo/*.nic', /parse
	    print, GetFileSpec()
	would print (provided the directory exists):
	    /big/oftp/dat/tmo/*.nic
 > If a wildcard is specified in the file name then only the directory
	is parsed.
 >  For an existing file the full file name is obtained using FindAllFiles.
   If the file does not exist, an attempt is made to open
	the file with OPENW to establish that the syntax is valid;
	FindAllFiles is used to obtain the full file name before closing and
	deleting the file again.
 >	The filenames are split up into parts by a series of strposn calls
 >	FileSpec='' (null string) is interpreted as the current working directory,
	and will always return status=1.
 MODIFICATION HISTORY:
	DEC-1997, Paul Hick (UCSD/CASS)
	FEB-2002, Paul Hick (UCSD/CASS)
	    Remove bug which caused problems when multidimensional arrays
	    of filenames were processed.
	JAN-2003, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
	    If a wildcard (*) is specified in the filename part then only the
	    directory is checked when the /parse keyword is set.


SetRange $SSW_SMEI_UCSD/gen/idl/toolbox/setrange.pro
[Previous] [Next]
 NAME:
	SetRange
 PURPOSE:
	Set range of values, checking against a default range
 CATEGORY:
	Tricks
 CALLING SEQUENCE:
	new = SetRange(default, range [, /lower_limit])
 INPUTS:
	default 	array[2]; type: any
			    upper and lower limits on allowed values
 OPTIONAL INPUT PARAMETERS:
	range		scalar or array[2]
			    range to be checked against 'default'
	/lower_limit	if set then a scalar 'range' is interpreted as
			a lower limit (default is upper limit)
 OUTPUTS:
	new		array[2]
			    updated range of values
			    if 'range' undefined then 'new' is set to 'default'
			    if 'range' is scalar then new = [range,default[1]] is
			    returned (/lower_limit is set), or new = [default[0],range[1]]
			    is returned (/lower_limit not set
			    Always 'range' is constrained to stay inside the limits set by 'default'
 INCLUDE:
	@compile_opt.pro	; On error, return to caller
 CALLS: ***
	InitVar
 CALLED BY:
	RemoteView_rgbo
 PROCEDURE:
	Trivial
 MODIFICATION HISTORY:
	JUN-2000, Paul Hick (UCSD/CASS; pphick@ucsd.edu)


sgp4_eph $SSW_SMEI_UCSD/gen/idl/ephem/sgp4_eph.pro
[Previous] [Next]
 NAME:
	sgp4_eph
 PURPOSE:
	Get location of Coriolis spacecraft in ECI coordinates
 CATEGORY:
	gen/idl/ephem
 CALLING SEQUENCE:
	FUNCTION sgp4_eph, tt_obs, body_, $
	    km	    = km	, $
	    location= location	, $
	    source  = source	, $
	    precess = precess
 INPUTS:
	tt_obs		array[n]; type: time structure
			    UT time
 OPTIONAL INPUTS:
	body_		scalar; type: string; default: 'sat27640'
			    spacecraft designation
			    The default sat27640 is Coriolis.
	km=km		if set, return distance in km instead of AU
	source=source	scalar; type: string; default: who_am_i(/dir)/sgp
			    directory where TLE file is located (by default the
			    subdir sgp of the dir where this file is located.
	/precess	precess position and velocity vector to J2000 coordinates
			    (used by big_eph)
 OUTPUTS:
	rr[6,n] 	location and velocity
			    Coordinates are valid for the current epoch and equinox,
			    unless /precess is set (see PROCEDURE).
			    If /location is set only r[0:2,n] is returned.
			    If the required file with TLEs is not found
			    then the output vector contains NaNs.
 INCLUDE:
	@compile_opt.pro	; On error, return to caller
 CALLS: ***
	ArrayLocation, BadValue, CvPrecess, FILEPATH, InitVar, SuperArray, TimeFixYear
	TimeLimits, TimeOp, TimeSet, TimeUnit, hide_env, sgp_alias, txt_read, who_am_i
 CALLED BY:
	big_eph, sgp4_orbit_axis, smei_frm_cvhdr, smei_frm_where, smei_sgp4_orbits
	smei_sgp4_quat
 PROCEDURE:
	The file with orbital elements is 'body.txt' i.e. sat27640.txt for
	Coriolis. The file is looked for in the subdirectory sgp of the
	directory where this source code is located. Used keyword 'source'
	to point to another subdirectory.
	Orbital elements can be retrieved from www.space-track.org

	Excerpt from http://celestrak.com/columns/v02n01/:

	"As it turns out, the NORAD SGP4 orbital model takes the standard
	two-line orbital element set and the time and produces an ECI
	position and velocity for the satellite. In particular, it puts it
	in an ECI frame relative to the "true equator and mean equinox of
	the epoch" of the element set. This specific distinction is
	necessary because the direction of the Earth's true rotation axis
	(the North Pole) wanders slowly over time, as does the true direction
	of the vernal equinox. Since observations of satellites are made
	by stations fixed to the Earth's surface, the elements generated
	will be referenced relative to the true equator. However, since the
	direction of vernal equinox is not tied to the Earth's surface, but
	rather to the Earth's orientation in space, an approximation must
	be made of its true direction. The approximation made in this case is
	to account for the precession of the vernal equinox but to ignore the
	nutation (nodding) of the Earth's obliquity (the angle between the
	equatorial plane and the ecliptic)."
 MODIFICATION HISTORY:
	MAR-2005, Paul Hick (UCSD/CASS)
	SEP-2005, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
	    Reduced memory requirements by extracting TLE bracketing the
	    input time range tt_obs


sgp4_orbit_axis $SSW_SMEI_UCSD/gen/idl/ephem/sgp4_orbit_axis.pro
[Previous] [Next]
 NAME:
	sgp4_orbit_axis
 PURPOSE:
	Gets ECI coordinates for Coriolis orbital axis (i.e. the normal
	to the orbital plane, close to the sunward direction).
 CATEGORY:
	camera/idl/toolbox
 CALLING SEQUENCE:
	FUNCTION sgp4_orbit_axis, tt, $
	    degrees	= degrees   , $
	    to_sphere	= to_sphere , $
	    precess	= precess
 INPUTS:
	tt	array; type: time structure
 OPTIONAL INPUT PARAMETERS:
	/to_sphere  if set return spherical (RA,dec) coordinates
	/degrees    if set, angles are in degrees (default: radians)
	/precess    (passed to sgp4_eph)
		    precess to J2000 coordinates
 OUTPUTS:
	rr	array[3,*]; type: double
		    coordinates of a unit vector along the normal
		    to the SMEI orbital plane in rectangular (/to_sphere
		    NOT set) or spherical (RA,dec) coordinates
		    (/to_sphere) SET.
 INCLUDE:
	@compile_opt.pro	; On error, return to caller
 CALLS: ***
	AngleRange, CV_COORD, InitVar, IsTime, TimeOp, TimeSet, TimeSystem, TimeUnit, gridgen
	sgp4_eph, vectorproduct
 CALLED BY:
	cv, smei_sgp4_orbits, smei_zld_weekly
 PROCEDURE:
	Viewed from the Sun SMEI circles the Earth close to the terminator
	in anti-clockwise direction (going north towards the east (dusk
	terminator) and south in the west (dawn terminator).
	The normal, defined as the cross produce of position and velocity
	vector points towards the Sun.
 MODIFICATION HISTORY:
	APR-2009, Paul Hick (UCSD/CASS)
	MAR-2011, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
	    Added more documentation.


sgp4_orbit_period $SSW_SMEI_UCSD/gen/idl/ephem/sgp4_orbit_period.pro
[Previous] [Next]
 NAME:
	sgp4_orbit_period
 PURPOSE:
 CATEGORY:
 CALLING SEQUENCE:
 INPUTS:
 OPTIONAL INPUT PARAMETERS:
 OUTPUTS:
 OPTIONAL OUTPUT PARAMETERS:
 INCLUDE:
	@compile_opt.pro	; On error, return to caller
 EXTERNAL:
 CALLS: ***
	BadValue, SyncArgs, sgp4_tle
 CALLED BY:
	smei_sgp4_orbits
 PROCEDURE:
 MODIFICATION HISTORY:
	JUNE-2006, Paul Hick (UCSD/CASS; pphick@ucsd.edu)


sgp4_tle $SSW_SMEI_UCSD/gen/idl/ephem/sgp4_tle.pro
[Previous] [Next]
 NAME:
	sgp4_tle
 PURPOSE:
	Extract orbital elements covering bracketing tt_obs from
	tle data base file
 CATEGORY:
	gen/idl/ephem
 CALLING SEQUENCE:
	status = sgp4_tle(tt_obs,body_,source=source,tle=tle,tt_tle=tt_tle)
 INPUTS:
	tt_obs		array[n]; type: time structure
			    UT time
 OPTIONAL INPUTS:
	body_		scalar; type: string; default: 'sat27640'
			    spacecraft designation
			    The default sat27640 is Coriolis.
	source=source	scalar; type: string; default: who_am_i(/dir)/sgp
			    directory where TLE file is located (by default the
			    subdir sgp of the dir where this file is located.
 OUTPUTS:
	status		scalar; type: integer
			    0: the ephemeris find is not found or there
				is a read error. In this case tle and tt_tle
				won't exist
			    1: tles found
	tle=tle 	array[2,ntle]; type: string
			    tle (each tle consists of two records)
			    the tles will bracket the input time period tt_obs
	tt_tle		array[ntle]; type: time structure
			    times extracted from tle records
 INCLUDE:
	@compile_opt.pro	; On error, return to caller
 CALLS: ***
	ArrayLocation, FILEPATH, InitVar, SuperArray, TimeFixYear, TimeLimits, TimeOp, TimeSet
	TimeUnit, hide_env, sgp_alias, txt_read, who_am_i
 CALLED BY:
	sgp4_orbit_period
 PROCEDURE:
	The file with orbital elements is 'body.txt' i.e. sat27640.txt for
	Coriolis. The file is looked for in the subdirectory sgp of the
	directory where this source code is located. Used keyword 'source'
	to point to another subdirectory.
	Orbital elements can be retrieved from www.space-track.org
 MODIFICATION HISTORY:
	DEC-2005, Paul Hick (UCSD/CASS)
	    Extracted from sgp4_eph


sgp_alias $SSW_SMEI_UCSD/gen/idl/ephem/sgp_alias.pro
[Previous] [Next]
 NAME:
	sgp_alias
 PURPOSE:
	Translates aliases for satellite names to their sgp names
 CATEGORY:
	gen/idl/ephem
 CALLING SEQUENCE:
	name = alias_sgp(body)
 INPUTS:
	body	    array: type: string
			alias for satellite name
 OUTPUTS:
	name	    array: type: string
			sgp name for satellite
 INCLUDE:
	@compile_opt.pro	; On error, return to caller
 CALLED BY:
	big_body, big_eph, sgp4_eph, sgp4_tle
 PROCEDURE:
	Currently only aliases 'coriolis','windsat' and 'smei' are
	converted to sgp name 'sat2740'
 MODIFICATION HISTORY:
	JUN-2006, Paul Hick (UCSD/CASS)
	SEP-2007, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
	    Bugfix? Unidentified bodies would be returned in lowercase.
	    Now they remain untouched.


sgp_body $SSW_SMEI_UCSD/gen/idl/ephem/sgp_body.pro
[Previous] [Next]
 NAME:
	sgp_body
 PURPOSE:
	Get list of bodies for which SGP ephemerides are available
 CATEGORY:
	smei/gen/idl/ephem
 CALLING SEQUENCE:
	sgp_nams = sgp_body([body, files=files, numbers=numbers, count=count])
 OPTIONAL INPUT PARAMETERS:
	body	    scalar or array; type: integer or string
			    integer: list of body numbers
			    string : list of body names
				only valid entries on this list are processed
				If not specified then all bodies are processed
 OUTPUTS:
	names		array[count]; type: string
			    list of body names for which ephemeris files
			    are available; if none exist (count=0) then names=''
 OPTIONAL OUTPUT PARAMETERS:
	count=count	scalar; type: integer
			    # requested bodies for which ephemeris files are present
			    i.e. # elements in input 'body' with invalid entries removed
	file=file	array[count]; type: string
			    file names of the ephemeris files; null-string if count=0
	number=number	array[count]; type: integer
			    body numbers; -1 if count=0
	index=index	array[count]; type: integer
			    index numbers between 0, and total_count-1; -1 if count=0
	total_count=total_count
			scalar; type: integer
			    total # bodies for which ephemeris files are present
 INCLUDE:
	@compile_opt.pro	; On error, return to caller
 CALLS: ***
	FILEPATH, GetFileSpec, IsType, hide_env, where_common, who_am_i
 CALLED BY:
	RemoteView_BodyLoc, big_body, big_eph
 PROCEDURE:
 >	Currently only 9P/Tempel (comet Tempel 1 around 'deep impact' time) is available
 >	The SGP files are searched for in the subdirectory 'sgp' of the directory
	where this procedure is located.
 MODIFICATION HISTORY:
	JUL-2005, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
	    Based on usno_body()


smei_coriolis $SSW_SMEI_UCSD/gen/idl/ephem/smei_coriolis.pro
[Previous] [Next]
 NAME:
	smei_coriolis
 PURPOSE:
	Returns time at which Coriolis was in specified orbit
 CALLING SEQUENCE:
	FUNCTION smei_coriolis, tt_or_orbit , $
	    orbital_period  = orbital_period, $
	    number	    = number	    , $
	    fraction	    = fraction	    , $
	    doublex	    = doublex
 INPUTS:
	tt_or_orbit	    array; type: time structure or any numerical type
				if input are times then output is the
				orbit number; if input is numerical then
				output is the orbit time.
 OPTIONAL INPUTS:
	/orbital_period     return orbital period
				if set then the orbital period at the specified
				time or orbit number is returned
				(if tt_or_orbit is not specified then
				tt_or_orbit=0 is assumed)
	/number 	    these three keywords are used only if a time
	/fraction	    structure is specified as input (the keywords
	/doublex	    are passed to smei_orbit_get.
 OUTPUTS:
	smei_coriolis	    array; type: numerical or time structure
				orbit number or orbit time (depending on input
				tt_or_orbit
 INCLUDE:
	@compile_opt.pro	; On error, return to caller
 CALLS: ***
	FILEPATH, InitVar, IsTime, IsType, TimeGet, TimeLInterpol, TimeOp, TimeSet
	smei_orbit_get, smei_orbit_set, timeposn, txt_read, who_am_i
 CALLED BY:
	FUNCTION smeilatest lastorbit, TimeGet, TimeSet, smei_frm_findpoint
	smei_getfile, smei_orbit_stats, smei_star_fit, smei_time, smei_www_skymaps
 PROCEDURE:
	Orbit n0(=0) starts at t0 = 2002/12/31 23:56:41.900.
	The orbital period at this time was p0=0.0705612268519d0 days (6096.490 s),
	and has been decreasing since with dp=0.084 msec per orbit.
	(0.42s reduction in SMEI period per 365 days).

	The effective orbital period for orbit n is p0-(n-n0)*dp.
	The start times for each orbit becomes:

	t(n0+0) = t0
	t(n0+1) = t(n0+0)+p0-1*dp
	t(n0+2) = t(n0+1)+p0-2*dp
	...
	t(n0+n) = t(n0+n-1)+p0-n*dp = t0+n*p0-0.5*n*(n+1)*dp
 MODIFICATION HISTORY:
	JUN-2004, Paul Hick (UCSD/CASS; pphick@ucsd.edu)


smei_fts_read $SSW_SMEI_UCSD/gen/idl/util/smei_fts_read.pro
[Previous] [Next]
 NAME:
	smei_fts_read
 PURPOSE:
	Read Fits file
 CALLING SEQUENCE:
	status = smei_fts_read(File, Array, errormessage=errormessage)
 INPUTS:
	File	    string	file name
 OPTIONAL INPUT PARAMETERS:
	header=header
		    if set then only the Fits header is read and returned
			in 'Hdr'. The data array is set to -1.
 OUTPUTS:
	status	    0: some error occurred (check 'errormessage')
		    1: file properly read
	Array	    array[n,m]
		    2D array of requested type
		    if something goes wrong or /header was set then
		    Array = -1 is returned
	Hdr	    Fits header array
 OPTIONAL OUTPUT PARAMETERS:
	errormessage
		    scalar; type: string
			Contains null string if file was read succesfully
			Contains error message if an error occurred
 INCLUDE:
	@compile_opt.pro	; On error, return to caller
 CALLS: ***
	HEADFITS, InitVar, IsType, READFITS, do_file, gunzip_file
 PROCEDURE:
	Wrapper for the readfits.pro procedure in SSW.
	The SSW version decompresses Fits file in place, which won't work
	if the gzipped version is stored on a read-only file system.
	This wrapper unzips the file into a temporary file using
	gunzip_file and takes care of cleaning up the temporary file.
 MODIFICATION HISTORY:
	JUL-2004, Paul Hick (UCSD/CASS; pphick@ucsd.edu)


smei_sgp4_orbits $SSW_SMEI_UCSD/gen/idl/ephem/smei_sgp4_orbits.pro
[Previous] [Next]
 NAME:
	smei_sgp4_orbits
 PURPOSE:
	Build list of start times for all orbits using TLE data base.
 CALLING SEQUENCE:
	PRO smei_sgp4_orbits, input_sgp4_file, new=new, smeitree=smeitree, silent=silent
 INCLUDE:
	@compile_opt.pro    ; On error, return to caller
 INPUTS:
	input_sgp4_file
		    existing file with start times.
		    By default the file in the SMEI tree is used
		    (if /new is NOT set)
 OPTIONAL INPUTS:
	/new	    creates a new file from scratch. In this case
		    input_sgp4_file is ignored
	/smeitree   The output file is created as $TUB/smei_sgp4_orbits.tmp
		    If /smeitree is set then the file in $TUB is copied to
		    the SMEI master tree and to the SMEI tree on smei.ucsd.edu
		    (requires that env $SMEIMASTER is defined)
 CALLS: ***
	AngleRange, CV_COORD, FILEPATH, INTERPOL, InitVar, TimeGet, TimeOp, TimeSet, TimeUnit
	big_eph, destroyvar, hide_env, ra_fictitious_sun, sgp4_eph, sgp4_orbit_axis
	sgp4_orbit_period, sphere_distance, txt_read, who_am_i
 PROCEDURE:
	sgp4_eph returns rectangular ECI coordinates relative to the
	current equinox. Essentially this means equatorial coordinates
	relative to the current equinox. So the declination is
	effectively the geographic latitude.

	Currently (March 2011) this procedure is called as part of
	smei_pipeline.sh (executed hourly as cronjob on smeidb).

	The file is used in IDL only by the procedure smei_coriolis.pro.
	In Fortran the only function calling it is smei_orbit_info2.f.

	Content of file:

	1. SMEI orbit number
	2. Orbit start time in format YYYY_DOY_hhmmssmss
	   The orbital start time in format hh:mm:ss.mss
	   Defined as the time Coriolis crosses a fixed geographic
	   latitude (~ -31.1 degrees; close to the latitude of the
	   SAA) going north.
	3. Orbital period, defined as time difference between two
	   successive orbital start times
	4. Orbital period used in sgp4 software
	   I think this is some sort of Keplerian orbital period;
	   not particulary useful.
	5. Precision of geographic latitude calculation

	The remaining columns are related to the normal of the SMEI orbital
	plane (pointing towards the Sun).

	6. Solar elongation (in degrees) of the normal
	7. RA (in degrees) of the fictitious Sun
	   This progresses stricly linear with UT going through
	   360 degrees in 365.25 days (one Julian year).
	   This is approximate, but good enough for government work)
	8. RA difference (J2000, in degrees) of the normal with the
	   RA of the fictitious Sun.
	9. Declination of the normal (J2000, in degrees)
 MODIFICATION HISTORY:
	JAN-2006, Paul Hick (UCSD/CASS)
	OCT-2006, Paul Hick (UCSD/CASS)
	    Replaced NewcombSun by big_eph calls
	MAR-2007, Paul Hick (UCSD/CASS)
	    Eliminated big_eph. Now only sgp4_eph is used.
	APR-2007, Paul Hick (UCSD/CASS)
	    Added check to avoid calculating start times past
	    the time of the last TLE available to sgp4_eph.
	APR-2009, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
	    Added column for elongation of normal to Coriolis
	    of orbital plane.
	MAR-2011, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
	    Added columns for RA,dec of orbit normal


smei_sgp4_quat $SSW_SMEI_UCSD/gen/idl/ephem/smei_sgp4_quat.pro
[Previous] [Next]
 NAME:
	smei_sgp4_quat
 PURPOSE:
	Calculates quaternion for nominal SMEI attitude at indicated times.
 CATEGORY:
 CALLING SEQUENCE:
	FUNCTION smei_sgp4_quat,  tt
 INPUTS:
	tt	array; type: time structure
 OPTIONAL INPUT PARAMETERS:
 OUTPUTS:
	qq	array[4,*]; type: double
		    spacecraft quaternion
 INCLUDE:
	@compile_opt.pro	; On error, return to caller
 CALLS: ***
	CV_COORD, CvRotation, sgp4_eph
 CALLED BY:
	qImage_cw_Where, smei_cam_quaternion
 PROCEDURE:
	Should match the quaternion specified in the SMEI frame header.
 MODIFICATION HISTORY:
	JUL-2006, Paul Hick (UCSD/CASS; pphick@ucsd.edu)


StereoAOrbit $SSW_SMEI_UCSD/gen/idl/ephem/stereoaorbit.pro
[Previous] [Next]
 NAME:
	StereoAOrbit
 PURPOSE:
	Calculate position of Stereo A (Ahead)
 CATEGORY:
	smei/gen/idl/ephem
 CALLING SEQUENCE:
	FUNCTION StereoAOrbit, T, degrees=degrees
 INPUTS:
	T	array[n]; type: time structure
		    times at which s/c positions are needed
 OPTIONAL INPUT PARAMETERS:
	/degrees    if set then angles are output in degrees
		(default: radians)
 OUTPUTS:
	Result	array[3,*]; type: float
		    J2000 ecliptic longitude (deg/rad), latitude
		    (deg/rad) and distance (AU).
		    The angular units depend on the setting of /degrees
 INCLUDE:
	@compile_opt.pro    ; On error, return to caller
 CALLS: ***
	BadValue, KeplerOrbit, TimeGet, TimeSet, ToDegrees
 CALLED BY:
	big_eph
 RESTRICTIONS:
	The precision is probably about 0.1 degrees in ecliptic longitude,
	provided orbital elements are added as needed (once or twice year?)
 PROCECURE:
	From http://ssd.jpl.nasa.gov/horizons.cgi
	(J2000.0 Orbital Elements)
	Elements cover four periods between 2007/01/01 and 2007/09/30:

	2007/01/01 -> 2007/01/31

	2454115.500000000 = A.D. 2007-Jan-15 00:00:00.0000 (CT)
	 EC= 9.509555173766652E-03 QR= 9.620747268989945E-01 IN= 1.306235954146905E-01
	 OM= 2.380953113698972E+02 W = 3.355229542907300E+02 Tp=  2454210.608155566733
	 N = 1.029594704279364E+00 MA= 2.620771466946642E+02 TA= 2.609996629128498E+02
	 A = 9.713114668842425E-01 AD= 9.805482068694904E-01 PR= 3.496521480770163E+02

	2007/02/01 -> 2007/02/28

	2454147.500000000 = A.D. 2007-Feb-16 00:00:00.0000 (CT)
	 EC= 6.279052167650651E-03 QR= 9.596197332195503E-01 IN= 1.213139724936570E-01
	 OM= 2.169765459780858E+02 W = 5.374894575771112E+01 Tp=  2454265.510775187053
	 N = 1.038608771871410E+00 MA= 2.374329737152352E+02 TA= 2.368291467561132E+02
	 A = 9.656833090947861E-01 AD= 9.717468849700218E-01 PR= 3.466175231231067E+02

	2007/03/01 -> 2007/03/31

	2454175.500000000 = A.D. 2007-Mar-16 00:00:00.0000 (CT)
	 EC= 6.226246274394636E-03 QR= 9.577018334129234E-01 IN= 1.234975641202794E-01
	 OM= 2.149185709343068E+02 W = 7.828787777683904E+01 Tp=  2454286.911843170412
	 N = 1.041813256894421E+00 MA= 2.439296648101152E+02 TA= 2.432909800026552E+02
	 A = 9.637020798975118E-01 AD= 9.697023263821002E-01 PR= 3.455513717238894E+02

	2007/04/01 -> 2007/10/01

	2454253.500000000 = A.D. 2007-Jun-02 00:00:00.0000 (CT)
	 EC= 5.917966070544746E-03 QR= 9.565996862733112E-01 IN= 1.251469150146348E-01
	 OM= 2.143572837656983E+02 W = 9.239562034525594E+01 Tp=  2454299.754766134545
	 N = 1.044099914070154E+00 MA= 3.117054026536591E+02 TA= 3.111966164343318E+02
	 A = 9.622945125484443E-01 AD= 9.679893388235775E-01 PR= 3.447945882847869E+02

	2007/10/01 -> now

	2454466.500000000 = A.D. 2008-Jan-01 00:00:00.0000 (CT)
	 EC= 5.655394382946006E-03 QR= 9.564978161375505E-01 IN= 1.253836830038676E-01
	 OM= 2.142571411361414E+02 W = 9.225614784090398E+01 Tp=  2454299.536585085094
	 N = 1.044680486714094E+00 MA= 1.744234215566499E+02 TA= 1.744859573944121E+02
	 A = 9.619379546429810E-01 AD= 9.673780931484115E-01 PR= 3.446029715098184E+02

	2011/01/21 -> 2012/01/21

	2455583.500000000 = A.D. 2011-Jan-22 00:00:00.0000 (CT)
	 EC= 5.649610774525156E-03 QR= 9.563712745374616E-01 IN= 1.256261457055498E-01
	 OM= 2.140504362161804E+02 W = 9.348075068567380E+01 Tp=  2455678.680902264081
	 N = 1.044896949233696E+00 MA= 2.605457655988884E+02 TA= 2.599079145507906E+02
	 A = 9.618050989876956E-01 AD= 9.672389234379295E-01 PR= 3.445315830082727E+02

	2012/01/21 -> now

	2455948.500000000 = A.D. 2012-Jan-22 00:00:00.0000 (CT)
	 EC= 5.705938568515530E-03 QR= 9.563266675804051E-01 IN= 1.257640058659871E-01
	 OM= 2.139833070619798E+02 W = 9.406913424182217E+01 Tp=  2456023.716625969391
	 N = 1.044881265762684E+00 MA= 2.814075566505216E+02 TA= 2.807657290779928E+02
	 A = 9.618147233058820E-01 AD= 9.673027790313589E-01 PR= 3.445367543624463E+02


    JDCT     Epoch Julian Date, Coordinate Time
      EC     Eccentricity, e
      QR     Periapsis distance, q (AU)
      IN     Inclination w.r.t xy-plane, i (degrees)
      OM     Longitude of Ascending Node, OMEGA, (degrees)
      W      Argument of Perifocus, w (degrees)
      Tp     Time of periapsis (Julian day number)
      N      Mean motion, n (degrees/day)
      MA     Mean anomaly, M (degrees)
      TA     True anomaly, nu (degrees)
      A      Semi-major axis, a (AU)
      AD     Apoapsis distance (AU)
      PR     Orbital period (day)
 MODIFICATION HISTORY:
	AUG-2007, George Megally (UCSD/CASS; gmegally@ucsd.edu)
	AUG-2007, John Clover (UCSD/CASS; jclover@ucsd.edu)
	JUL-2008, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
	    Split up into seperate routines for A and B.
	    Updated orbital elements from Horizon (almost, but not quite the
	    same as the original ones).
	JUN-2009, John Clover (UCSD/CASS; jclover@ucsd.edu)
	    Fixed time structure to cover the whole of the end of the day between
	    elements.


StereoBOrbit $SSW_SMEI_UCSD/gen/idl/ephem/stereoborbit.pro
[Previous] [Next]
 NAME:
	StereoBOrbit
 PURPOSE:
	Calculate position of Stereo B (Behind)
 CATEGORY:
	smei/gen/idl/ephem
 CALLING SEQUENCE:
	FUNCTION StereoBOrbit, T, degrees=degrees
 INPUTS:
	T	    array[n]; type: time structure
			times at which s/c positions are needed
 OPTIONAL INPUT PARAMETERS:
	/degrees    if set then angles are output in degrees (default: radians)
 OUTPUTS:
	Result	    array[3,*]; type: float
			J2000 ecliptic longitude (deg/rad), latitude
			(deg/rad) and distance (AU).
			The angular units depend on the setting of /degrees
 INCLUDE:
	@compile_opt.pro    ; On error, return to caller
 CALLS: ***
	BadValue, KeplerOrbit, TimeGet, TimeSet, ToDegrees
 CALLED BY:
	big_eph
 RESTRICTIONS:
	The precision is probably about 0.1 degrees in ecliptic longitude,
	provided orbital elements are added as needed (once or twice year?)
 PROCECURE:
	From http://ssd.jpl.nasa.gov/horizons.cgi
	(J2000.0 Orbital Elements)
	Elements cover four periods between 2007/01/01 and 2007/09/30:

	2007/01/01 -> 2007/01/31

	2454115.500000000 = A.D. 2007-Jan-15 00:00:00.0000 (CT)
	 EC= 2.717512429419864E-02 QR= 9.315766343405397E-01 IN= 2.062856692554812E-01
	 OM= 1.265504225590081E+02 W = 2.009817559818071E+02 Tp=  2453977.546381154098
	 N = 1.051787957703235E+00 MA= 1.450979550234674E+02 TA= 1.468311244708070E+02
	 A = 9.575995203295605E-01 AD= 9.836224063185813E-01 PR= 3.422743123871886E+02

	2007/02/01 -> 2007/02/28

	2454147.500000000 = A.D. 2007-Feb-16 00:00:00.0000 (CT)
	 EC= 4.699285093170608E-02 QR= 9.871128055468245E-01 IN= 2.992287472926523E-01
	 OM= 3.392409078493881E+02 W = 1.283202740400959E+02 Tp=  2454109.145052516367
	 N = 9.349709833378660E-01 MA= 3.586076296454760E+01 TA= 3.917087846701419E+01
	 A = 1.035787408847744E+00 AD= 1.084462012148664E+00 PR= 3.850386872058772E+02

	2007/03/01 -> 2007/03/31

	2454175.500000000 = A.D. 2007-Mar-16 00:00:00.0000 (CT)
	 EC= 4.372120282913373E-02 QR= 9.936734937715849E-01 IN= 3.079140638493386E-01
	 OM= 3.385303364716559E+02 W = 1.396338867376834E+02 Tp=  2454119.296489763539
	 N = 9.304977044270033E-01 MA= 5.229723725577440E+01 TA= 5.639454403113316E+01
	 A = 1.039104387456201E+00 AD= 1.084535281140816E+00 PR= 3.868897239479882E+02

	2007/04/01 -> 2007/10/01

	2454253.500000000 = A.D. 2007-Jun-02 00:00:00.0000 (CT)
	 EC= 4.182627806223717E-02 QR= 9.986984397920566E-01 IN= 2.942094890131228E-01
	 OM= 3.365510702179411E+02 W = 1.467482264878249E+02 Tp=  2454124.112501636613
	 N = 9.262301226788787E-01 MA= 1.198425984820785E+02 TA= 1.238910903027097E+02
	 A = 1.042293706168792E+00 AD= 1.085888972545528E+00 PR= 3.886723085174492E+02

	2007/10/01 -> now

	2454466.500000000 = A.D. 2008-Jan-01 00:00:00.0000 (CT)
	 EC= 4.143096626093998E-02 QR= 9.996061655975762E-01 IN= 2.943195765731059E-01
	 OM= 3.364601578200525E+02 W = 1.467863556683245E+02 Tp=  2454512.857852065004
	 N = 9.255412455738544E-01 MA= 3.170938958574695E+02 TA= 3.137364080607738E+02
	 A = 1.042810825735152E+00 AD= 1.086015485872728E+00 PR= 3.889615959543680E+02

    JDCT     Epoch Julian Date, Coordinate Time
      EC     Eccentricity, e
      QR     Periapsis distance, q (AU)
      IN     Inclination w.r.t xy-plane, i (degrees)
      OM     Longitude of Ascending Node, OMEGA, (degrees)
      W      Argument of Perifocus, w (degrees)
      Tp     Time of periapsis (Julian day number)
      N      Mean motion, n (degrees/day)
      MA     Mean anomaly, M (degrees)
      TA     True anomaly, nu (degrees)
      A      Semi-major axis, a (AU)
      AD     Apoapsis distance (AU)
      PR     Orbital period (day)
 MODIFICATION HISTORY:
	AUG-2007, George Megally (UCSD/CASS; gmegally@ucsd.edu)
	AUG-2007, John Clover (UCSD/CASS; jclover@ucsd.edu)
	JUL-2008, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
	    Split up into seperate routines for A and B.
	    Updated orbital elements from Horizon (almost, but not quite the
	    same as the original ones).
       JUN-2009, John Clover (UCSD/CASS; jclover@ucsd.edu)
	       Fixed time structure to cover the whole of the end of the day between
	       elements.


Stretch_Colors $SSW_SMEI_UCSD/gen/idl/environment/stretch_colors.pro
[Previous] [Next]
 NAME:
	Stretch_Colors
 PURPOSE:
	Reverse color table
 CATEGORY:
	Annoying
 CALLING SEQUENCE:
	PRO Stretch_Colors, reverse=reverse, silent=silent
 INPUTS:
	(none)
 OPTIONAL INPUT PARAMETERS:
	/reverse    if set then reverse the color table
 OUTPUTS:
 INCLUDE:
	@compile_opt.pro	; On error, return to caller
 CALLS: ***
	InitVar, STRETCH
 PROCEDURE:
 MODIFICATION HISTORY:
	MAR-2009, Paul Hick (UCSD/CASS; pphick@ucsd.edu)


strposn $SSW_SMEI_UCSD/gen/idl/toolbox/strposn.pro
[Previous] [Next]
 NAME:
	strposn
 PURPOSE:
	Locates a substring in an array of strings and returns
	string arrays for preceding and trailing parts. By default, the
	substring is removed, but can be retained using keywords
	TrailingFront or LeadingBack
 CATEGORY:
	string manipulation
 CALLING SEQUENCE:
	FUNCTION strposn, Strings, SubStr, Front, Back, $
	    Last	    = Last	    , $
	    frontdefault    = FrontDefault  , $
	    trailingfront   = TrailingFront , $
	    leadingback     = LeadingBack
 INPUTS:
	Strings     string array or scalar  (read-only)
	Substr	    string scalar or array (read-only)
		If not specified the scalar Substr=',' (comma) is used
		Substring(s) to be searched for. If more than one
		substring is specified to position of the string with
		the lowest (highers if /last is set) index is returned.
 OPTIONAL INPUT PARAMETERS:
	/last	    if set, search is for the last occurence of Substr
		(similar to rstrpos; default is to search for the
		first occurence, similar to strpos)
	/frontdefault	if set, strings which do not contain Substr
		are returned in the Front array
		(by default these strings will be returned in Back)
	/trailingfront	if set, and Substr is found it will be attached to
		the end of the Front array (i.e. SubStr is used as a
		terminator).
	/leadingback	if set, and Substr is found it will be attached to the
		front of the Back array (i.e. Substr is used as a prefix)
 OUTPUTS:
	Index	    long integer array of same structure as Strings
		Contains the starting positions of SubStr (set to -1
		for strings not containing SubStr) i.e. same as for
		strpos and rstrpos
	Front	    string variable of same structure as Strings.
		Contains the sections of the strings preceding SubStr
		- includes Substr if Trailingfront is set
		- includes strings not containing SubStr if
		  Frontdefault is set
	Back	    string variable of same structure as Strings.
		Contains the sections of the strings following SubStr
		- includes Substr if Leadingback is set
		- includes strings not containing SubStr unless
		  Frontdefault is set
 OPTIONAL OUTPUT PARAMETERS:
	(None)
 INCLUDE:
	@compile_opt.pro		; On error, return to caller
 CALLS: ***
	InitVar, REVERSE, SyncDims, UNIQ
 CALLED BY:
	GetFileSpec, PutFileSpec, SetFileSpec, smei_TimePosn, timeposn
	www_help_crosslinks, www_help_make, www_help_names, www_help_tree
 SIDE EFFECTS:
	TrailingFront and LeadingBack are mutually exclusive. If both are
	present TrailingFront takes precedence.
 RESTRICTIONS:
	None
 PROCEDURE:
 MODIFICATION HISTORY:
	DEC-1997, Paul Hick (UCSD/CASS)
	MAR-2003, Paul Hick (UCSD/CASS)
	    Improved efficiency. Removed one of the two remaining explicit DO-loops,
	    made the second more compact.
	DEC-2007, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
	    Argument Substr can now be an array (used to be scalar only)


strreverse $SSW_SMEI_UCSD/gen/idl/toolbox/strreverse.pro
[Previous] [Next]
 NAME:
	strreverse
 PURPOSE:
	Reverse order of chars in string
 CATEGORY:
	gen/idl/toolbox
 CALLING SEQUENCE:
	FUNCTION strreverse, str
 INPUTS:
	str	scalar or array; type: string
 OUTPUTS:
	result	    same as input with order of chars
		in all strings reversed
 INCLUDE:
	@compile_opt.pro	; On error, return to caller
 CALLS: ***
	REVERSE
 CALLED BY:
	TimePosn_test, qsmei_sky_pick, smei_filename
 MODIFICATION HISTORY:
	DEC-2007, Paul Hick (UCSD/CASS; pphick@ucsd.edu)


SubArray $SSW_SMEI_UCSD/gen/idl/toolbox/subarray.pro
[Previous] [Next]
 NAME:
	SubArray
 PURPOSE:
	Extract/add/multiply subarrays in a multi-dimensional array
 CATEGORY:
	Array strangling
 CALLING SEQUENCE:
	R = SubArray(L) 	Extract subarray with dimension=0, element=0
	R = SubArray(L,add=1)	Add 1 to subarray with dimension=0, element=0
 INPUTS:
	L	    any multi-dimensional array
 OPTIONAL INPUT PARAMETERS:
	dimension=dimension scalar; type: integer
				identifies one of the dimensions, 0,..,(size(L))[0]-1
	/lastdimension	    selects the trailing dimension of L, i.e.
				equivalent to dimension=(size(L))[0]-1
				(/lastdimension takes precedence over the dimension keyword)

	If neither 'dimension' nor 'lastdimension' are used, then dimension=0 is assumed

	element=element     scalar; type: integer
				identifies one of the elements in the selected dimension,
				0,..,(size(L))[Dimension+1]-1
	/lastelement		selects the last element of the selected dimension, i.e.
				equivalent to element=(size(L))[Dimension+1]-1.

	If neither 'element' nor 'lastelement' are used, then element=0 is assumed

	add=add 	    scalar or array with same # elements as the subarray identified
				by (dimension, element). 'Add' will be added to the subarray.
	multiply=multiply   scalar or array with same # elements as the subarray identified
				by (dimension, element). 'multiply' will be multiplied to
				the subarray.'multiply' is executed prior to 'add'
	replace=Replace     replaces elements
				Takes precedence over 'add' and 'multiply'
	/clear		    sets elements to zero (numerical input) or null-string (string input)
				Take precedence over 'multiply'

	type=type	    makes a subarray of the appropriate type (filled with zeroes)

	If neither of 'type','add','multiply','replace' and 'clear'  is used, then
	the selected subarray will be extracted.
 OUTPUTS:
	If 'add' or 'multipy' or 'replace', or 'clear' are used:
	    Input array with the selected subarray modified.
	If 'type is set then a subarray of the selected type is returned
	Otherwise:
	    Array with one dimension less than the input array, corresponding
	    to the selected subarray.
 INCLUDE:
	@compile_opt.pro	; On error, return to caller
 CALLS: ***
	InitVar, IsType
 CALLED BY:
	AngleUnits, Carrington, CenterOfMass, CvPointOnLos, CvSky_Equatorial, CvSky_GSE
	CvSky_GSEQ, CvSky_GSM, CvSky_Geographic, CvSky_Heliographic, CvSky_IHG
	CvSky_Precess, CvSky_RTN, Distance2Line, EulerRotate, GeographicInfo, IPS_hlevel_w
	Inside_Wedge, RotationMeasure, ScEarth, TMO_skymotion, ThomsonBrightness
	TimeArray, TimeGet, cvsmei, img_read, jpl_parallax, jpl_phase, jpl_sizeofsun
	lsqCircleFit, lsqQuadraticFit, put_logo, qImage_cw_BoxCosine, smei_ccd2sky
	smei_radial2theta, smei_theta2radial, sphere_distance, sphere_smooth
	vu_atlocation, vu_cvgrid, vu_fnc, vu_type_insitu
 EXAMPLES:
	    L = indgen(2,3,4)
	    R = SubArray( L,  dimension=1, element=2)
		returns L[*,2,*] as an 2x4 array.
	    R = SubArray( L,  dimension=1, element=2, add=1)
		returns L with one added to L[*,2,*].
 PROCEDURE:
	Trivial
 MODIFICATION HISTORY:
	MAR-1998, Paul Hick (UCSD/CASS)
	OCT-2004, Paul Hick (UCSD/CASS)
	    Modifications to allow string input for /clear and /replace
	MAR-200r, Paul Hick (UCSD/CASS, pphick@ucsd.edu)
	    Added type=type keyword.


SuperArray $SSW_SMEI_UCSD/gen/idl/toolbox/superarray.pro
[Previous] [Next]
 NAME:
	SuperArray
 PURPOSE:
	Add a dimension to an array
 CATEGORY:
	Array strangling
 CALLING SEQUENCE:
	FUNCTION SuperArray, L, N, lead=Lead, trail=Trail, after=After, before=Before
 INPUTS:
	L	numerical scalar or array
	N	int scalar
		    # elements in the extra dimension
 OPTIONAL INPUT PARAMETERS:
	!!! dimensions are counted 1,..,size(L)

	/lead	new dimension is first dimension
	/trail	new dimension is last dimension
	after=After
		insert new dimension after dimension After
	before=Before
		insert new dimension before dimension Before
 OUTPUTS:
	Array with one dimension of N elements more than input variable
 INCLUDE:
	@compile_opt.pro	; On error, return to caller
 CALLS: ***
	IsType
 CALLED BY:
	AngleUnits, ColorEloTimeBox, ColorPolarBox, ColorSkybox, CvSky, CvSky_Equatorial
	CvSky_GSEQ, CvSky_GSM, CvSky_Geographic, CvSky_Heliographic, CvSky_IHG
	CvSky_Precess, Distance2Line, Distance2Sun, EarthSky3DLoc, EarthTransit3DLoc
	EulerRotate, FrameMoments, HOSOrbit, IPS_hlevel_w, MagnifyArray, PlotCoronagraph
	PlotEarthSkymap, PlotEloTimeMap, RGBO_DepthCue, RGBO_Project, RemoteView
	RemoteView_Display2D, RemoteView_Display3D, RemoteView_FOV
	RemoteView_Init_Matrix, RemoteView_Init_View, RemoteView_StereoStates
	SyncArgsSub, TMO_skymotion, TMO_tracksky, ThomsonLOSDensity, ThomsonLOSStep
	TimeArray, TimeGet, big_eph, even_light, even_light_corrections, even_light_info
	get_page, gridgen, img_read, jpl_mag, jpl_phase, lsqLinearFit, mpc_eph, mpc_orbit_eph
	plot3darc, plotcolumns, put_logo, qImage_cw_BoxCosine, qImage_cw_ZEllipse
	qView_FileFilter, qView_ModifyData, qView_PickFiles, qView_PlotSeries
	qView_SubtractBase, sgp4_eph, sgp4_tle, smei_findpnt, smei_frm_flatfield
	smei_frm_where, smei_radial2theta, smei_sky, smei_sky_track, sphere_distance
	sphere_smooth, unitvectors, vu_atlocation, vu_check, vu_coronagraph
	vu_earthskymap, vu_elotime, vu_extract, vu_lineofsight, vu_mean, vu_radialcut
	vu_read, vu_syncgrid, vu_synopticmap, vu_timeseries, wedge_content
 EXAMPLE:
	    R = SuperArray( indgen(3,4,5), 10, after=2)
	    creates an array R[3,4,10,5)
 PROCEDURE:
	The basic building block is the expression replicate(1,N)#L
	Reform and transpose are used to control the array structure.
 MODIFICATION HISTORY:
	MAR-1998, Paul Hick (UCSD/CASS)
	FEB-2000, Paul Hick (UCSD/CASS)
	    added handling of string arrays.
	JUN-2003, Paul Hick (UCSD/CASS, pphick@ucsd.edu)
	    Fixed bug adding to array with trailing dummy dimension.


SyncArgs $SSW_SMEI_UCSD/gen/idl/toolbox/syncargs.pro
[Previous] [Next]
 NAME:
   SyncArgs
 PURPOSE:
	Change a list of arguments (usually a combination of scalars and
	arrays) to a list of arrays of equal size.
 CALLING SEQUENCE:
	PRO SyncArgs, A0,A1,A2,A3,A4,A5,A6,A7,A8,A9
 INPUTS:
	A0,...,A9   any type of argument
 OUTPUTS:
	A0,...,A9   arguments of same size
 INCLUDE:
	@compile_opt.pro	; On error, return to caller
 CALLS: ***
	who_am_i
 CALLED BY:
	CombineRotations, EarthSky3DLoc, GeographicInfo, HOSOrbit, ThomsonLOSFar
	ThomsonLOSRomb, ThomsonMidpointFar, ThomsonPDistance, ThomsonPDistanceFar
	TimeMonth, TimeSet, TimeYDate, eclipsed_area, lsqCircleFit, lsqQuadraticFit
	nrZBrent, nrZbrac, scalarproduct, sgp4_orbit_period, smei_TimePosn, smei_filename
	smei_frm_mask, smei_sky_field, sphere_distance, sphere_great_arc, timeposn
	vectorproduct
 RESTRICTIONS:
	A maximum of 10 arguments is permitted
 PROCEDURE:
 >	Arguments that don't exist on input, will be created as type byte
	(unless none of the arguments exist)
 >	If no arrays are present a list of scalars is returned
 >	Arguments are changed to arrays with the same structure as the largest
	array in the list of arguments.
 >	If there is more than one such array, the first one in the list used
	as target. The others are reformed to match the target type
 >	Scalars and arrays with one element will always be changed to match
	the largest array.
 >	Arrays with size smaller than the target array are boosted to match
	the target array only if the dimensions are the same as the leading
	dimensions are the same as for the target array.
 MODIFICATION HISTORY:
	MAR-1995, Paul Hick (UCSD/CASS; pphick@ucsd.edu)


SyncArgsSub $SSW_SMEI_UCSD/gen/idl/toolbox/syncargssub.pro
[Previous] [Next]
 NAME:
	SyncArgsSub
 PURPOSE:
	Intenal use by SyncArgs only
 CALLING SEQUENCE:
	PRO SyncArgsSub, A0, N, s
 INCLUDE:
	@compile_opt.pro	; On error, return to caller
 CALLS: ***
	SuperArray
 MODIFICATION HISTORY:
	MAR-1995, Paul Hick (UCSD/CASS; pphick@ucsd.edu)


SyncDims $SSW_SMEI_UCSD/gen/idl/toolbox/syncdims.pro
[Previous] [Next]
 NAME:
	SyncDims
 PURPOSE:
	Reforms A to have the same size (scalar or array) as specified in Size
 CATEGORY:
	Toolbox
 CALLING SEQUENCE:
	SyncDims, A, sizeinfo = size(SomeVariable)
	SyncDims, A, extendinfo = size(SomeVariable)
	SyncDims, A, replicateinfo = [size(Array1), size(Array2),...]
 INPUTS:
	A	scalar or array of any type
 OPTIONAL INPUTS:
	sizeinfo    'size and type' vector as returned by the IDL
		    'size' function (only the size information is used)
 OUTPUTS:
	sizeinfo:
	    A	    input array with structure modified to match SizeInfo
		    (note: array content is not tampered with)
	extendinfo:
	    A
	replicateinfo:
	    A	    'size and type' vector, obtained by concatenating the
		    information from the input 'size and type' vectors.
 CALLED BY:
	AngleUnits, BZero, CenterOfMass, CvPointOnLos, Distance2Line, EulerRotate, FishEye
	GetFileSpec, HammerAitoff, MercatorProj, NewcombSun, RemoteView_FOV_loc
	SetFileSpec, TMO_skymotion, ThomsonLOSRomb, TimeInterpol, TimeSplit, TimeString
	coord3to2, cvsmei, nrZbrak, qImage_cw_Transform, scalarproduct, smei_ccd2sky
	smei_sky2cam, smei_sky2ccd, smei_sky_field, smei_zld_dumbbell, smei_zld_weekly
	sphere_distance, strposn, vectorproduct, vu_atlocation
 RESTRICTIONS:
	No check is made that Size actually represents a valid size vector.
 PROCEDURE:
	Used usually before exiting a procedure to make sure that
	input and output array have exactly the same structure.
 MODIFICATION HISTORY:
	DEC-1997, Paul Hick (UCSD/CASS; pphick@ucsd.edu)