Full code and output
Full code and output
currentpath=SetDirectory[NotebookDirectory[]];(*defineTPP-2Mequation(Anaccurateandsimpleuniversalcurvefortheenergy-dependentelectroninelasticmeanfreepath)paper:Anaccurateandsimpleuniversalcurvefortheenergy-dependentelectroninelasticmeanfreepath†;;Practicalguidesforx-rayphotoelectronspectroscopy:QuantitativeXPS*)ft[KE_,rou_,m_,eg_,nv_]:=Module[{KE0=KE,rou0=rou,m0=m,eg0=eg,nv0=nv,ep,u,beta,gama,c,d},ep=28.8*Sqrt[nv0*rou0/m0];u=nv0*rou0/m0;beta=-0.1+0.944/Sqrt[ep^2+eg0^2]+0.069*rou0^0.1;gama=0.191*rou0^-0.5;c=1.97-0.91*u;d=53.4-20.8*u;Return[0.1KE0/((ep^2)*(beta*Log[gama*KE0]-(c/KE0)-(d/(KE0^2))))]](*simplifiedIMFPqeuation*)ft1[KE_,Z_,eg_,a_]:=Module[{KE0=KE,Z0=Z,eg0=eg,a0=a},Return[(a0^1.7)*(4+0.44Z0^0.5+0.104KE0^0.872)/((Z0^0.38)*(1-0.02eg0))]](*defineafunctiontoshowfiguremodel*)figmodel[model_]:=Module[{mo0=model,im},SetDirectory[FileNameJoin[{currentpath,"images"}]];im=Image[Import[mo0],ImageSize100]](*defineacalculatefunction*)calcalator[element1_,element2_,area1_,area2_,penergy_,model_,zvag_,eg_,a_,BE1_,BE2_,fthickness_]:=Module[{element10=element1,element20=element2,area10=area1,area20=area2,penergy0=penergy,model0=model,zvag0=zvag,eg0=eg,a0=a,BE10=BE1,BE20=BE2,fthickness0=fthickness,element1cs,element2cs,element1func,element1csv,element2func,element2csv},SetDirectory[FileNameJoin[{currentpath,"cs"}]];element1cs=Import[element10];element2cs=Import[element20];element1func=Interpolation[element1cs[[All,1;;2]]];element1csv=element1func[penergy0];element2func=Interpolation[element2cs[[All,1;;2]]];element2csv=element2func[penergy0];(*crosssectioninterpolationinthetable*)If[model0"bulk",If[element10==element20,Print["---------------"];Print["Area=N*fph*crosssection*IMFP*Transmission(E)*Cos(thetA)*A"];Print["CS and IMFP ignored, only area considered"];Print["element density ratio is: N1/N2=Area1/Area2= ",area10/area20],Print["---------------"];Print["Area=N*fph*crosssection*IMFP*Transmission(E)*Cos(thetA)*A"];Print["CS and IMFP considered"];Print["CS1= ",element1csv,", IMFP1= ",ft1[penergy0-BE10,zvag0,eg0,a0]];Print["CS2= ",element2csv,", IMFP2= ",ft1[penergy0-BE20,zvag0,eg0,a0]];Print["element density ratio is: N1/N2=Area1*CS2*IMFP2/(Area2*CS1*IMFP1)= ",area10*element2csv*ft1[penergy0-BE20,zvag0,eg0,a0]/(area20*element1csv*ft1[penergy0-BE10,zvag0,eg0,a0])]],If[model0"layer1",If[element10==element20,Print["---------------"];Print["Area=N*crosssection*IMFP*(1-exp(-d/IMFP))"];Print["CS and IMFP ignored, only area considered"];Print["element density ratio is: N1/N2=Area1/Area2= ",area10/area20],Print["---------------"];Print["Area=N*crosssection*IMFP*(1-exp(-d/IMFP))"];Print["CS and IMFP considered"];Print["CS1= ",element1csv,", IMFP1= ",ft1[penergy0-BE10,zvag0,eg0,a0]];Print["CS2= ",element2csv,", IMFP2= ",ft1[penergy0-BE20,zvag0,eg0,a0]];Print["element density ratio is: N1/N2=Area1*CS2*IMFP2*(1-exp(-d/IMFP2))/(Area2*CS1*IMFP1*(1-exp(-d/IMFP1)))= ",area10*element2csv*ft1[penergy0-BE20,zvag0,eg0,a0]*(1-Exp[-fthickness0/ft1[penergy0-BE20,zvag0,eg0,a0]])/(area20*element1csv*ft1[penergy0-BE10,zvag0,eg0,a0]*(1-Exp[-fthickness0/ft1[penergy0-BE10,zvag0,eg0,a0]]))]],If[model0"layer2",If[element10==element20,Print["---------------"];Print["Area1(toplayer)=N1*crosssection*IMFP*(1-exp(-d/IMFP1))"];Print["Area2(substrate)=N2*crosssection*IMFP*(exp(-d/IMFP2))"];Print["CS ignored, IMFP1=IMFP2"];Print["CS1= ",element1csv,", IMFP1= ",ft1[penergy0-BE10,zvag0,eg0,a0]];Print["CS2= ",element2csv,", IMFP2= ",ft1[penergy0-BE20,zvag0,eg0,a0]];Print["element density ratio is: N1/N2=Area1*exp(-d/IMFP2)/(Area2*(1-exp(-d/IMFP1)))= ",area10*Exp[-fthickness0/ft1[penergy0-BE20,zvag0,eg0,a0]]/(area20*(1-Exp[-fthickness0/ft1[penergy0-BE10,zvag0,eg0,a0]]))],Print["---------------"];Print["Area1(toplayer)=N1*crosssection1*IMFP1*(1-exp(-d/IMFP1))"];Print["Area2(substrate)=N2*crosssection2*IMFP2*(exp(-d/IMFP2))"];Print["CS and IMFP considered"];Print["CS1= ",element1csv,", IMFP1= ",ft1[penergy0-BE10,zvag0,eg0,a0]];Print["CS2= ",element2csv,", IMFP2= ",ft1[penergy0-BE20,zvag0,eg0,a0]];Print["element density ratio is: N1/N2=Area1*CS2*IMFP2*exp(-d/IMFP2)/(Area2*CS1*IMFP1*(1-exp(-d/IMFP1)))= ",area10*element2csv*ft1[penergy0-BE20,zvag0,eg0,a0]*Exp[-fthickness0/ft1[penergy0-BE20,zvag0,eg0,a0]]/(area20*element1csv*ft1[penergy0-BE10,zvag0,eg0,a0]*(1-Exp[-fthickness0/ft1[penergy0-BE10,zvag0,eg0,a0]]))]],If[model0"layer3",If[element10==element20,Print["---------------"];Print["Area=N*crosssection*IMFP*exp(-d/IMFP)"];Print["CS and IMFP ignored"];Print["CS1= ",element1csv,", IMFP1= ",ft1[penergy0-BE10,zvag0,eg0,a0]];Print["CS2= ",element2csv,", IMFP2= ",ft1[penergy0-BE20,zvag0,eg0,a0]];Print["element density ratio is: N1/N2=Area1/Area2= ",area10/area20],Print["---------------"];Print["Area1=N1*crosssection1*IMFP1*exp(-d/IMFP1)"];Print["Area2=N2*crosssection2*IMFP2*exp(-d/IMFP2)"];Print["CS and IMFP considered"];Print["CS1= ",element1csv,", IMFP1= ",ft1[penergy0-BE10,zvag0,eg0,a0]];Print["CS2= ",element2csv,", IMFP2= ",ft1[penergy0-BE20,zvag0,eg0,a0]];Print["element density ratio is: N1/N2=Area1*CS2*IMFP2*exp(-d/IMFP2)/(Area2*CS1*IMFP1*exp(-d/IMFP1))= ",area10*element2csv*ft1[penergy0-BE20,zvag0,eg0,a0]*Exp[-fthickness0/ft1[penergy0-BE20,zvag0,eg0,a0]]/(area20*element1csv*ft1[penergy0-BE10,zvag0,eg0,a0]*Exp[-fthickness0/ft1[penergy0-BE10,zvag0,eg0,a0]])]]]]]]]
In[]:=
Panel[DynamicModule[{penergy=1486.6,bdangle=54.5,element1="c1s",area1=60,element2="c1s",area2=60,model="bulk",zvag=4,eg=3,a=0.25,BE1=285,BE2=285.5,fthickness=0},Column[{Row[{Column[{Panel["1.photon energy",FrameMarginsNone],InputField[Dynamic[penergy],FieldSize5],Panel["2.θ beam-spectro(deg)",FrameMarginsNone],InputField[Dynamic[bdangle],FieldSize5]}],Column[{Panel["3.element & peak area ",FrameMarginsNone],Row[{Panel["ele1",FrameMarginsNone],InputField[Dynamic[element1],FieldSize5],InputField[Dynamic[area1],FieldSize5]}],Row[{Panel["ele2",FrameMarginsNone],InputField[Dynamic[element2],FieldSize5],InputField[Dynamic[area2],FieldSize5]}],Panel["4.XPS model",FrameMarginsNone],PopupMenu[Dynamic[model],{"bulk","layer1","layer2","layer3"}]}],Column[{Button["calculate",calcalator[element1,element2,area1,area2,penergy,model,zvag,eg,a,BE1,BE2,fthickness]],Panel[Dynamic[figmodel[model]]"display model"]}]}],Panel["IMFP calculation(ft1)",FrameMarginsNone],Row[{Panel["Zavg",FrameMarginsNone],InputField[Dynamic[zvag],FieldSize5],Panel["egap",FrameMarginsNone],InputField[Dynamic[eg],FieldSize5],Panel["a(nm)",FrameMarginsNone],InputField[Dynamic[a],FieldSize5],Panel["BE1",FrameMarginsNone],InputField[Dynamic[BE1],FieldSize5],Panel["BE2",FrameMarginsNone],InputField[Dynamic[BE2],FieldSize5]}],Row[{Panel["film thickness(nm)",FrameMarginsNone],InputField[Dynamic[fthickness],FieldSize5]}]}]]]
Out[]=