⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 helio_rv.pro

📁 basic median filter simulation
💻 PRO
字号:
function helio_rv,HJD,T,P,V0,K,e,omega,single=single;+ ; NAME:;    HELIO_RV;; PURPOSE:;     Return the heliocentric radial velocity of a spectroscopic binary;; EXPLANATION:;    This function will return the heliocentric radial velocity of a ;    spectroscopic binary star at a given heliocentric Julian date (HJD) ;    given its orbit.;; CALLING SEQUENCE:;;  Result = HELIO_RV ( Reduced_HJD ,T ,Period ,Gamma , K, [,e ,Omega ] );; INPUT:;; Reduced_HJD   - Reduced_HJD of observation; T             - Reduced_HJD of periastron passage (max. +ve velocity;                 for circular orbits); Period        - the period in days; Gamma         - systemic velocity; K             - velocity semi-amplitude in the same units as Gamma.; e             - eccentricity of the orbit, default is 0.; Omega         - longitude of periastron in degrees. Must be specified for;                 eccentric orbits.;; OUTPUT:;;  The predicted heliocentric radial velocity in the same units as Gamma;  for the date(s) specified by Reduced_HJD.;; RESTRICTIONS:;;  To ensure consistency with the routines JULDATE and HELIO_JD, the;  reduced HJD must be used throughtout.;; EXAMPLES:;; Example 1;;  What was the heliocentric radial velocity of the primary component of HU Tau; at 1730 UT 25 Oct 1994?; ; IDL> juldate ,[94,10,25,17,30],JD                 ;Get Geocentric julian date; IDL> hjd = helio_jd(jd,ten(04,38,16)*15.,ten(20,41,05)) ; Convert to HJD; IDL> print, helio_rv(hjd,46487.5303D,2.0563056D,-6.0,59.3);      -63.661180;; NB. 1. The routines JULDATE and HELIO_JD return a reduced HJD (HJD - 2400000);        and so T and P must be specified in the same fashion.;     2. The user should be careful to use double precision format to specify;        T and P to sufficient precision where necessary. ; ; Example 2;;  Plot two cycles of an eccentric orbit, e=0.6, omega=45 for both;  components of a binary star;; IDL> phi=findgen(100)/50.0             ; Generates 100 phase points; IDL> plot, phi,helio_rv(phi,0,1,0,100,0.6,45),yrange=[-100,150]; IDL> oplot, phi,helio_rv(phi,0,1,0,50,0.6,45+180); ; This illustrates both the use of arrays to perform multiple calculations; and generating radial velocities for a given phase by setting T=0 and P=1.; Note also that omega has been changed by 180 degrees for the orbit of the; second component  (the same 'trick' can be used for circular orbits).;; ; MODIFICATION HISTORY:;;  Written by:  Pierre Maxted CUOBS, October, 1994;;  Circular orbits handled by setting e=0 and omega=0 to allow;  binary orbits to be handled using omega and omega+180.;                                                      Pierre Maxted,Feb 95;  BUG - omega was altered by the routine - corrected Feb 95,Pierre Maxted;  Iteration for E changed to that  given by Reidel , Feb 95,Pierre Maxted;  /SINGLE keyword removed.                           May 96,Pierre Maxted;;       Converted to IDL V5.0   W. Landsman   September 1997;-;;   ON_ERROR, 2   ; Return to caller;; Check suitable no. of parameters have been entered.;  if N_params() ne 5 and N_params() ne 7 then begin   print,'Syntax - Result = HELIO_RV (Reduced_HJD ,T ,Period ,Gamma, K)'   print,'         OR'   print,'         Result = HELIO_RV (Reduced_HJD ,T ,Period ,Gamma, K ,e ,Omega)'   print,'Further help - type doc_library,"HELIO_RV".' endif else begin;; Check reduced HJD has been used;  if (max(HJD) ge 1D5) then message,'Full HJD entered, use reduced HJD.'  if (T ge 1D5) then message,'T entered as full HJD, use reduced HJD.';; Circular orbits;  if not keyword_set(omega) and not keyword_set(e) then begin   e = 0.0   omega = 0.0  endif ;;; Calculate the approximate eccentric anomaly, E1, via the mean ; anomaly, M.; (from Heintz DW, "Double stars", Reidel, 1978); M=2.D*!dpi*( (HJD-T)/P MOD 1.) E1=M + e*sin(M)  + ((e^2)*sin(2.0D*M)/2.0D);; Now refine this estimate using  formulae given by Reidel.; i=0 repeat begin i=i+1  E0=E1   M0 = E0 - e*sin(E0)  E1 = E0 + (M-M0)/(1.0 - e*cos(E0))  TEST = max(abs( (E1-E0)/E1[where (E1 ne 0.0)])) endrep until TEST lt 1D-8;; Now calculate nu; nu=2.0D*atan(sqrt((1.D0 + e)/(1.D - e))*tan(E1/2.0D)); nu=nu+((nu<0D)*(2D*!dpi));; Can now calculate radial velocities; rv = (K*(cos(nu+!dtor*omega) + (e*cos(!dtor*omega))))+V0 return ,rv;; endelse;; end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -