c*************************************************************************** c c PROGRAM MASTERBUILD (20.12.2010) c VERSION FOR UCLES DATA c this program creates the mastertable for the pure c stellar spectrum in equidistant sorted wavenumbers (like c the Iodine mastertable, same stepsize) c by linear interpolation of the splined & deconvolved spectrum c c*************************************************************************** c c also working with the inputfile "input_master" c c*************************************************************************** IMPLICIT NONE INTEGER maxsiz PARAMETER (maxsiz=300000) REAL*8 wavent(maxsiz),fluxt(maxsiz) INTEGER indext,i,k,l,size,lr,irec REAL*8 waven,wavel,step,flux,flux1,flux2 REAL*8 wavel1,wavel2,step_wl,factor REAL*8 diff_wl,diff_flux,rest_wl,rest_flux REAL*8 interflux CHARACTER*30 filename1,filename2,dummy,key INTEGER n_pixel,index c*************************************************************************** write(*,*) write(*,*) write(*,*)'================================================' write(*,*) write(*,*)' ***** UCLES ****' write(*,*) write(*,*)' MASTER BUILD !!! (c) Bilz y Pap 21.5.2002' write(*,*) write(*,*)'================================================' write(*,*) c*************************************************************************** c UCLES: step=-0.13542175293D-02 c HRS: c step=-0.1334083214D-02 c cs23: c step=-0.140941395875416D-02 c CES: c step=-0.140982175D-02 c different stepsizes in the UVES I2 mastertab: c -0.133408318106376E-02 c -0.133408318106376E-02 c -0.133408317924477E-02 c -0.133408317924477E-02 c -0.133408317924477E-02 c -0.133408318106376E-02 c step=-0.133408318D-02 c different stepsizes in the CES IODINE mastertab: c -0.140982159427949E-02 c -0.140982151788194E-02 c -0.140982155789970E-02 c -0.140982189623173E-02 c -0.140982196535333E-02 c*************************************************************************** open(13,file='input_master',type='old') read(13,*)filename1 write(*,*)'Reading from file:',filename1 read(13,*)n_pixel write(*,*)'Number of Pixels:',n_pixel read(13,*)filename2 write(*,*)'Name of mastertab file:',filename2 c*************************************************************************** open(14,file=filename1,type='old') open(15,file=filename2) index=0 c*************************************************************************** c------- c first record: read(14,*)wavel1,flux1 cc write(*,*) cc write(*,*)' FIRST RECORD: WAVEL1, FLUX1=' cc write(*,100) wavel1,flux1 cc waven = 1 / (wavel1*1.E-08) cc write(*,100) waven cc write(15,100)waven,flux1 write(15,100)wavel1,flux1 index=index+1 cc waven = waven + step waven = wavel1 + step cc write(*,*)'NEW WAVEN should be=' cc write(*,100) waven read(14,*,END=8000)wavel2,flux2 500 CONTINUE c------- if (waven.lt.wavel2) then cc write(*,*)'..ok, its smaller than wavel2...' wavel1=wavel2 flux1=flux2 read(14,*,END=8000)wavel2,flux2 GOTO 500 end if c------- diff_wl = wavel2 - wavel1 step_wl = waven - wavel1 cc write(*,*)'Difference in wavelength (wavel2-wavel1):' cc write(*,100) diff_wl cc write(*,*)'Correct position (wanted wavel-wavel1):' cc write(*,100) step_wl if (diff_wl.eq.0.d0) then write(*,*)'MIERDA! Diff is again zero!!!' read(*,*)factor end if factor=step_wl/diff_wl cc write(*,*)'Factor for interpolation:' cc write(*,100)factor diff_flux = flux2 - flux1 interflux = flux1 + (diff_flux * factor) cc write(*,*)'WAVEL1, Flux1 =' cc write(*,100) wavel1,flux1 cc write(*,*)'WAVEL2, Flux2=' cc write(*,100) wavel2,flux2 cc write(*,*)'WANTED=' cc write(*,100) waven cc write(*,*)'Linear interpolated flux is then=',interflux write(15,100) waven,interflux index=index+1 ccc read(*,*)key c------- c looping on records waven = waven + step cc write(*,*) cc write(*,*)'====================== NEXT RECORD ==================' cc write(*,*) cc write(*,*)' NEW WAVENUMBER WANTED=' cc write(*,100) waven GOTO 500 c*************************************************************************** 8000 write(*,*)'EOF reached, stopping....' 9999 continue write(*,*)index,' records written to mastertab file' write(*,*) filename2 100 format(2(3x,d25.15)) CLOSE(15) c************************************************************************ c c PROGRAM MASTERTURN c c this routine creates a direct accessible and turned around c stellar mastertable, like the Iodine mstb, from the output c ASCII file created by masterbuld.f c c c************************************************************************ cc IMPLICIT NONE cc INTEGER maxsiz cc PARAMETER (maxsiz=200000) cc REAL*8 waven(maxsiz),flux(maxsiz) cc INTEGER index,i,k,l,size,lr,irec cc CHARACTER fn*25 c--------------------------------------------------------------- cc write(*,*)'Enter filename of ASCII mstb:' cc read(*,*)fn cc write(*,*)'Enter size of the file:' cc read(*,*)size size=index lr=8*2 c open(unit=1,file='phi2_pav_1.mstb',type='old') c open(unit=1,file='iotahor_ASCII_01-2.mstb',type='old') open(unit=1,file=filename2,type='old') open(unit=02,file='turned.mstb',access='direct', * form='unformatted',recl=lr) c--------------------------------------------------------------- c READING: write(*,*)'Reading....' do i=1,size read(1,*)wavent(i),fluxt(i) cc write(*,*)i end do c--------------------------------------------------------------- c WRITING: indext=0 write(*,*)'-------------- writing..........' do irec=1,size write(unit=02,rec=irec)wavent(size+1-irec),fluxt(size+1-irec) indext=indext+1 cc write(*,*)index end do c--------------------------------------------------------------- write(*,*)'Ok, ',indext,' records written to binary file..' c======================================================================= END