{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## 局在モーメントの磁化 ##\n", "\n", "(初版:2020年3月、更新:2023年2月21日) " ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "using Plots\n", "using Plots.PlotMeasures\n", "using LaTeXStrings" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$g \\mu_B J$の磁気モーメントを持つ原子が$N$個ある場合、磁化$M$は \n", "\n", "  $M(H,T) = Ng \\mu_B JB\\left( \\frac{g \\mu_B J H}{k_B T} \\right)$ \n", "\n", "となる。ボーア磁子単位にした1イオンあたりの磁化は、 \n", "\n", "  $\\mu (H,T) = g JB\\left( \\frac{g \\mu_B J H}{k_B T} \\right)$ [$\\mu_B$ / ion]\n", "\n", "となる。$B$はブリルアン関数で、" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "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" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "B(x) = ((2J+1)/2J)*coth(((2J+1)/2J)*x) - (1/2J)*coth(x/2J)\n", "J = 7/2;\n", "x = collect(0:0.1:30);\n", "y = B.(x);\n", "\n", "plot(x, y)\n", "plot!(size=(500, 300), xlabel=L\"x\", ylabel=L\"B(x)\", legend = false)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "となる。\n", "指定した温度での磁化の磁場変化は以下のようになる。" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "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", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "μB = 9.27410*10^(-21); #ボーア磁子\n", "kB = 1.3866*10^(-16); #ボルツマン定数\n", "NA = 6.02217*10^(23); #アボガドロ数\n", "J = 7/2; #全角運動量\n", "L = 0; #軌道角運動量\n", "S = 7/2; #スピン\n", "T = 2; #温度\n", "g = 3/2 + (S*(S+1)-L*(L+1))/(2J*(J+1)) #g因子\n", "B(x) = ((2J+1)/2J)*coth(((2J+1)/2J)*x) - (1/2J)*coth(x/2J) #ブリュアン関数\n", "MH(H) = g*J*B((J*g*μB*H)/(kB*T)) #磁化の式(磁場依存性として設定)\n", "\n", "h = collect(1:100:70000); #磁場(Oe)\n", "m = MH.(h) #磁化(μB/ion)\n", "\n", "plot(h,m)\n", "plot!(size = (500, 300), xlabel = L\"H\\quad \\textrm{(Oe)}\", ylabel = L\"M\\quad (\\mu_\\textrm{B}/\\textrm{ion})\", ylims = (0,7), legend = false)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 分子場:Weiss理論 ##\n", "前述のように磁化$M$は\n", "\n", " $M = Ng \\mu_B JB\\left( \\frac{g \\mu_B J H}{k_B T} \\right)$ ・・・式(A)\n", "\n", "と書ける。 \n", "磁化$M$による分子場$H_E$を、分子場係数$\\lambda$を用いて以下のように定義する。\n", "\n", "  $H_E = \\lambda M$\n", "\n", "そうすると、これを書き換えて磁化$M$は\n", "\n", " $M = \\frac{H_E}{\\lambda}$ ・・・式(B)\n", " \n", "となる。 \n", "磁化$M$により分子場$H_E$が生じ、また、分子場により磁化が生じる。 \n", "つまり、「式(A)=式(B)」となれば、磁化が自発的に出るということである。 \n", "ここで、\n", "\n", " $x = \\frac{g \\mu_B H_E}{k_B T}$、または $H_E = \\frac{k_B T x}{g \\mu_B}$\n", " \n", "とすると、式(A)と式(B)は\n", "\n", " $M = Ng \\mu_B JB\\left( Jx \\right)$ ・・・式(C)\n", " \n", " $M = \\frac{k_B T}{\\lambda g \\mu_B}$ ・・・式(D)\n", " \n", "となる。 \n", "さらに、飽和磁化 $M_0 = Ng\\mu_B J$ と転移温度 $T_C = \\frac{\\lambda J(J+1)Ng^2 \\mu_B^2}{3k_B}$ を用いて書き直すと\n", "\n", " $\\frac{M}{M_0} = B\\left( Jx \\right)$ ・・・式(E)\n", " \n", " $\\frac{M}{M_0} = \\frac{J+1}{3J}\\frac{T}{T_C}x$ ・・・式(F)\n", " \n", "となる。 \n", "これらをグラフに描くと以下のようになる。 \n", "式(F)についてはいくつかの温度(T/Tc)についてプロットしてある。" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "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", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "J = 7/2; #全角運動量\n", "t1 = collect(0.1:0.2:0.9); #計算する温度(転移温度で規格化した温度 : T/T_C)\n", "x = collect(0:0.1:30);\n", "m1 = ((2J+1)/2J) * coth.(((2J+1)/2J) * x) - (1/2J) * coth.(x/2J)\n", "m2 = (t1' * (J+1)/3J) .* x\n", "\n", "plot(x, [m1 m2])\n", "plot!(size=(500, 300), xlabel = L\"x\", ylabel = L\"M/M_0\", legend = false, xlims = (0, 20), ylims = (0, 1.2))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "グラフを見てわかるように、$T_C$ 以下で 式(E)と式(F)は $T = 0$ 以外の交点を持つ。 \n", "つまり、有限の自発磁化の存在を示す。 \n", "これを求めることにより、自発磁化の温度依存性が得られる。 " ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "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" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "using Roots\n", "\n", "function FindRootCalc(J, t)\n", " m1(x) = ((2J+1)/2J) * coth(((2J+1)/2J) * x) - (1/2J) * coth(x/2J)\n", " m2(x) = (t * (J+1)/3J) * x\n", " m3(x) = m1(x)-m2(x)\n", " sss = find_zero(m3, 100, Order16())\n", "end\n", "\n", "J = 7/2; #全角運動量\n", "calcT = collect(0.01:0.01:1); #T/Tc\n", "calcM = FindRootCalc.(J, calcT) .* calcT * (J+1)/3J; #M/M0\n", " \n", "plot(calcT, calcM)\n", "plot!(size=(500, 300), xlabel = L\"T/T_c\", ylabel = L\"M/M_0\", legend = false, xlims = (0, 1.1), ylims = (0, 1.1))" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "\"molecularfield.csv\"" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "using CSV, DataFrames\n", "function saveData2(xwave, y1wave, filename::String)\n", " df = DataFrame(TdivTc = xwave, MdivM0 = y1wave);\n", " df |> CSV.write(filename)\n", "end\n", "\n", "saveData2(calcT, calcM, \"molecularfield.csv\")" ] }, { "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 }