{ "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", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\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", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\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 }