{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# ナイトシフトのみ($eqQ = 0$)の場合の粉末パターンスペクトル \n",
"\n",
"(初版:2020年3月、更新:2023年2月21日) \n",
"\n",
"### **共鳴周波数とナイトシフト** \n",
"\n",
"共鳴周波数$\\nu(\\theta, \\phi)$は \n",
"\n",
" $\\nu (\\theta, \\phi) = \\gamma_n H_0 [1+K(\\theta, \\phi)]$ \n",
"\n",
"と書ける。 \n",
"ここで、$H_0$は外部磁場(T)、$\\gamma_n$は核磁気回転比(MHz/T)、$K(\\theta, \\phi)$はナイトシフトである。 \n",
"___\n",
"### **ナイトシフトの角度依存性** \n",
"\n",
"$x$、$y$、$z$軸方向のナイトシフトを$K_X$、$K_Y$、$K_Z$とする。 \n",
"また、$K_{X}$,$K_{Y}$,$K_{Z}$を等方的ナイトシフト$K_{iso}$、異方的ナイトシフト$K_{an}^{i}$($i =x, y, z$)に分けると、以下のように書ける。 \n",
"\n",
" $K_{X} = K_{iso} + K_{an}^{x}$ \n",
" $K_{Y} = K_{iso} + K_{an}^{y}$ \n",
" $K_{Z} = K_{iso} + K_{an}^{z}$ \n",
"\n",
"また、以下の関係が成り立つ。 \n",
"\n",
" $K_{iso} = \\frac{1}{3}(K_X + K_Y + K_Z)$ \n",
"\n",
" $K_{an}^{x} + K_{an}^{y} + K_{an}^{z} = 0$ \n",
"\n",
"そうすると、ナイトシフトの角度依存性$K(\\theta, \\phi)$は以下のように書ける。 \n",
"\n",
" $K(\\theta, \\phi) = K_X\\sin^2\\theta\\cos^2\\phi + K_Y\\sin^2\\theta\\sin^2\\phi + K_Z\\cos^2\\theta$ \n",
"\n",
"または、 \n",
"\n",
" $K(\\theta, \\phi) = K_{iso} + \\frac{K_{an}^{z}}{2}\\left( 3\\cos^2\\theta - 1 \\right) + \\frac{K_{an}^{x} - K_{an}^{y}}{2}\\sin^2\\theta\\cos 2\\phi$ \n",
"___\n",
"### **$z$軸を主軸とした軸対称の異方性がある場合** \n",
"\n",
"等方的または異方的ナイトシフトを$K_{iso}$、$K_{an}$として、$K_{X}$、$K_{Y}$、$K_{Z}$は下記のように書くことができる。 \n",
"\n",
" $K_{Z} = K_{iso} + K_{an}^{z}= K_{iso} + 2K_{an}$ \n",
" $K_{X} = K_{iso} + K_{an}^{x}= K_{iso} - K_{an}$ \n",
" $K_{Y} = K_{iso} + K_{an}^{y}= K_{iso} - K_{an}$ \n",
"\n",
"\n",
"主軸方向に対して平行または垂直なナイトシフトを$K_{\\perp } = K_{X} = K_{Y}$,$K_{\\parallel } = K_{Z}$と書くとそれぞれの関係は \n",
"\n",
" $K_{\\parallel} = K_{iso} + 2K_{an}$ \n",
" $K_{\\perp} = K_{iso} - K_{an}$ \n",
" $K_{iso} = \\frac{1}{3}\\left( K_{\\parallel } + 2K_{\\perp } \\right)$ \n",
" $K_{an\\ } = \\frac{1}{3}\\left( K_{\\parallel } - K_{\\perp } \\right)$ \n",
"\n",
"となる。 \n",
"ナイトシフトの角度依存性は \n",
"\n",
" $K(\\theta) = K_{iso} + K_{an}\\left( 3\\cos^2\\theta - 1 \\right)$ \n",
"\n",
"または、 \n",
"\n",
" $K(\\theta) = K_{\\parallel}\\cos^2\\theta + K_{\\perp}\\sin^2\\theta$ \n",
"\n",
"と書ける。\n",
"___\n",
"### **粉末パターンスペクトル** \n",
"\n",
"異方的なナイトシフトにより共鳴周波数は角度依存性を示す。\n",
"よって、粉末試料のスペクトル(粉末パターンスペクトル)の信号強度を求めるには、下記のような計算を行えばよい。\n",
"\n",
" $I(\\nu) = \\int\\!\\!\\!\\!\\int \\delta\\left( \\gamma H_{0}\\left(1 + K(\\theta, \\phi) \\right) - \\nu \\right)\\sin\\theta d\\theta d\\phi$ \n",
"\n",
"上記は周波数スイープを考えているが、(計算時間はかかるけど)磁場スイープについても同様に計算できる。 \n",
"\n",
"以下、スペクトルの計算例を示す。"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"using Plots, BenchmarkTools"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 異方的ナイトシフトによる粉末パターンスペクトル"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" 0.197786 seconds (932.09 k allocations: 167.805 MiB, 12.71% gc time)\n"
]
},
{
"data": {
"image/svg+xml": [
"\n",
"\n"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#NMRパラメータの設定\n",
"H0 = 3.0; #(T)外部磁場\n",
"gamma0 = 17.235; #(MHz/T)核磁気回転比\n",
"\n",
"#等方的ナイトシフト\n",
"Kiso = 1.5; #(%)\n",
"#異方的ナイトシフト。Kanx+Kany+Kanz=0, |Kanz|>|Kanx|>|Kany|\n",
"Kanz = 2.4;#(%)\n",
"Kanx = -1.7;#(%)\n",
"Kany = -0.7;#(%)\n",
"\n",
"#計算周波数範囲の設定\n",
"fmin0 = 51;#MHz\n",
"fmax0 = 54;#MHz\n",
"df0 = 0.01;#MHz\n",
"\n",
"nu0 = H0*gamma0; #(MHz) K=0の共鳴周波数\n",
"KX = (Kiso+Kanx)/100;\n",
"KY = (Kiso+Kany)/100;\n",
"KZ = (Kiso+Kanz)/100;\n",
"\n",
"calfreq = collect(fmin0:df0:fmax0);#周波数の列を作る\n",
"nagasa = length(calfreq);\n",
"answave = zeros(nagasa, 2); #周波数分の列で2行の行列を作る\n",
"answave[:,1] = calfreq; #一列目に周波数を代入\n",
"\n",
"function main()\n",
" freq1 = [0.0]\n",
" int1 = [0.0]\n",
" for θ = 0:0.002:π/2\n",
" for φ = 0:0.02:π/2\n",
" freq0 = nu0*(1.0 + KZ*cos(θ)^2+sin(θ)^2*(KX*cos(φ)^2+KY*sin(φ)^2))#共鳴周波数\n",
" int0 = abs(sin(θ)) #遷移確率はθに比例\n",
" freq1 = push!(freq1, freq0)\n",
" int1 = push!(int1, int0)\n",
" end\n",
" end\n",
" for jjj = 1:nagasa\n",
" answave[jjj,2] = answave[jjj, 2] + sum(int1 .* (freq1 .<= (answave[jjj, 1] + df0/2)) .* (freq1 .> (answave[jjj,1] - df0/2)))\n",
" end\n",
"end\n",
"\n",
"@time main()\n",
"plot(answave[:,1], answave[:,2], fill = (0, :skyblue))\n",
"plot!(xlabel=\"Frequency (MHz)\", ylabel=\"Intensity\", legend=false, size=(400,300))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 軸対称の異方的ナイトシフトによる粉末パターンスペクトル"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" 0.001790 seconds (13.59 k allocations: 3.952 MiB)\n"
]
},
{
"data": {
"image/svg+xml": [
"\n",
"\n"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#NMRパラメータの設定\n",
"H0 = 3.0; #(T)外部磁場\n",
"gamma0 = 17.235; #(MHz/T)核磁気回転比\n",
"\n",
"#等方的ナイトシフト\n",
"Kiso = 1.0; #(%)\n",
"#異方的ナイトシフト\n",
"Kan = 1.0;#(%)\n",
"\n",
"#計算周波数範囲の設定\n",
"fmin0 = 51;#MHz\n",
"fmax0 = 54;#MHz\n",
"df0 = 0.01;#MHz\n",
"\n",
"nu0 = H0*gamma0; #(MHz) K=0の共鳴周波数\n",
"Kiso = Kiso/100;#%の入力を処理\n",
"Kan = Kan/100;#%の入力を処理\n",
"\n",
"calfreq = collect(fmin0:df0:fmax0);#周波数の列を作る\n",
"nagasa = length(calfreq);\n",
"answave = zeros(nagasa, 2); #周波数分の列で2行の行列を作る\n",
"answave[:,1] = calfreq; #一列目に周波数を代入\\\n",
"\n",
"function main()\n",
" freq1 = [0.0]\n",
" int1 = [0.0]\n",
" for θ = 0:0.001:π/2\n",
" freq0 = nu0*(1.0 + Kiso + Kan*(3*cos(θ)^2 - 1))#共鳴周波数\n",
" int0 = abs(sin(θ)) #遷移確率はθに比例\n",
" freq1 = push!(freq1, freq0)\n",
" int1 = push!(int1, int0)\n",
" end\n",
" for jjj = 1:nagasa\n",
" answave[jjj,2] = answave[jjj, 2] + sum(int1 .* (freq1 .<= (answave[jjj, 1] + df0/2)) .* (freq1 .> (answave[jjj,1] - df0/2)))\n",
" end\n",
"end\n",
"\n",
"@time main()\n",
"plot(answave[:,1], answave[:,2], fill = (0, :skyblue))\n",
"plot!(xlabel=\"Frequency (MHz)\", ylabel=\"Intensity\", legend=false, size=(400,300))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Julia 1.9.0-beta3",
"language": "julia",
"name": "julia-1.9"
},
"language_info": {
"file_extension": ".jl",
"mimetype": "application/julia",
"name": "julia",
"version": "1.9.0"
}
},
"nbformat": 4,
"nbformat_minor": 4
}