; docformat = 'rst' ; ; NAME: ; yarko_to_mass ; PURPOSE: ; Compute the mass of an asteroid from its yarkovsky drift ;+ ; :Description: ; Compute the mass of an asteroid from its yarkovsky drift ; ; :Categories: ; Asteroid ; ; :Returns: The mass [in kg] ; ; :Params: ; ; :Keywords: ; period: in, required, type=float ; The rotation period of the asteroid (h) ; diameter: in, required, type=float ; The diameter of the asteroid (km) ; albedo: in, required, type=float ; The geometrical visible albedo of the asteroid ; inertia: in, required, type=float ; The thermal inertia of the asteroid (J m-2 s-1/2 K-1) ; meanMotion: in, required, type=float ; The asteroid orbital mean motion (/s) ; dSun: in, required, type=float ; The average distance to the Sun (au) ; obliquity: in, required, type=float ; The obliquity of the asteroid (deg) ; yarkovsky: in, required, type=float ; The detected Yarkovsky drift (1e-4 au/Myr) ; ; G: in, optional, type=float, default=0.15 ; The (phase) slope ; emissivity: in, optional, type=float, default=0.9 ; The emissivity of the surface ; beaming: in, optional, type=float, default=1.0 ; The beaming parameter ; ; :Examples: ; ; :Uses: ; ; ; :Author: ; B.Carry (OCA) ; ; :History: ; Change History:: ; Written in July 2018, B. Carry (OCA) ;- function yarko_to_mass, period=period, diameter=diameter, albedo=albedo, inertia=inertia, $ meanMotion=meanMotion, dSun=dSun, obliquity=obliquity, G=G, $ beaming=beaming, emissivity=emissivity, yarkovsky=yarkovsky COMPILE_OPT hidden, idl2 ;-----------------------------------------------------------------------------------------------; ;-----------------------------------------------------------------------------------------------; ;--- TAG --- I -- Initialization And Input Verification -----------------------; ;-----------------------------------------------------------------------------------------------; ;-----------------------------------------------------------------------------------------------; ;--I.1-- Test on Inputs ----------------------------------------------------------------------; if not keyword_set(period) or $ not keyword_set(diameter) or $ not keyword_set(albedo) or $ not keyword_set(inertia) or $ not keyword_set(dSun) or $ not keyword_set(obliquity) or $ not keyword_set(meanMotion) or $ not keyword_set(yarkovsky) then begin print, 'period ', keyword_set(period) print, 'diameter ', keyword_set(diameter) print, 'albedo ', keyword_set(albedo) print, 'inertia ', keyword_set(inertia) print, 'dSun ', keyword_set(dSun) print, 'obliquity ', keyword_set(obliquity) print, 'meanMotion ', keyword_set(meanMotion) print, 'yarkovsky ', keyword_set(yarkovsky) message, /ioError, 'Missing parameter!' return, 0 endif ;--I.2-- Default Values ----------------------------------------------------------------------; if not keyword_set(G) then G=0.15 if not keyword_set(emissivity) then emissivity=0.9 if not keyword_set(beaming) then beaming=1.0 ;--I.3-- Physical Constant -------------------------------------------------------------------; cSpeed = 299792458.D ;- m s-1 au = 149597870700.D ;- m solCst = 1360.8 ;- W m-2 stefBolt= 5.67e-8 ;- W m-2 K-4 ;-----------------------------------------------------------------------------------------------; ;-----------------------------------------------------------------------------------------------; ;--- TAG --- II -- Computation of Yarkovsky -----------------------; ;-----------------------------------------------------------------------------------------------; ;-----------------------------------------------------------------------------------------------; ;--II.1-- Subsolar Temperature ---------------------------------------------------------------; bond = albedo*(0.29+0.684*G) Tss = ( (1-bond)*solCst / ( dSun*dSun*beaming*stefBolt*emissivity) )^0.25 ;ok ok ;--II.2-- Rotation Frequency -----------------------------------------------------------------; rotFreq = 2*!PI/(period*3600.) ; rotFreq = 1/(period*3600.) ;--II.3-- Diurnal Contribution ---------------------------------------------------------------; ThetaD = inertia* sqrt(rotFreq) / ( beaming*emissivity*stefBolt* Tss^3.) WD = -0.5*ThetaD / (1 + ThetaD + ThetaD*ThetaD/2.) ;--II.4-- Annual Contribution ----------------------------------------------------------------; ThetaA = inertia* sqrt(meanMotion) / ( beaming*emissivity*stefBolt* Tss^3.) WA = -0.5*ThetaA / (1 + ThetaA + ThetaA*ThetaA/2.) ; meanMotion*=2*!PI ;--II.4-- Compute Yarkovsky Drift ------------------------------------------------------------; ; mass = ( solCst/ (dSun*dSun) ) * $ ; ( (1-bond) / meanMotion ) * $ ; (!PI*diameter*diameter*(1e6)/ cSpeed) * $ ; ; ( -2.*WD* cos(obliquity*!DTOR) /9. + $ ; WA*(sin(obliquity*!DTOR)^2.)/9 ) / $ ; ( yarkovsky * 1e-10 * au / (365.2524*86400.) ) ; ; mass = ( (1-bond) * (!PI*diameter*diameter*1e6)* solCst ) * $ ; ( WA*(sin(obliquity*!DTOR))^2. -2.*WD*cos(obliquity*!DTOR) ) / $ ; ( 9 * (dSun*dSun) * meanMotion * cSpeed) * ( yarkovsky * 1e-10 * au / (365.2524*86400.) ) ;yarko in 1e-4 au/Myrs -> ^1e-6 -> au/years -> *au/ 365days*86400 -> m/s dadt = ( yarkovsky * 1e-10 * au / (365.2524d*86400.) ) t1= ( (1-bond) * (!PI*diameter*diameter*1e6)* solCst ) t2= ( WA*(sin(obliquity*!DTOR))^2. -2*WD*cos(obliquity*!DTOR) ) t3= ( 9 * (dSun*dSun) * meanMotion * cSpeed) * dadt ;yarko in 1e-4 au/Myrs -> ^1e-6 -> au/years -> *au/ 365days*86400 -> m/s mass=t1*t2/t3 vol=(!PI*diameter*diameter*diameter*1e9)/6. ; print, 'freqs ',period, rotFreq ; print, 'Ws ', Wd, Wa ; print, 'Ws* ', WA*(sin(obliquity*!DTOR))^2., -2*WD*cos(obliquity*!DTOR) ; print, 'temp ', TSS ; print, '' ; print, 't1 ',( (1-bond) * (!PI*diameter*diameter*1e6)* solCst ) ; print, 't2 ', ( WA*(sin(obliquity*!DTOR))^2. -2.*WD*cos(obliquity*!DTOR) ) ; print, 't3 ', ( 9 * (dSun*dSun) * meanMotion * cSpeed) * dadt ; print, 'mass ', mass ; print, 'volume ', vol ; print ,'' ; print, 'obli ',obliquity ; print, 'diam ',diameter ; print, 'dadt ',yarkovsky ; print, 'inertia ', inertia ; print, 'density ',mass/vol ; print, '' ;stop ;--II.5-- Return Yarkovsky Drift -------------------------------------------------------------; return, mass end