FRIDA scripting
Scripts Library
The use of this scripts is at your own risk. Please DO CHECK if they fit to your problem!!!
To run a script in FRIDA1, you just have to type:
\i name_of_script
The script must have a *.ml extension. Here are some scripts. To use them just make “copy-paste” in any editor, and run them. The explanations of the scripts are minimal, and if you want a deeper explanation you should have a look at the tutorial. The scripts are to be modified depending on from which point of the data analysis you start, therfore are not intended as “plug and play” receipts!!!. The following scripts are available:
-
Program to generate scripts to read T ramps
script for read
Be aware that if you run the script two (or more) times the script will crash because the prgroma will ask “overwrite file?”, and the script is writen only to create new files. You can, of course, add the “y” at the correct places...
The last lines are to be repeated for every sample. Note that if you change your vanadium or empty can that is not valid any more!!
rtof
0
0
13810-13813
13912-13915
13930-13933
-
y
0
y
y
4
1000
0.99
n
1-3
transT220L6
T=220K l=6A
3
-
fs
transT220L6
rtof
0
0
13814-13817
y
transT230L6
T=230K l=6A
-
fs
transT230L6
rtof
0
0
13818-13821
y
transT240L6
T=240 l=6A
-
fs
transT240L6
rtof
0
0
13822-13825
y
transT250L6
T=250K l=6A
-
fs
transT250L6
-
script for diffractogram
It will read the data after being corrected, that is to say, from the former script, and will add all the channels to calculate the diffractograms. It will delete the not needed files... Be carefull if you want to add more files. Fdel must beincreased one unit per loaded file. You must also check the number of channels you have, and your wavelength: then number 2.094395 is calculated for lambda=6A.
fl transT220L6
mca
y
1-598i598
msx
y
ox * ec
0.008726646
#
#
ox sin y
ox * ec
2.094395
#
#
fs
SQT220L6
1-5 fdel
fl transT230L6
mca
y
1-598i598
msx
y
ox * ec
0.008726646
#
#
ox sin y
ox * ec
2.094395
#
#
fs
SQT230L6
2-6 fdel
fl transT240L6
mca
y
1-598i598
msx
y
ox * ec
0.008726646
#
#
ox sin y
ox * ec
2.094395
#
#
fs
SQT240L6
3-7 fdel
fl transT250L6
mca
y
1-598i598
msx
y
ox * ec
0.008726646
#
#
ox sin y
ox * ec
2.094395
#
#
fs
SQT250L6
4-8 fdel
fl transT260L6
mca
y
1-598i598
msx
y
ox * ec
0.008726646
#
#
ox sin y
ox * ec
2.094395
#
#
fs
SQT260L6
5-9 fdel
.
.
.
script for S(q,w)
Before using it you must check your q and energy range. The S(q,w) is calculated for increment of q and w =(0.1,0.02)
fl transT220L2
_coq
1
-1.3
0.02
200
1
0
0.1
2
30
0.05
7
fs
SQWtransT220L2
1 fdel
fl transT230L2
_coq
1
-1.3
0.02
200
1
0
0.1
2
30
0.05
7
fs
SQWtransT230L2
2 fdel
script for temperature ramps
To run the program you need the code, that must be compiled (is F77 fortran), and a control file, which is after the program. I think the control file is autoexplicative... The program will generate the following scripts:
-
read.ml to read, and perform van and empty can corrections on data
-
sq.ml, and readsq.ml to calculate and afterwards read S(q)
-
sqw.ml, to calculate s(q,w) (up to now the names of scripts are conterintuitive, I know!)
-
int.ml, will colapse the spectra in one point
Two last things:
-
The names of sq, sqw and so on will be taht of the dirst numor converted. Therefore if you choose to convert from 100 to 200 grouping every 4 numors, the program will generate sq100.i96, sq104.i96, sq108.i96 and so on, but don’t get confused: the numors are of the four grouped numors!!!
-
Be aware that if you run the script two (or more) times the script will crash because the prgroma will ask “overwrite file?”, and the script is writen only to create new files. You can, of course, add the “y” at the correct places... therefore if you want to rerun the script you MUST delete the old files!
delete the old files!implicit none character*20 nomout integer i,nini,nfin,njump,vanini,vanfin,dumi integer bgini,bgfin real qini,qfin,qstep,eini,efin,estep,lambda,pi real thetamax,Tvan pi=3.141592654 open(unit=1,file='control.con') read(1,*) nini,nfin,njump write(6,*) 'Numor:ini,fin,step: ',nini,nfin,njump read(1,*) vanini,vanfin write(6,*) 'van runs: ',vanini,vanfin read(1,*) bgini,bgfin write(6,*) 'Empty Can runs: ',bgini,bgfin read(1,*) qini,qfin,qstep write(6,*) 'Q: ini,fin,step: ',qini,qfin,qstep read(1,*) eini,efin,estep write(6,*) 'E: ini,fin,step: ',eini,efin,estep read(1,*) thetamax write(6,*)'thetamax for sq: ',thetamax read(1,*) lambda write(6,*) 'lambda: ',lambda read(1,*) Tvan write(6,*) 'lambda: ',Tvan ! write(6,*)'first, last and jump numor' ! read(5,*) nini,nfin,njump ! write(6,*)'vanadium first and last' ! read(5,*) vanini,vanfin ! this part reads and makes the calibration by vanadium and substracts the empty can open(unit=1,file='read.ml') write(1,*)'rtof' write(1,*) '0' write(1,*)'0' if(njump.eq.1) write(1,*) nini if(njump.gt.1) write(1,"(i5,a1,i5)") nini,'-',nini+njump if(bgini.gt.bgfin) write(1,"(a1)")'-' if(bgini.eq.bgfin) write(1,"(i5)") bgini if(bgini.lt.bgfin) write(1,"(i5,a1,i5)") bgini,'-',bgfin if(bgini.eq.0) write(1,*) '-' if(vanini.eq.vanfin) write(1,"(i5)") vanini if(vanini.ne.vanfin) write(1,"(i5,a1,i5)") vanini,'-',vanfin write(1,*)'-' write(1,*)'y' write(1,*)'n' write(1,*)'0' write(1,*)'y' write(1,*)'y' write(1,*)'4' write(1,*)'1000' write(1,*)'0.99' write(1,*)'n' write(1,*)'1-3' write(1,*) Tvan write(1,*)'' write(1,*)'' write(1,*)'3' write(1,*)'-' write(1,*)'fs' write(1,*)'' write(1,*)'1' write(1,*)'fdel' do i=nini+njump,nfin,njump write(1,*)'rtof' write(1,*)'0' write(1,*)'0' write(1,*) i write(1,*) 'y' write(1,*)'' write(1,*)'' write(1,*)'-' write(1,*)'fs' write(1,*)'' write(1,*)'1' write(1,*)'fdel' end do close(unit=1) ! this part calculates sqw, and saves it open(unit=1,file='sqw.ml') open(unit=2,file='readsqw.ml') dumi=1 do i=nini,nfin,njump write(1,*)'fl' write(1,"(a1,i5)")'r',i write(1,*)'' write(1,*)'_coq' write(1,*)'1' write(1,"(f12.6)") eini write(1,"(f12.6)") estep write(1,"(f12.6)") efin write(1,*)'1' write(1,"(f12.6)") qini write(1,"(f12.6)") qstep write(1,"(f12.6)") qfin write(1,*) 30 write(1,"(f12.6)") qstep/2.0 write(1,*)'7' write(1,*) dumi write(1,*)'fdel' write(1,*) dumi write(1,*)'fs' write(nomout,"(a3,i5)")'sqw',i write(2,"(a3,a8)")'fl ',nomout write(1,*) nomout dumi=dumi+1 end do close(unit=1) ! thetamax=60.0 ! this part takes the files and adds the spectra(before doing sqw) every thetamax (startin in thetamax//2) open(unit=1,file='int.ml') dumi=1 do i=nini,nfin,njump write(1,*)'fl' write(1,"(a1,i5)")'r',i write(1,*)'' write(1,*)'msa' write(1,"(a1)")'z' write(1,"(f12.6)") thetamax/2.0 write(1,*)'y' write(1,*) dumi write(1,*)'fdel' dumi=dumi+1 end do close(unit=1) close(unit=1) ! lambda=2.5 ! this one calculates the sq open(unit=1,file='sq.ml') open(unit=2,file='readsq.ml') dumi=1 do i=nini,nfin,njump write(1,*)'fl' write(1,"(a1,i5)")'r',i write(1,*)'' write(1,*)'oi' write(1,*)'4' write(1,"(f7.1,1x,f7.1)") 0.,1000. write(1,*) 1 write(1,*) dumi write(1,*) 'fdel' write(1,*) dumi write(1,*) 'ox' write(1,"(a1)") '*' write(1,"(a2)") 'ec' write(1,"(f12.6)") 0.5*pi/180.0 write(1,*) '' write(1,*) '' write(1,"(a2)") 'ox' write(1,"(a3)") 'sin' write(1,"(a2)") 'ox' write(1,"(a1)") '*' write(1,"(a2)") 'ec' write(1,*) 4.0*pi/lambda write(1,*) '' write(1,*) '' if(dumi.ge.10) then write(1,"(i2,a1,i2,a1,i2)") dumi,',',dumi+1,',',dumi+2 goto 1 end if if(dumi+1.ge.10) then write(1,"(i1,a1,i2,a1,i2)") dumi,',',dumi+1,',',dumi+2 goto 1 end if if(dumi+2.ge.10) then write(1,"(i1,a1,i1,a1,i2)") dumi,',',dumi+1,',',dumi+2 goto 1 end if if(dumi+2.lt.10) then write(1,"(i1,a1,i1,a1,i1)") dumi,',',dumi+1,',',dumi+2 goto 1 end if 1 continue write(1,*)'fdel' write(1,*) dumi write(1,*)'fs' write(nomout,"(a2,i5)")'sq',i write(2,"(a3,a7)")'fl ',nomout write(1,*) nomout write(1,*)'' dumi=dumi+1 end do close(unit=1) close(unit=2) write(6,*)'' write(6,*)'You are wet...' write(6,*)'yes. It is raining' write(6,*)'RHPS' stop end
31666 31999 1 !first, last and jump numors 31220 31222 !vanadium runs 31121 31123 !empty can ini,fin(Nfin<Nini=no corr) 0.0 1 0.2 !Qini,Qfin,Qjump -1.0 1.0 0.01 !Eini,Efin,Ejump 20 !thetamax 6.0 !lambda 20.0 ! van temperature
-
Share: