熱膨張解析
//============== for Magmetostriction ======================================================================
//ME-0// Make DataFolder-----------------------------------------------------------------------------------
Macro PPMS_0_Make_Folder_()
Setdatafolder root:PPMS:'yyyymmdd_Sampname':
NewdataFolder/O 'B100_para_L100'
NewdataFolder/O 'B100_vert_L100'
//---------------parallel -----------------------------------------
string pathp = "root:PPMS:'yyyymmdd_Sampname':B100_para_L100"
string pathp
SetdataFolder pathp
NewdataFolder/O 'B_sweep'
NewdataFolder/O 'T_sweep'
//---------------Bsweep-----------------------------------------
SetdataFolder B_sweep
NewdataFolder/O '2K'
NewdataFolder/O '#K'
…
SetdataFolder '2K'
NewdataFolder/O 'age'
NewdataFolder/O 'sage'
SetdataFolder ::'#K'
NewdataFolder/O 'age'
NewdataFolder/O 'sage'
…
//---------------Tsweep-----------------------------------------
Execute "SetdataFolder " + pathp + "Tsweep"
NewdataFolder/O '0T'
NewdataFolder/O '0p5T'
…
SetdataFolder '0T'
NewdataFolder/O 'age'
NewdataFolder/O 'sage'
SetdataFolder ::'0p5T'
NewdataFolder/O 'age'
NewdataFolder/O 'sage'
…
//---------------vertical-----------------------------------------
string pathv = "root:PPMS:'yyyymmdd_Sampname':B100_vert_L100"
string pathv
SetdataFolder pathv
NewdataFolder/O 'B_sweep'
NewdataFolder/O 'T_sweep'
//---------------Bsweep-----------------------------------------
SetdataFolder 'B_sweep'
NewdataFolder/O '2K'
NewdataFolder/O '#K'
…
SetdataFolder '2K'
NewdataFolder/O 'age'
NewdataFolder/O 'sage'
SetdataFolder ::'#K'
NewdataFolder/O 'age'
NewdataFolder/O 'sage'
…
//---------------Tsweep-----------------------------------------
Execute "SetdataFolder " + pathv + "Tsweep"
NewdataFolder/O '0T'
NewdataFolder/O '0p5T'
…
SetdataFolder '0T'
NewdataFolder/O 'age'
NewdataFolder/O 'sage'
SetdataFolder ::'0p5T'
NewdataFolder/O 'age'
NewdataFolder/O 'sage'
…
End
//ME-0// Load Wave-----------------------------------------------------------------------------------
Macro PPMS_ME0_Load_Wave_()
LoadWave/J/D/W/K=0/L={0,1,0,0,0}
End
//ME-1// Set Folder Pass-----------------------------------------------------------------------------------
Macro PPMS_ME1_SetFolderPass()
//-●●●check●●●-// Folder Pass
string path2Kp = "root:PPMS:'yyyymmdd_Sampname':B100_para_L100:B_sweep:'2K':sage:"
string/G path2Kp
Setdatafolder path2Kp
End
//ME-2// Prepare dL_L0--------------------------------------------------------------------------------------
Macro PPMS_ME2_Prepare_dL_L0()
//unit conversion------------------------------------------------
Duplicate/O deltaL_1E_6cm_, dL_samp
Duplicate/O deltaL_1E_6cm_, dL_L0
'dL_samp'=('deltaL_1E_6cm_')*10^(-8) //[m]
//change Sample length-------------------------------------------
//-●●●check●●●-//
Variable/G 'L_0'
'L_0'=#####*10^(-3); // Sample Length mm 10^(-3)[m] at T(room)
//calc-----------------------------------------------------------
'dL_L0'=('dL_samp')/'L_0'
End
//ME-3// Display ΔL/L0 vs B(T) ----------------------------------------------------------------------------
Macro PPMS_ME3_Display_Bsweep_()
//-●●●check●●●-// Window Name
string WZ2K = "La05zp_2K"
string/G WZ2K
Execute "Display/N=" + WZ2K + " dL_L0 vs Field_T_"
//Modify
Execute "ModifyGraph/W=" + WZ2K + " tick=2,noLabel=0,mirror=1,fSize=20,axThick=2,standoff=0,font=\"Arial\""
Execute "ModifyGraph/W=" + WZ2K + " width=340.157,height=255.118"
//Left
Execute "Label/W=" + WZ2K + " left \"(1/L\\B0\\M)*ΔL(\\um)\""
Execute "ModifyGraph/W=" + WZ2K + " manTick(left)={0,0.5,-6,2},manMinor(left)={1,0};DelayUpdate"
Execute "SetAxis/W=" + WZ2K + " left 0,400;DelayUpdate"
//Bottom
Execute "Label/W=" + WZ2K + " bottom \"\\f02B\\f]0 (T)\""
Execute "ModifyGraph/W=" + WZ2K + " manTick(bottom)={0,4,0,0},manMinor(bottom)={1,0};DelayUpdate"
Execute "SetAxis/W=" + WZ2K + " bottom 0,12"
End
//ME-4// Differentiate to obtain magnetostriction ------------------------------------------------------
Macro PPMS_ME4_smth_Dif_()
//-●●●check●●●-// Folder Pass
string path2Kp = "root:PPMS:'yyyymmdd_Sampname':B100_para_L100:B_sweep:'2K':sage:"
string/G path2Kp
SetdataFolder path2Kp
NewdataFolder/O DIF
Execute "SetdataFolder " + path2Kp + "DIF"
NewdataFolder/O smth31
NewdataFolder/O smth81
NewdataFolder/O smth121
NewdataFolder/O smth221
NewdataFolder/O smth451
NewdataFolder/O DIF_Cut
//smoothing_31
Execute "SetdataFolder " + path2Kp + "DIF:smth31"
Duplicate/O :::dL_L0,dL_L0_smth31;DelayUpdate
Duplicate/O :::Field_T_,Field_T_smth31;DelayUpdate
Smooth/S=2 31, dL_L0_smth31,Field_T_smth31;DelayUpdate
//Differentiate
Differentiate/METH=1 dL_L0_smth31/X=Field_T_smth31/D=dL_L0_smth31_DIF;DelayUpdate
//graph
//-●●●check●●●-// Window Name
string WZ2KD = "La06zp_2K_dif"
string/G WZ2KD
Execute "Display/N=" + WZ2KD + " dL_L0_smth31_DIF vs Field_T_smth31"
//Modify
Execute "ModifyGraph/W=" + WZ2KD + " tick=2,noLabel=0,mirror=1,fSize=20,axThick=2,standoff=0,font=\"Arial\""
Execute "ModifyGraph/W=" + WZ2KD + " width=340.157,height=255.118"
//Left
Execute "Label/W=" + WZ2KD + " left \"(1/L0)*(dΔL/dB) \\u\""
Execute "ModifyGraph/W=" + WZ2KD + " manTick(left)={0,1,-7,0},manMinor(left)={1,0};DelayUpdate"
Execute "SetAxis/W=" + WZ2KD + " left -2e-07,2e-07;DelayUpdate"
//Bottom
Execute "Label/W=" + WZ2KD + " bottom \"\\f02B\\f]0 (T)\""
Execute "ModifyGraph/W=" + WZ2KD + " manTick(bottom)={0,4,0,0},manMinor(bottom)={1,0};DelayUpdate"
Execute "SetAxis/W=" + WZ2KD + " bottom 0,12"
//smoothing_81
Execute "SetdataFolder " + path2Kp + "DIF:smth81"
Duplicate/O :::dL_L0,dL_L0_smth81;DelayUpdate
Duplicate/O :::Field_T_,Field_T_smth81;DelayUpdate
Smooth/S=2 81, dL_L0_smth81,Field_T_smth81;DelayUpdate
//Differentiate
Differentiate/METH=1 dL_L0_smth81/X=Field_T_smth81/D=dL_L0_smth81_DIF;DelayUpdate
//graph
Execute "AppendToGraph/W=" + WZ2KD + " dL_L0_smth81_DIF vs Field_T_smth81"
//smoothing_121
Execute "SetdataFolder " + path2Kp + "DIF:smth121"
Duplicate/O :::dL_L0,dL_L0_smth121;DelayUpdate
Duplicate/O :::Field_T_,Field_T_smth121;DelayUpdate
Smooth/S=2 121, dL_L0_smth121,Field_T_smth121;DelayUpdate
//Differentiate
Differentiate/METH=1 dL_L0_smth121/X=Field_T_smth121/D=dL_L0_smth121_DIF;DelayUpdate
//graph
Execute "AppendToGraph/W=" + WZ2KD + " dL_L0_smth121_DIF vs Field_T_smth121"
//smoothing_221
Execute "SetdataFolder " + path2Kp + "DIF:smth221"
Duplicate/O :::dL_L0,dL_L0_smth221;DelayUpdate
Duplicate/O :::Field_T_,Field_T_smth221;DelayUpdate
Smooth/S=2 221, dL_L0_smth221,Field_T_smth221;DelayUpdate
//Differentiate
Differentiate/METH=1 dL_L0_smth221/X=Field_T_smth221/D=dL_L0_smth221_DIF;DelayUpdate
//graph
Execute "AppendToGraph/W=" + WZ2KD + " dL_L0_smth221_DIF vs Field_T_smth221"
//smoothing_451
Execute "SetdataFolder " + path2Kp + "DIF:smth451"
Duplicate/O :::dL_L0,dL_L0_smth451;DelayUpdate
Duplicate/O :::Field_T_,Field_T_smth451;DelayUpdate
Smooth/S=2 451, dL_L0_smth451,Field_T_smth451;DelayUpdate
//Differentiate
Differentiate/METH=1 dL_L0_smth451/X=Field_T_smth451/D=dL_L0_smth451_DIF;DelayUpdate
//graph
Execute "AppendToGraph/W=" + WZ2KD + " dL_L0_smth451_DIF vs Field_T_smth451"
//ten_sen
Execute "ModifyGraph/W=" + WZ2KD + " mode=3,marker=19,msize=1,rgb(dL_L0_smth31_DIF)=(52428,1,1),rgb(dL_L0_smth81_DIF)=(52428,34958,1),rgb(dL_L0_smth121_DIF)=(26205,52428,1),rgb(dL_L0_smth221_DIF)=(1,34817,52428),rgb(dL_L0_smth451_DIF)=(1,4,52428)"
Execute "DrawText/W=" + WZ2KD + " 0.5,0.78,\"\\Z20 \\f02T\\f]0 = 2K_sage\""
Execute "DrawText/W=" + WZ2KD + " 0.5,0.78,\"\\Z20 LaMgNi4 #5\""
Execute "DrawText/W=" + WZ2KD + " 0.5,0.78,\"\\Z20 \\f02L\\f]0 || [100] || \\f02B\\f]0 || [100]\""
End
//ME-5// hukusei ------------------------------------------------------
Macro PPMS_ME5_DIF_Cut()
//-●●●check●●●-// Folder Pass
string path2Kp = "root:PPMS:'yyyymmdd_Sampname':B100_para_L100:B_sweep:'2K':sage:"
string/G path2Kp
Execute "SetdataFolder " + path2Kp + "DIF:DIF_Cut"
NewdataFolder/O smth31
NewdataFolder/O smth81
NewdataFolder/O smth121
NewdataFolder/O smth221
NewdataFolder/O smth451
//Duplicate and move wave.
Execute "SetdataFolder " + path3Kp + "DIF:smth31"
Duplicate/O dL_L0_smth31_DIF, ::DIF_cut:smth31:dL_L0_smth31_DIF
Duplicate/O Field_T_smth31, ::DIF_cut:smth31:Field_T_smth31
Execute "SetdataFolder " + path3Kp + "DIF:smth81"
Duplicate/O dL_L0_smth81_DIF, ::DIF_cut:smth81:dL_L0_smth81_DIF
Duplicate/O Field_T_smth81, ::DIF_cut:smth81:Field_T_smth81
Execute "SetdataFolder " + path3Kp + "DIF:smth121"
Duplicate/O dL_L0_smth121_DIF, ::DIF_cut:smth121:dL_L0_smth121_DIF
Duplicate/O Field_T_smth121, ::DIF_cut:smth121:Field_T_smth121
//-●●●check●●●-// Specify range smth221[##1##,##1##]
Execute "SetdataFolder " + path3Kp + "DIF:smth221"
Duplicate/O/R=(##1##,##1##) dL_L0_smth221_DIF, ::DIF_cut:smth221:dL_L0_smth221_DIF
Duplicate/O/R=(##1##,##1##) Field_T_smth221, ::DIF_cut:smth221:Field_T_smth221
//-●●●check●●●-// Specify range smth451[##2##,##2##]
Execute "SetdataFolder " + path3Kp + "DIF:smth451"
Duplicate/O/R=(##2##,##2##) dL_L0_smth451_DIF, ::DIF_cut:smth451:dL_L0_smth451_DIF
Duplicate/O/R=(##2##,##2##) Field_T_smth451, ::DIF_cut:smth451:Field_T_smth451
//-●●●check●●●-// Specify range smth###
Concatenate {::DIF_Cut:smth451:dL_L0_smth451_DIF,::DIF_Cut:smth221:dL_L0_smth221_DIF},::DIF_Cut:dL_L0_smth00_DIF
Concatenate {::DIF_Cut:smth451:Field_T_smth451,::DIF_Cut:smth221:Field_T_smth221},::DIF_Cut:Field_T_smth00
Execute "AppendToGraph/W=" + WZ3KD + " ::DIF_Cut:dL_L0_smth00_DIF vs ::DIF_Cut:Field_T_smth00"
End
//ME-6// graph_DIF_Cut ------------------------------------------------------
Macro PPMS_ME6_graph()
//-●●●check●●●-// Folder Pass
string path2Kp = "root:PPMS:'yyyymmdd_Sampname':B100_para_L100:B_sweep:'2K':sage:"
string/G path2Kp
Execute "SetdataFolder " + path2Kp + "DIF:DIF_Cut"
//-●●●check●●●-// Window Name
string WZ2KDC = "La07zp_2K_dif"
string/G WZ2KDC
//-●●●check●●●-// Wave Name
Execute "Display/N=" + WZ2KDC + " dL_L0_smth00_DIF vs Field_T_smth00"
//Modify
Execute "ModifyGraph/W=" + WZ2KDC + " tick=2,noLabel=0,mirror=1,fSize=20,axThick=2,standoff=0,font=\"Arial\""
Execute "ModifyGraph/W=" + WZ2KDC + " width=340.157,height=255.118"
//Left
Execute "Label/W=" + WZ2KDC + " left \"(1/L0)*(dΔL/dB) \\u\""
Execute "ModifyGraph/W=" + WZ2KDC + " manTick(left)={0,1,-7,0},manMinor(left)={1,0};DelayUpdate"
Execute "SetAxis/W=" + WZ2KDC + " left -2e-07,2e-07;DelayUpdate"
//Bottom
Execute "Label/W=" + WZ2KDC + " bottom \"\\f02B\\f]0 (T)\""
Execute "ModifyGraph/W=" + WZ2KDC + " manTick(bottom)={0,4,0,0},manMinor(bottom)={1,0};DelayUpdate"
Execute "SetAxis/W=" + WZ2KDC + " bottom 0,12"
End
//ME-7// Curve Fit to find the slope-----------------------------------------
Macro PPMS_ME7_CurveFit()
//-●●●check●●●-// Folder Pass
string path2Kp = "root:PPMS:'yyyymmdd_Sampname':B100_para_L100:B_sweep:'2K':sage:"
string/G path2Kp
SetdataFolder path2Kp
NewdataFolder/O FIT
Execute "SetdataFolder " + path2Kp + "FIT"
//Curve Fit
CurveFit/X=1/H="10"/TBOX=768 line ::DIF:DIF_Cut:dL_L0_smth00_DIF[pcsr(A),pcsr(B)] /X=::DIF:DIF_Cut:Field_T_smth00 /D
//The line is made into a function.
Duplicate/O W_coef, X_fit;DelayUpdate
X_fit[0]=0;
X_fit[1]=4;
Duplicate/O W_coef, Y_fit;DelayUpdate
Variable/G 'AAA'
'AAA'=W_coef[1]
'Y_fit'= 'AAA'*'X_fit'
Print/D W_coef[1]
//graph
Execute "AppendToGraph/W=" + WZ2KDC + " Y_fit vs X_fit"
End
//ME-8// quadrupole susceptibility-----------------------------------------
Macro PPMS_ME8_katamuki()
string pathpb = "root:PPMS:'20230315_LaMgNi4':B100_para_L100:B_sweep:"
string/G pathpb
Execute "SetdataFolder " + pathpb + "katamuki"
//-●●●check●●●-// Folder Pass
Execute "Duplicate/O " + pathpb + "'2K':sage:FIT:W_coef, " + pathpb + "katamuki:wave0"
Execute "SetdataFolder " + pathpb + "katamuki"
Make/O/N=8 katamuki
Make/O/N=8 Temp
//-●●●check●●●-// katamuki[#]
katamuki[#]=wave0[1]
Temp[0]=2;Temp[1]=3;Temp[2]=5;Temp[3]=7;Temp[4]=10;Temp[5]=15;Temp[6]=20;Temp[7]=30
End