Диссертация (1105240), страница 17
Текст из файла (страница 17)
4–5. P. 205 –211.95. Desai P. D. Thermodynamic Properties of Iron and Silicon // Journal ofPhysical and Chemical Reference Data. 1986. Vol. 15, no. 3. P. 967–983.96. Ho C. Y., Powell R. W., Liley P. E. Thermal conductivity of the Elements:A Comprehensive Review // Journal of Physical and Chemical ReferenceData. 1974. Vol. 3, no. supplement 1. P. 588.97. Swenson C. A. Recommended Values for the Thermal Expansivity of Silicon from 0 to 1000 K // Journal of Physical and Chemical Reference Data.1983.
Vol. 12, no. 2. P. 179–182.98. Oliver W. C., Pharr G. M. Measurement of hardness and elastic modulusby instrumented indentation: Advances in understanding and refinementsto methodology // Journal of Materials Research. 2004. Vol. 19. P. 3–20.99. Yamamoto K., Miyoki S., Uchiyama T. et al. Measurement of the mechanical loss of a cooled reflective coating for gravitational wave detection //Phys. Rev. D. 2006. Vol. 74.
P. 022002.100. Gwo D.-H. Ultraprecision bonding for cryogenic fused-silica optics //Proc.SPIE. 1998. Vol. 3435. P. 3435 – 3435 – 7.101. Prokhorov L. G., Koptsov D. V., Matiushechkina M. S., MitrofanovV. P., Haughian K., Hough J., Rowan S., Van Veggel A. A., Murray P. G., Hammond G. D., Tokmakov K. Upper limits on the112mechanical loss of silicate bonds in a silicon tuning fork oscillator // Physics Letters A.2017, Available online 12 July 2017http://www.sciencedirect.com/science/article/pii/S0375960117302359.102.
Phelps M., van Veggel A. A., Haughian K. et al. Hydroxide catalysis bonds:Young’s modulus and thermal noise // LIGO Technical Note G1601704.2016. DCC: https://dcc.ligo.org/G1601704.103. Levin Y. Internal thermal noise in the LIGO test masses: A direct approach // Phys. Rev. D. 1998. Vol. 57. P. 659–663.104. Callen H. B., Welton T.
A. Irreversibility and Generalized Noise // Phys.Rev. 1951. Vol. 83. P. 34–40.105. CoyneD.,WillemsP.ThermalNoiseIncreasedueGold Coated Barrel // LIGO Technical Note T080003.toa2008.DCC: https://dcc.ligo.org/T080003/public.106. Harry G., Bodiya T. P., DeSalvo R. Optical Coatings and Thermal Noisein Precision Measurement. 1 edition. Cambridge: Cambridge UniversityPress, 2012. P. 75. ISBN: 9781107003385.113Приложение АИсходный код цифровой обработки сигналаА.1. Реализация метода Уэлча на языке С++ сиспользованием библиотеки fftw12// e r r o r and i n c o r r e c t p a r a m e t e r s c h e c k s a r e omitted f o r s i m p l i c i t y3b o o l Q f f t w H e l p e r : : p r e p a r e S i m p l e ( i n t FS , i n t N, Window win )4{clear () ;567m_FS = FS ;8data_step = d a t a _ s i z e = d a t a _ s t a r t = c_data_size = 0 ;9window_size = N;10r e t u r n p r e p a r e C o r e ( win ) ;1112}13b o o l Q f f t w H e l p e r : : p r e p a r e C o r e (Window win )141516{i n t f f t _ o u t _ s i z e = window_size /2 + 1 ;1718m_in_array = ( double * ) f f t w _ m a l l o c ( s i z e o f ( double ) * window_size ) ;19m_out_array = ( fftw_complex * ) f f t w _ m a l l o c ( s i z e o f ( fftw_complex ) *fft_out_size ) ;2021m_freqs = new double [ f f t _ o u t _ s i z e ] ;22m_psd = new double [ f f t _ o u t _ s i z e ] ;2324f o r ( i n t i =0; i <f f t _ o u t _ s i z e ;++ i )25{26m_freqs [ i ] = i *m_FS/ double ( window_size ) ;114m_psd [ i ] = 0 .
;27}2829m_window = new double [ window_size ] ;303132wS1 = wS2 = 0 ;33d ouble tmp ;34f o r ( i n t i =0; i <window_size;++ i )35{36tmp = window ( win , window_size , i ) ;37wS1+=tmp ;38wS2+=tmp*tmp ;39m_window [ i ] = tmp ;}4041wENBW = m_FS*wS2 / ( wS1*wS1 ) ;4243m_plan = fftw_plan_dft_r2c_1d ( window_size , m_in_array , m_out_array44, FFTW_ESTIMATE) ;return true ;4546}4748v o i d Q f f t w H e l p e r : : simpleFFT ( c o n s t double * i n p u t )49{50i n t i =0;51i n t f f t s = window_size /2 + 1 ;52d ouble f f t _ c o e f f = 2 . / (m_FS*wS2 ) ;53f o r ( i =0; i <window_size;++ i )54{m_in_array [ i ] = ( * ( i n p u t++)) * m_window [ i ] ;5556}57f f t w _ e x e c u t e ( m_plan ) ;58f o r ( i =0; i < f f t s ;++ i )59{60m_psd [ i ] = f f t _ c o e f f * fftw_complex_abs2 ( m_out_array [ i ] ) ;115}6162}6364b o o l MainThreadWorker : : rawPRMsubblockFFT ( c o n s t QString& f i l e P a t e r n ,i n t block , i n t s u b b l o c k )6566{QList<QPointD > m o n i t o r _ f r e q s = getFreqRange ( prm_params .
f f t _ f r e q s );67QfftwHelper f f t _ h e l p e r ;68i n t FS ;69i n t sampleCount , stepCount ;70uint32_t samplesRead ;71c o n s t double * f r e q s ;72c o n s t double * psd ;73int fft_size , fft_count ;74RawFileReader : : SubblockReadInfo r e a d I n f o ;75PRMConverter c o n v e r t e r = MainWindow : : makeConverter ( s e t ) ;7677c o n s t PRMRawFile : : ChannelMapping& chmap = rawPrmReader .channelMapping ( ) ;78QList<i n t > normdInds = QList<i n t >()<<chmap . a m p l i f 1 <<chmap . a m p l i f 2<<chmap . phd1<<chmap .
phd2 ;79FS = rawPrmReader . getSamplingFrequency ( b l o c k ) ;80sampleCount = prm_params . fft_sample_time *FS ;81stepCount = Q f f t w H e l p e r : : windowStep ( Q f f t w H e l p e r : : HFT248D ,sampleCount ) ;8283rawPrmReader . prepareReadData ( block , subblock , RawFileReader : :Output_NormDiff , normdInds , - 1 ,readInfo )848586f f t _ h e l p e r . p r e p a r e S i m p l e ( FS , sampleCount , Q f f t w H e l p e r : : HFT248D) ;8788freqs = fft_helper .
frequencies () ;89psd = f f t _ h e l p e r . psd ( ) ;11690fft_size = fft_helper . f f t S i z e () ;91f o r ( i n t k=0;k<f f t _ h e l p e r . f f t S i z e ( ) ;++k )92{93i f ( f r e q s [ k]>=prm_params . fft_max_freq )94{95fft_size = k;96break ;}9798}99100// ///101SmartArray<double> normd_data ( sampleCount ) , b u f f e r ( sampleCount *readInfo . channels ) ;102SmartNumberArray<double> o u t _ f f t ( f f t _ s i z e ) ;103104d ouble fmain = 0 ;105106QFile m f f t _ f i l e ( QString ( f i l e P a t e r n+s b F i l e P a t ( block , s u b b l o c k )+" normd - s t %1- Mfft .
praw" ). a r g ( qRound ( prm_params . fft_sample_time ) ) ) ;107108m f f t _ f i l e . open ( QFile : : WriteOnly ) ;109QTextStream ostm ;110111samplesRead = sampleCount ;112rawPrmReader . doReadSubblock ( r e a d I n f o , samplesRead , b u f f e r . p o i n t e r ( ) ,normd_data . p o i n t e r ( ) ) ;113a p p l y L u mi n o s it y ( normd_data . p o i n t e r ( ) , samplesRead , prm_params .lumin_val ) ;114115f f t _ h e l p e r .
simpleFFT ( normd_data . p o i n t e r ( ) ) ;116o u t _ f f t . cp ( psd ) ;117fft_count = 1;118119fmain = f r e q s [ maxIndex ( psd+f m a i n _ o f f s e t , fmain_last - f m a i n _ o f f s e t )+fmain_offset ] ;117120121w h i l e ( r e a d I n f o . samplesRead < r e a d I n f o .
dataCount )122{memmove( normd_data . p o i n t e r ( ) , normd_data . p o i n t e r ( )+stepCount ,123( sampleCount - stepCount ) * s i z e o f ( double ) ) ;124125samplesRead = stepCount ;126rawPrmReader . doReadSubblock ( r e a d I n f o , samplesRead , b u f f e r .pointer () ,normd_data . p o i n t e r ( )+sampleCount -127stepCount ) ;128i f ( samplesRead != stepCount )129{break ;130131}132a p pl y L u mi n o s it y ( normd_data . p o i n t e r ( )+sampleCount - stepCount ,samplesRead , prm_params .
lumin_val ) ;133134f f t _ h e l p e r . simpleFFT ( normd_data . p o i n t e r ( ) ) ;135o u t _ f f t . add ( psd ) ;136fmain += f r e q s [ maxIndex ( psd+f m a i n _ o f f s e t , fmain_last f m a i n _ o f f s e t )+f m a i n _ o f f s e t ] ;++f f t _ c o u n t ;137138}139fmain /= f f t _ c o u n t ;140141ostm . s e t D e v i c e (& m f f t _ f i l e ) ;142ostm<<"#F␣ S_theta ␣S_M\n#Hz␣ rad ^2/Hz␣Nm^2/Hz\n#FS : "<<FS143<<"␣ENBW: ␣"<<f f t _ h e l p e r . enbw ( )<<"␣F0 : "<<fmain144<<"␣Uhv : "<<rawPrmReader . getSubblockUhv ( block , s u b b l o c k )<<"␣Q: "<<c o n v e r t e r .
c o e f f _ q145<<"␣Nwin : "<<sampleCount146<<"\n#S t a r t e d : ␣"<<QMat : : toMatlabDateTime ( rawPrmReader .getBlockTime ( b l o c k ) . addMSecs ( r e a d I n f o . s t a r t T i m e *1000) ) ;147148ostm . setRealNumberNotation ( QTextStream : : S c i e n t i f i c N o t a t i o n ) ;118149ostm . s e t R e a l N u m b e r P r e c i s i o n ( 8 ) ;150f o r ( i n t k=1;k<f f t _ s i z e ;++k )151{152ostm<<"\n"<<f r e q s [ k]<<"␣" ;153o u t _ f f t [ k]*= PRMSetupConstants : : kNormdToTheta *PRMSetupConstants : : kNormdToTheta /fft_count ;154ostm<<o u t _ f f t .
a t ( k )<<"␣"<<c o n v e r t e r . psdThetaToM ( o u t _ f f t . a t ( k ) ,155f r e q s [ k ] , fmain ) ;}156157return true ;158159}А.2. Библиотека для связи сред С++ и Matlab черезбинарный файл в формате Matlab12s t r u c t QMATWRITESHARED_EXPORT ArrayFlags3{4ArrayFlags ( ) : d a t a _ c l a s s (mxDOUBLE_CLASS) , f l a g s ( 0 ) {}5e x p l i c i t ArrayFlags ( MatrixDataClass a r r _ c l a s s ) : d a t a _ c l a s s (a r r _ c l a s s ) , f l a g s (1<<2){}67MatrixDataClass d a t a _ c l a s s ;8uint8_t f l a g s ;910s t a t i c c o n s t uint32_t k A r r a y F l a g s F u l l S i z e B y t e s = 1 6 ;1112v o i d output ( s t d : : o f s t r e a m& ostm )13{14uint32_t a r r a y _ f l a g s _ t y p e = miUINT32 ;15write_value_native <uint32_t >(&ar ray_ fla gs_ typ e , ostm ) ;11916uint32_t a r r a y _ f l a g s _ s i z e = 8 ;17write_value_native <uint32_t >(&a r r a y _ f l a g s _ s i z e , ostm ) ;18uint32_t v a l = ( ( ( uint32_t ) f l a g s )<<8) | ( ( uint32_t )data_class ) ;19write_value_native <uint32_t >(&val , ostm ) ;20val = 0;21write_value_native <uint32_t >(&val , ostm ) ;22}2324b o o l i n p u t ( s t d : : i f s t r e a m& istm , b o o l need_swapping )25{26// assumes istm has 16 bytes , no check ;27i f ( read_uint32 ( istm , need_swapping ) != miUINT32 )28{29// wrong type30return f a l s e ;}313233i f ( read_uint32 ( istm , need_swapping ) != 8 )34{35// wrong s i z e36return f a l s e ;}373839uint32_t f l a g s _ v a l = read_uint32 ( istm , need_swapping ) ;40f l a g s = ( ( f l a g s _ v a l >> 8 )&0xFF) ;41d a t a _ c l a s s = ( MatrixDataClass ) ( f l a g s _ v a l & 0xFF) ;42f l a g s _ v a l = read_uint32 ( istm , need_swapping ) ;43return true ;44}4546b o o l complex ( ) c o n s t47{r e t u r n ( f l a g s & (1<<3) ) ;4849}1205051bool global () const52{r e t u r n ( f l a g s & (1<<2) ) ;53}545556bool l o g i c a l () const57{r e t u r n ( f l a g s & (1<<1) ) ;58}5960};6162v o i d QMatFile : : s t a r t M a t r i x ( MatrixDataClass c l a s s _ t y p e , c o n s t QString&name , DataTypeTag data_type )63{64current_matrix_data_count = 0 ;65current_data_type = data_type ;6667QByteArray name_utf8 = name .
t o U t f 8 ( ) ;68current_name_size = name_utf8 . s i z e ( ) ;6970uint32_t matrix_type = miMATRIX;71write_value_native <uint32_t >(&matrix_type , ostm ) ;7273uint32_t m a t r i x _ s i z e =0;74current_matrix_size_pos = ostm . t e l l p ( ) ;75write_value_native <uint32_t >(&m a t r i x _ s i z e , ostm ) ;7677A rr ayFlags f l a g s ( c l a s s _ t y p e ) ;78f l a g s . output ( ostm ) ;7980uint32_t dim_array [ ] = { 0 , 1 } ;81writeDataElement<uint32_t >(miINT32 , dim_array , 2 , ostm ) ;82121writeDataElement<char >(miINT8 , name_utf8 . constData ( ) , name_utf8 .83s i z e ( ) , ostm ) ;8485uint32_t type_cast = s t a t i c _ c a s t <uint32_t >(data_type ) ;86write_value_native <uint32_t >(&type_cast , ostm ) ;8788type_cast = 0 ;89write_value_native <uint32_t >(&type_cast , ostm ) ;90}9192t e m p l a t e <typename T> v o i d QMatFile : : appendDataToMatrix ( c o n s t T* array, uint32_t a r r a y _ s i z e )93{ostm .