4Misc_Start<#4PlatformžÁ@9èVersionCheckè ¬xHHô@îÿîÿRg(üšHHdh ¬xHHô@îÿîÿRg(üšHHdh ¬x HHô@îÿîÿRg(üšHHdh ^Graph*‰WDashSettings#úÿ  !4 4 4 4 4 4 whomeCCdÿÿÿÿMacintosh HD:Users:lingyuan:Desktop:ARecentWindows Panel0Proc0 4Misc_End<#4XOPState_Start<#4XOPState_End<#\ !, *)<d TXET0RGI;Proc0Proc0#pragma TextEncoding = "UTF-8" #pragma rtGlobals=3 // Use modern global access method and strict wave access #pragma DefaultTab={3,20,4} // Set default tab width in Igor Pro 9 and later /////////////////////////////////////////////////////////////////////////////////////////////// //by Lingyuan Kong 01/24/2024 Function ButtonProc_SumCompOrder(ctrlName) : ButtonControl String ctrlName Execute "SumCompOrder()" end Proc SumCompOrder(sel,A1,A2,A3,theta,wLength,A4,inc_L,inc_an) variable sel = 2 variable A1 = 1 variable A2 = 1 variable A3 = 1 variable theta = 0 variable wLength = 40 variable A4 = 0 Variable inc_L=0 variable inc_an=0 prompt sel,"Lattice",popup,"Square;Triangular" prompt A1,"Amplitude of Q1" prompt A2,"Amplitude of Q2" prompt A3,"Amplitude of Q3" prompt theta,"Angel of Q1 (°)" prompt wLength,"Wave length of the commensurate orders" Prompt A4,"Amplitude of an additional incommensurate vector" prompt inc_L,"wavelength off from the commensurate value" prompt inc_an,"angle off from the direction of commensurate Q1" if (sel == 1) SumCompOrder_square(A1,A2,theta) endif if (sel == 2) SumCompOrder_tria(A1,A2,A3,theta,A4,inc_L,inc_an,wLength) endif end Function SumCompOrder_square(A1,A2,theta) variable A1,A2,theta make/N=(300,300)/o Square1 make/N=(300,300)/o Square2 make/N=(300,300)/o Square setscale/I x,-150,150,"",Square1 setscale/I y,-150,150,"",Square1 setscale/I x,-150,150,"",Square2 setscale/I y,-150,150,"",Square2 setscale/I x,-150,150,"",Square setscale/I y,-150,150,"",Square Square1=A1*cos((2*pi/40)*(cos(theta*pi/180)*x+sin(theta*pi/180)*y)); Square2=A2*cos((2*pi/40)*(cos((90+theta)*pi/180)*x+sin((90+theta)*pi/180)*y)); //Square3=A3*cos((2*pi/40)*(cos((120+theta)*pi/180)*x+sin((120+theta)*pi/180)*y)); Square=Square2+Square1 String FFTout FFTout = nameofWave(Square) + "_FFT" FFT/PAD={3*dimsize(Square,0),3*dimsize(Square,1)}/out=3/DEST=$FFTout cvtcmplx(Square) display/N=SumCompOrder_squaresim;modifygraph width=900,height=600 Display/HOST=#/W=(0,0.05,0.4,0.55);appendimage Square1;ModifyGraph mirror=2;ModifyImage Square1 ctab= {-max(A1,A2),max(A1,A2),VioletOrangeYellow,0};ModifyGraph width={Plan,1,bottom,left};ModifyGraph nticks=0,noLabel=1;ModifyGraph axThick=2,standoff=0; setActiveSubwindow ##;Display/HOST=#/W=(0.3,0.05,0.7,0.55);appendimage Square2;ModifyGraph mirror=2;ModifyImage Square2 ctab= {-max(A1,A2),max(A1,A2),VioletOrangeYellow,0};ModifyGraph width={Plan,1,bottom,left};ModifyGraph nticks=0,noLabel=1;ModifyGraph axThick=2,standoff=0;//;ColorScale/C/N=text0/F=0/B=1/A=RC/X=-20.00/Y=0.00 image=phasesingle;ModifyGraph nticks=0,noLabel=1;ModifyGraph axThick=2,standoff=0;ColorScale/C/N=text0 frame=0.00//;Label bottom "\\Z16M \t \t\t\t\t\t\t\t\tΓ\t\t\t\t\t\t\t\t\t M" setActiveSubwindow ##;Display/HOST=#/W=(0,0.5,0.4,1);appendimage $FFTout;ModifyGraph mirror=2;ModifyImage $FFTout ctab= {*,*,VioletOrangeYellow,0};ModifyGraph width={Plan,1,bottom,left};ModifyGraph nticks=0,noLabel=1;ModifyGraph axThick=2,standoff=0;SetAxis left -0.05,0.05;SetAxis bottom -0.05,0.05 setActiveSubwindow ##;Display/HOST=#/W=(0.3,0.5,0.7,1);appendimage Square;ModifyGraph mirror=2;ModifyImage Square ctab= {*,*,VioletOrangeYellow,0};ModifyGraph width={Plan,1,bottom,left};ModifyGraph nticks=0,noLabel=1;ModifyGraph axThick=2,standoff=0; setActiveSubwindow ## TextBox/C/N=text0/A=RC/F=0/B=1/X=3/Y=-20.00 "\\Z15\r\\$WMTEX$ |A_{1}|cos(Q_{1}\\cdot r)+|A_{2}|cos(Q_{2}\\cdot r) \\$/WMTEX$\rAmplitude along 3 lattice direction:";DelayUpdate AppendText/N=text0 "Direction \\$WMTEX$ Q_{i}\\ \\$/WMTEX$: the amplitude is \\$WMTEX$ |A_{i}|\\$/WMTEX$" variable/G A1_square = A1 variable/G A2_square = A2 //variable/G A3_square = A3 variable/G theta_square = theta SetVariable set1 win=SumCompOrder_squaresim, title="|A1|",size={100,15},value=A1_square,limits={0.1,inf,0.1},proc=SetVarProc_SumCompOrder_square SetVariable set2 win=SumCompOrder_squaresim, title="|A2|",size={100,15},value=A2_square,limits={0.1,inf,0.1},proc=SetVarProc_SumCompOrder_square //SetVariable set3 win=SumCompOrder_squaresim, title="|A3|",size={100,15},value=A3_square,limits={0.1,inf,0.1},proc=SetVarProc_SumCompOrder_square SetVariable set4 win=SumCompOrder_squaresim, title="θ",size={100,15},value=theta_square,limits={0,180,1},proc=SetVarProc_SumCompOrder_square ckfig_child(winname(0,1)) tilewindows/WINS=WinList("*", ";","WIN:1")/R/w=(20,7,80,80) end Function SetVarProc_SumCompOrder_square(ctrlName,varNum,varStr,varName) : SetVariableControl String ctrlName Variable varNum String varStr String varName variable/G A1_square variable/G A2_square variable/G theta_square cons_SumCompOrder_square(A1_square,A2_square,theta_square) end Function cons_SumCompOrder_square(A1,A2,theta) variable A1,A2,theta make/N=(300,300)/o Square1 make/N=(300,300)/o Square2 make/N=(300,300)/o Square setscale/I x,-150,150,"",Square1 setscale/I y,-150,150,"",Square1 setscale/I x,-150,150,"",Square2 setscale/I y,-150,150,"",Square2 setscale/I x,-150,150,"",Square setscale/I y,-150,150,"",Square Square1=A1*cos((2*pi/40)*(cos(theta*pi/180)*x+sin(theta*pi/180)*y)); Square2=A2*cos((2*pi/40)*(cos((90+theta)*pi/180)*x+sin((90+theta)*pi/180)*y)); Square=Square2+Square1 String FFTout FFTout = nameofWave(Square) + "_FFT" FFT/PAD={3*dimsize(Square,0),3*dimsize(Square,1)}/out=3/DEST=$FFTout cvtcmplx(Square) ModifyImage/W=$"SumCompOrder_squaresim#G0" Square1 ctab= {-max(A1,A2),max(A1,A2),VioletOrangeYellow,0}; ModifyImage/W=$"SumCompOrder_squaresim#G1" Square2 ctab= {-max(A1,A2),max(A1,A2),VioletOrangeYellow,0}; end //////////////////////////////////////////////////////////////////////////////// Function SumCompOrder_tria(A1,A2,A3,theta,A4,inc_L,inc_an,wLength) variable A1,A2,A3,theta,A4,inc_L,inc_an,wLength make/N=(300,300)/o trian1 make/N=(300,300)/o trian2 make/N=(300,300)/o trian3 make/N=(300,300)/o trian4 make/N=(300,300)/o trian setscale/I x,-150,150,"",trian1 setscale/I y,-150,150,"",trian1 setscale/I x,-150,150,"",trian2 setscale/I y,-150,150,"",trian2 setscale/I x,-150,150,"",trian3 setscale/I y,-150,150,"",trian3 setscale/I x,-150,150,"",trian4 setscale/I y,-150,150,"",trian4 setscale/I x,-150,150,"",trian setscale/I y,-150,150,"",trian trian1=A1*cos((2*pi/wLength)*(cos(theta*pi/180)*x+sin(theta*pi/180)*y)); trian2=A2*cos((2*pi/wLength)*(cos((60+theta)*pi/180)*x+sin((60+theta)*pi/180)*y)); trian3=A3*cos((2*pi/wLength)*(cos((120+theta)*pi/180)*x+sin((120+theta)*pi/180)*y)); trian4=A4*cos((2*pi/(wLength+inc_L))*(cos((inc_an+theta)*pi/180)*x+sin((inc_an+theta)*pi/180)*y)); trian=trian3+trian2+trian1+trian4 String FFTout FFTout = nameofWave(trian) + "_FFT" FFT/PAD={3*dimsize(trian,0),3*dimsize(trian,1)}/out=3/DEST=$FFTout cvtcmplx(trian) display/N=SumCompOrder_triasim;modifygraph width=900,height=600 Display/HOST=#/W=(0,0.05,0.4,0.55);appendimage trian1;ModifyGraph mirror=2;ModifyImage trian1 ctab= {-max(A1,A2,A3),max(A1,A2,A3),VioletOrangeYellow,0};ModifyGraph width={Plan,1,bottom,left};ModifyGraph nticks=0,noLabel=1;ModifyGraph axThick=2,standoff=0; setActiveSubwindow ##;Display/HOST=#/W=(0.3,0.05,0.7,0.55);appendimage trian2;ModifyGraph mirror=2;ModifyImage trian2 ctab= {-max(A1,A2,A3),max(A1,A2,A3),VioletOrangeYellow,0};ModifyGraph width={Plan,1,bottom,left};ModifyGraph nticks=0,noLabel=1;ModifyGraph axThick=2,standoff=0;//;ColorScale/C/N=text0/F=0/B=1/A=RC/X=-20.00/Y=0.00 image=phasesingle;ModifyGraph nticks=0,noLabel=1;ModifyGraph axThick=2,standoff=0;ColorScale/C/N=text0 frame=0.00//;Label bottom "\\Z16M \t \t\t\t\t\t\t\t\tΓ\t\t\t\t\t\t\t\t\t M" setActiveSubwindow ##;Display/HOST=#/W=(0.6,0.05,1,0.55);appendimage trian3;ModifyGraph mirror=2;ModifyImage trian3 ctab= {-max(A1,A2,A3),max(A1,A2,A3),VioletOrangeYellow,0};ModifyGraph width={Plan,1,bottom,left};ModifyGraph nticks=0,noLabel=1;ModifyGraph axThick=2,standoff=0;//;ColorScale/C/N=text0/F=0/B=1/A=RC/X=-20.00/Y=0.00 image=phasesingle;ModifyGraph nticks=0,noLabel=1;ModifyGraph axThick=2,standoff=0;ColorScale/C/N=text0 frame=0.00//;Label bottom "\\Z16M \t \t\t\t\t\t\t\t\tΓ\t\t\t\t\t\t\t\t\t M" setActiveSubwindow ##;Display/HOST=#/W=(0,0.5,0.4,1);appendimage $FFTout;ModifyGraph mirror=2;ModifyImage $FFTout ctab= {*,*,VioletOrangeYellow,0};ModifyGraph width={Plan,1,bottom,left};ModifyGraph nticks=0,noLabel=1;ModifyGraph axThick=2,standoff=0;SetAxis left -0.05,0.05;SetAxis bottom -0.05,0.05 setActiveSubwindow ##;Display/HOST=#/W=(0.3,0.5,0.7,1);appendimage trian;ModifyGraph mirror=2;ModifyImage trian ctab= {*,*,VioletOrangeYellow,0};ModifyGraph width={Plan,1,bottom,left};ModifyGraph nticks=0,noLabel=1;ModifyGraph axThick=2,standoff=0; setActiveSubwindow ##;Display/HOST=#/W=(0.6,0.5,1,1);appendimage trian4;ModifyGraph mirror=2;ModifyImage trian4 ctab= {*,*,VioletOrangeYellow,0};ModifyGraph width={Plan,1,bottom,left};ModifyGraph nticks=0,noLabel=1;ModifyGraph axThick=2,standoff=0; setActiveSubwindow ## TextBox/C/N=text0/A=MB/X=0.00/Y=0.00 "\\Z15";DelayUpdate AppendText/N=text0 "\\$WMTEX$ |A_{1}|cos(Q_{1}\\cdot r)+|A_{2}|cos(Q_{2}\\cdot r)+|A_{3}|cos(Q_{3}\\cdot r) \\$/WMTEX$ Amplitude along 3 lattice direction: Directio";DelayUpdate AppendText/N=text0 /NOCR "n \\$WMTEX$ Q_{i}\\pm Q_{j} \\$/WMTEX$: the amplitude is \\$WMTEX$ |A_{i}|+ |A_{j}| \\$/WMTEX$" TextBox/C/N=text0/F=0 TextBox/C/N=text1/F=0/A=LT/X=1.5/Y=7 "\\$WMTEX$ Q_{1} \\$/WMTEX$" TextBox/C/N=text2/F=0/A=LT/X=32/Y=7 "\\$WMTEX$ Q_{2} \\$/WMTEX$" TextBox/C/N=text3/F=0/A=LT/X=62/Y=7 "\\$WMTEX$ Q_{3} \\$/WMTEX$" TextBox/C/N=text4/F=0/A=LT/X=92/Y=52 "\\$WMTEX$ Q_{\rm IKS,4} \\$/WMTEX$" TextBox/C/N=text5/F=0/A=LT/X=49/Y=3.00 "Additonal Incommensurate Vector" variable/G A1_tria = A1 variable/G A2_tria = A2 variable/G A3_tria = A3 variable/G theta_tria = theta variable/G A4_tria = A4 variable/G inc_L_tria = inc_L variable/G inc_an_tria = inc_an variable/G wLength_tria = wLength SetVariable set1 win=SumCompOrder_triasim, title="|A1|",size={100,15},value=A1_tria,limits={0.1,inf,0.1},proc=SetVarProc_SumCompOrder_tria SetVariable set2 win=SumCompOrder_triasim, title="|A2|",size={100,15},value=A2_tria,limits={0.1,inf,0.1},proc=SetVarProc_SumCompOrder_tria SetVariable set3 win=SumCompOrder_triasim, title="|A3|",size={100,15},value=A3_tria,limits={0.1,inf,0.1},proc=SetVarProc_SumCompOrder_tria SetVariable set4 win=SumCompOrder_triasim, title="θ",size={100,15},value=theta_tria,limits={0,180,1},proc=SetVarProc_SumCompOrder_tria SetVariable set5 win=SumCompOrder_triasim, title="|A4|",size={100,15},value=A4_tria,limits={0.1,inf,0.1},proc=SetVarProc_SumCompOrder_tria SetVariable set6 win=SumCompOrder_triasim, title="δθ",size={100,15},value=inc_an_tria,limits={0,180,1},proc=SetVarProc_SumCompOrder_tria SetVariable set7 win=SumCompOrder_triasim, title="δλ",size={100,15},value=inc_L_tria,limits={-inf,inf,1},proc=SetVarProc_SumCompOrder_tria SetVariable set8 win=SumCompOrder_triasim, title="λ",size={100,15},value=wLength_tria,limits={0,inf,1},proc=SetVarProc_SumCompOrder_tria SetVariable set1 pos={1,2} SetVariable set2 pos={111,2} SetVariable set3 pos={221,2} SetVariable set4 pos={65,20} SetVariable set5 pos={426,2} SetVariable set6 pos={530,2} SetVariable set7 pos={634,2} SetVariable set8 pos={175,20} ckfig_child(winname(0,1)) tilewindows/WINS=WinList("*", ";","WIN:1")/R/w=(20,7,80,80) end Function SetVarProc_SumCompOrder_tria(ctrlName,varNum,varStr,varName) : SetVariableControl String ctrlName Variable varNum String varStr String varName variable/G A1_tria variable/G A2_tria variable/G A3_tria variable/G theta_tria variable/G A4_tria variable/G inc_L_tria variable/G inc_an_tria variable/G wLength_tria cons_SumCompOrder_tria(A1_tria,A2_tria,A3_tria,theta_tria,A4_tria,inc_L_tria,inc_an_tria,wLength_tria) end Function cons_SumCompOrder_tria(A1,A2,A3,theta,A4,inc_L,inc_an,wLength) variable A1,A2,A3,theta,A4,inc_L,inc_an,wLength make/N=(300,300)/o trian1 make/N=(300,300)/o trian2 make/N=(300,300)/o trian3 make/N=(300,300)/o trian4 make/N=(300,300)/o trian setscale/I x,-150,150,"",trian1 setscale/I y,-150,150,"",trian1 setscale/I x,-150,150,"",trian2 setscale/I y,-150,150,"",trian2 setscale/I x,-150,150,"",trian3 setscale/I y,-150,150,"",trian3 setscale/I x,-150,150,"",trian4 setscale/I y,-150,150,"",trian4 setscale/I x,-150,150,"",trian setscale/I y,-150,150,"",trian trian1=A1*cos((2*pi/wLength)*(cos(theta*pi/180)*x+sin(theta*pi/180)*y)); trian2=A2*cos((2*pi/wLength)*(cos((60+theta)*pi/180)*x+sin((60+theta)*pi/180)*y)); trian3=A3*cos((2*pi/wLength)*(cos((120+theta)*pi/180)*x+sin((120+theta)*pi/180)*y)); trian4=A4*cos((2*pi/(wLength+inc_L))*(cos((inc_an+theta)*pi/180)*x+sin((inc_an+theta)*pi/180)*y)); trian=trian3+trian2+trian1+trian4 String FFTout FFTout = nameofWave(trian) + "_FFT" FFT/PAD={3*dimsize(trian,0),3*dimsize(trian,1)}/out=3/DEST=$FFTout cvtcmplx(trian) ModifyImage/W=$"SumCompOrder_triasim#G0" trian1 ctab= {-max(A1,A2,A3,A4),max(A1,A2,A3,A4),VioletOrangeYellow,0}; ModifyImage/W=$"SumCompOrder_triasim#G1" trian2 ctab= {-max(A1,A2,A3,A4),max(A1,A2,A3,A4),VioletOrangeYellow,0}; ModifyImage/W=$"SumCompOrder_triasim#G2" trian3 ctab= {-max(A1,A2,A3,A4),max(A1,A2,A3,A4),VioletOrangeYellow,0}; ModifyImage/W=$"SumCompOrder_triasim#G5" trian4 ctab= {-max(A1,A2,A3,A4),max(A1,A2,A3,A4),VioletOrangeYellow,0}; SetAxis/W=$"SumCompOrder_triasim#G3" left -2/(wLength),2/(wLength);SetAxis/W=$"SumCompOrder_triasim#G3" bottom -2/(wLength),2/(wLength) end Function/Wave cvtcmplx(data) wave data String name name = "c_"+nameofwave(data) matrixop/o $name = cmplx(data,0) wave namew = $name setscale/p x,dimoffset(data,0),dimdelta(data,0),"",namew setscale/p y,dimoffset(data,1),dimdelta(data,1),"",namew Return namew end Function ckfig_child(name) String name //name of the figure //The information of the Fig.name*************** String wavenamelist,nn,wavenamelistn wavenamelist = wavelistsub(name) //********************************************** string fulllist = WinList("*", ";","WIN:1") variable i for(i=0; i