imaginary part is missing
imksh2000
Function SF(occ, ASF, xx , z, u)
wave ASF
variable occ, xx, u, z
variable/c ci = sqrt(-1)
variable/c rtn = (occ * ASF * exp(ci*xx*z)*exp(-0.5*(xx*u)^2))
return rtn
End
Function SF_calc()
ASF_calc()
wave Q_x
wavestats/q Q_x
variable/g u_res
u_res = 1.1 / V_max
variable/g u_Ni, u_Ni_eff
u_Ni = 0.5
u_Ni_eff = sqrt(u_res^2 + u_Ni^2)
variable/g u_O, u_O_eff
u_O = 0.1
u_O_eff = sqrt(u_res^2 + u_O^2)
//UNIT CELL AND CTR //
Make/O/C/N=(numpnts(Q_x)) F_Ni, F_ctr
wave ASF_Ni, ASF_Ni2, ASF_O
variable/c ci = sqrt(-1)
F_Ni = SF(uc_occ, ASF_Ni, Q_x, d_spacing, u_Ni)
F_ctr = 1 / (1-exp(-ci*Q_x*d_spacing))
//PASSIVATED NiO LAYER//
Make/O/C/N=(numpnts(Q_x)) F_NiO1, F_NiO2, F_NiO3
variable/g gap1, gap2, gap3
gap1 = d_spacing
gap2 = d_spacing
gap3 = d_spacing * 1.1
F_NiO1 = SF(2, ASF_Ni, Q_x, gap1, 0.5)
F_NiO2 = SF(2, ASF_Ni, Q_x, gap2, 0.5)
F_NiO3 = SF(2, ASF_Ni, Q_x, gap3, 0.5)
Make/O/N=(numpnts(Q_x)) I_tot
I_tot = magsqr(F_Ni*F_ctr + F_NiO1 + F_NiO2 + F_NiO3)
Make/O/N=3 coefwave
coefwave[0] = gap1
coefwave[1] = gap2
coefwave[2] = gap3
End
wave ASF
variable occ, xx, u, z
variable/c ci = sqrt(-1)
variable/c rtn = (occ * ASF * exp(ci*xx*z)*exp(-0.5*(xx*u)^2))
return rtn
End
Function SF_calc()
ASF_calc()
wave Q_x
wavestats/q Q_x
variable/g u_res
u_res = 1.1 / V_max
variable/g u_Ni, u_Ni_eff
u_Ni = 0.5
u_Ni_eff = sqrt(u_res^2 + u_Ni^2)
variable/g u_O, u_O_eff
u_O = 0.1
u_O_eff = sqrt(u_res^2 + u_O^2)
//UNIT CELL AND CTR //
Make/O/C/N=(numpnts(Q_x)) F_Ni, F_ctr
wave ASF_Ni, ASF_Ni2, ASF_O
variable/c ci = sqrt(-1)
F_Ni = SF(uc_occ, ASF_Ni, Q_x, d_spacing, u_Ni)
F_ctr = 1 / (1-exp(-ci*Q_x*d_spacing))
//PASSIVATED NiO LAYER//
Make/O/C/N=(numpnts(Q_x)) F_NiO1, F_NiO2, F_NiO3
variable/g gap1, gap2, gap3
gap1 = d_spacing
gap2 = d_spacing
gap3 = d_spacing * 1.1
F_NiO1 = SF(2, ASF_Ni, Q_x, gap1, 0.5)
F_NiO2 = SF(2, ASF_Ni, Q_x, gap2, 0.5)
F_NiO3 = SF(2, ASF_Ni, Q_x, gap3, 0.5)
Make/O/N=(numpnts(Q_x)) I_tot
I_tot = magsqr(F_Ni*F_ctr + F_NiO1 + F_NiO2 + F_NiO3)
Make/O/N=3 coefwave
coefwave[0] = gap1
coefwave[1] = gap2
coefwave[2] = gap3
End
--
J. J. Weimer
Chemistry / Chemical & Materials Engineering, UAH
June 13, 2017 at 06:23 am - Permalink
Function/C SF(occ, ASF, xx , z, u)
. The /C flag tells Igor's compiler that the function returns a complex number.I would also recommend reading the Programming help a few times. Each time through you will retain a bit more. The first time through a manual like the Programming help it is very hard to put together a coherent impression of the contents.
John Weeks
WaveMetrics, Inc.
support@wavemetrics.com
June 13, 2017 at 08:57 am - Permalink