This page was created by the IDL library routine
mk_html_help2
.
Last modified: Wed Apr 14 11:49:06 2010.
NAME: SEGMENT_TEST.PRO PURPOSE: Check a spinmodel segment structure to ensure that the model parameters b and c are consistent with the start and end times and spin counts CATEGORY: TDAS CALLING SEQUENCE: segment_test,probe,segment,result INPUTS: probe: A single character probe letter (only used in output messages). segment: A spinmodel_segment structure. OUTPUTS: result: 0 for failure, 1 for success KEYWORDS: None. PROCEDURE: Calls segment_interp_t to get spin count and spin phase at segment start/end times. Calls segment_interp_n to get sun pulse times of segment start/end counts. Cross check results of segment_interp_t and segment_interp_n, verifying that interp_t and interp_n results are consistent within modest tolerances (100 usec for times, 0.1 deg for phase angles). Check maxgap field against 4-hour threshold; large gaps are likely a result of missing data. EXAMPLE: mptr=spinmodel_get_ptr('a') sptr=(*mptr).segs_ptr segment_test,'a',(*sptr)[0],result Written by: Jim Lewis (jwl@ssl.berkeley.edu) Change Date: 2007-10-08
(See themis/spin/segment_test.pro)
NAME: SPINMODEL_GET_INFO.PRO PURPOSE: Given a probe string or spinmodel pointer, return information about the valid time range or shadow times. CATEGORY: TDAS CALLING SEQUENCE: spinmodel_get_info,model=modelptr,min_shadow_duration=min_shadow_duration,$ shadow_count=shadow_count, $ shadow_start=shadow_start,shadow_end=shadow_end,$ start_time=start_time, end_time=end_time INPUTS: Model: pointer to s spinmodel structure Probe: a string identifying the probe. The caller must specify either a model pointer or probe string. min_shadow_duration: Optional parameter specifying the minimum gap between BAU sun sensor crossing times to be considered a shadow interval. Defaults to 60.0 sec. OUTPUTS: (all optional) shadow_count: Number of shadow intervals found. shadow_start: Double precision array of shadow start times. shadow_end: Double precision array of shadow end times. start_time: Double precision scalar indicating start time of loaded spinmodel data end_time: Double precision scalar indicating end time of loaded spinmodel data PROCEDURE: Shadow intervals consist of spinmodel segments where the "maxgap" parameter exceeds the min_shadow_duration threshold. Start time is the start time of the first segment. End time is the end time of the last segment. If no spinmodel data is loaded for the requested probe, start_time = end_time = 0.0D. If no shadows are found, shadow_count is set to zero and no start/end times are returned. EXAMPLE: timespan,'2007-03-23',1,/days thm_load_state,probe='a',/get_support_data spinmodel_get_info,probe='a',shadow_count=shadow_count,$ shadow_start=shadow_start, shadow_end=shadow_end,$ start_time=start_time,end_time=end_time
(See themis/spin/spinmodel_get_info.pro)
NAME: SPINMODEL_GET_PTR.PRO PURPOSE: Returns a pointer to the spin model, specified by a single letter probe designation ('a' through 'f'). This is to avoid having to define the spinmodel common block all over the place. CATEGORY: TDAS CALLING SEQUENCE: model_ptr=spinmodel_get_ptr('a') INPUTS: probe: A scalar character, one of 'a' through 'f', specifying which model pointer to return. OUTPUTS: model_ptr: The return value is a pointer to the specified spin model, suitable for passing to the other spinmodel manipulation routines. KEYWORDS: None. PROCEDURE: Test probe argument for validity; return appropriate value from the spinmodel_common block. EXAMPLE: model_ptr=spinmodel_get_ptr('a') spinmodel_test,model_ptr Written by: Jim Lewis (jwl@ssl.berkeley.edu) Change Date: 2007-10-08
(See themis/spin/spinmodel_get_ptr.pro)
NAME: SPINMODEL_INTERP_N.PRO PURPOSE: Given a spin model and spin count (or array of counts), calculate the sun pulse time and spin period at each input count. CATEGORY: TDAS CALLING SEQUENCE: spinmodel_interp_n,model=modelptr,count=input_counts,$ time=output_times, spinper=output_spinper INPUTS: Model: pointer to a spinmodel structure Count: A long integer (or long integer array) specifying the spin count to use. If the input is a scalar, all outputs will be scalars; otherwise, all outputs are arrays having the same size as the input counts. OUTPUTS: spinper: Optional keyword parameter to receive spin period values. time: Optional keyword parameter to receive sun pulse time of each input count. KEYWORDS: /MODEL: Required input keyword argument, specifying a pointer to a spinmodel structure. /COUNT: Required input keyword argument specifying a time or array of times. /SPINPER: Optional keyword argument to receive spin period values. /TIME: Optional keyword argument to receive sun pulse times. PROCEDURE: Find the spinmodel segment containing the input spin count. Invert phi(t) function to find time corresponding to this count. Use b and c segment parameters to determine the spin period at the sunpulse time. EXAMPLE: ; Retrieve first 100 sun pulse times included in model for THA: modelptr=spinmodel_get_ptr('a') spinmodel_interp_n,model=modelptr,count=lindgen(100),time=output_times
(See themis/spin/spinmodel_interp_n.pro)
NAME: SPINMODEL_INTERP_T.PRO PURPOSE: Given a spin model and time (or array of times), calculate the spin count, spin phase, spin period, and time of last sun pulse for each input time. CATEGORY: TDAS CALLING SEQUENCE: spinmodel_interp_t,model=modelptr,time=input_times,$ spincount=output_spincount, spinper=output_spinper,$ t_last=output_sun_pulse_times INPUTS: Model: pointer to s spinmodel structure Time: A double precision scalar or array specifying the input times. If the input is a scalar, all outputs will be scalars; otherwise, all outputs are arrays having the same size as the input times. OUTPUTS: spinper: Optional keyword parameter to receive spin period values. tlast: Optional keyword parameter to receive sun pulse time immediately preceding each input time. spincount: Optional keyword parameter to receive count of spins since the start of the model. spinphase: Optional keyword parameter to receive the spin phase (ranging from 0.0 to 360.0 degrees) at each input time. KEYWORDS: /MODEL: Required input keyword argument, specifying a pointer to a spinmodel structure. /TIME: Required input keyword argument specifying a time or array of times. /SPINPER: Optional keyword argument to receive spin period values. /T_LAST: Optional keyword argument to receive sun pulse times /SPINCOUNT: Optional keyword argument to receive spin counts /SPINPHASE: Optional keyword argument to receive spin phase PROCEDURE: Find the spinmodel segment containing the input time. Use b and c segment parameters to determine the spin period, spin phase, and spin count at each input time Invert phi(t) function to find sun pulse time immediately preceding each input time. EXAMPLE: ; Assume 'input_times' and 'input_spinphase' already exist as a ; IDL variables -- perhaps obtained from thm_load_state. ; ; Get a pointer to the spin model for probe A modelptr=spinmodel_get_ptr('a') ; Calculate spin phase at each time from spin model spinmodel_interp_t,model=modelptr,time=input_times,spinphase=output_spinphase ; Calculate spinphase differences between spin model and state phi_diff=output_spinphase-input_spinphase ; Fix wraparounds i=where(phi_diff GT 180.0D) i2=where(phi_diff LT -180.0D) phi_diff[i] = phi_diff[i] - 360.0D phi_diff[i2] = phi_diff[i2] + 360.0D Plot results plot,input_times,phi_diff
(See themis/spin/spinmodel_interp_t.pro)
Function: spinmodel_post_process Purpose: Performs post-load corrections on spinmodel data. Notes: Somewhat finicky about data requirements. Will throw an error that causes interpreter to halt unless the error is explicitly caught. Error's will be returned in the SPINMODEL_POST_PROCESS message block. If you find execution halted here and you aren't sure why, it is probably because the state support data was not loaded. This occurs most commonly because 1. there is no data available on this day, or 2. because of internet connection issues, 3. because the !themis.no_download flag is on. $LastChangedBy: jwl $ $LastChangedDate: 2009-07-14 15:34:26 -0700 (Tue, 14 Jul 2009) $ $LastChangedRevision: 6432 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/thmsoc/tags/tdas_5_21/idl/themis/spin/spinmodel_post_process.pro $
(See themis/spin/spinmodel_post_process.pro)
NAME: SPINMODEL_TEST.PRO PURPOSE: Perform consistency checks on a spin model. CATEGORY: TDAS CALLING SEQUENCE: spinmodel_test,model_ptr INPUTS: model_ptr: A pointer to a spinmodel structure, obtained from the spinmodel_common block or the spinmodel_get_ptr() function. This input must be a scalar. OUTPUTS: Prints "PASS"/"FAIL" messages depending on outcome of tests. KEYWORDS: None. PROCEDURE: Validate model_ptr input argument. Compare spin model capacity to actual number of segments. Validate pointer to model segments. Call segment_test on each model segment, check for any failures. Examine boundaries of adjacent segments, making sure time and spin_number endpoints are identical across each pair. Exercise spinmodel_interp_n by retrieving modeled sun pulse times by spin number. Exercise spinmodel_interp_t by recalculating the spin count and spin phase at each modeled sun pulse time. Cross check results of spinmodel_interp_n and spinmodel_interp_t to verify that the expected values are produced within modest tolerances (allowable phase error .01 deg at each modeled sun pulse time). EXAMPLE: model_ptr=spinmodel_get_ptr('a') spinmodel_test,model_ptr Written by: Jim Lewis (jwl@ssl.berkeley.edu) Change Date: 2007-10-08
(See themis/spin/spinmodel_test.pro)
Procedure: THM_LOAD_SPIN Purpose: Loads THEMIS spin model parameters, performs some post-processing of data loaded from the SPIN CDFs, and stashes the resulting spin model in a common block. keywords: probe = Probe name. The default is 'all', i.e., load all available probes. This can be an array of strings, e.g., ['a', 'b'] or a single string delimited by spaces, e.g., 'a b' Flatsat data (probe 'f') is not returned unless explicitly mentioned. datatype = The type of data to be loaded, can be an array of strings or single string separate by spaces. The default is 'all' TRANGE= (Optional) Time range of interest (2 element array), if this is not set, the default is to prompt the user. Note that if the input time range is not a full day, a full day's data is loaded level = the level of the data, the default is 'l1', or level-1 data. A string (e.g., 'l2') or an integer can be used. 'all' can be passed in also, to get all levels. CDF_DATA: named variable in which to return cdf data structure: only works for a single spacecraft and datafile name. VARNAMES: names of variables to load from cdf: default is all. /GET_SUPPORT_DATA: load support_data variables as well as data variables into tplot variables. /DOWNLOADONLY: download file but don't read it. /valid_names, if set, then this routine will return the valid probe, datatype and/or level options in named variables supplied as arguments to the corresponding keywords. files named varible for output of pathnames of local files. /VERBOSE set to output some useful info Example: thm_load_spin,probe=['a','b'] Written by: Jim Lewis (jwl@ssl.berkeley.edu) Change Date: 2007-10-08
(See themis/spin/thm_load_spin.pro)