Research Notes

T. Matsumura

結晶場中における局在4f電子系の波動関数と熱力学的物理量の計算

Mathematica routines

      • 磁化

      • 比熱とエントロピー

      • 歪み感受率

      • 平均場近似(self-consistentな固有状態の計算)

磁化

基本ルーチン

  • – Note –
  • hhh: Magnetic field (Tesla), hhhdirec: Unit vector of the field direction, temp: Temperature (K)mag: Magnetization (muB/ion)chi: Magnetic susceptibility (emu/mol) (c.f.) 0.5585 = 9.274e-21*6.02217e+23/10000
  • (* Magnetization *)
    hhh=10; hhhdirec={1,1,0}/Sqrt[2];
    temp=5;
    da=(dcef+g*0.67171*(hhh+0.000001)*(hhhdirec.{eljx,eljy,eljz}));
    {valsa,vecsa}=Chop[Eigensystem[N[da]]];

    za=Sum[Exp[-valsa[[i]]/temp],{i,1,2*J+1}];
    magx = -g*N[Sum[(Conjugate[vecsa[[i]]].eljx.vecsa[[i]])*Exp[-valsa[[i]]/temp]/za,{i,1,2*J+1}]];
    magy = -g*N[Sum[(Conjugate[vecsa[[i]]].eljy.vecsa[[i]])*Exp[-valsa[[i]]/temp]/za,{i,1,2*J+1}]];
    magz = -g*N[Sum[(Conjugate[vecsa[[i]]].eljz.vecsa[[i]])*Exp[-valsa[[i]]/temp]/za,{i,1,2*J+1}]];
    mag={magx,magy,magz}.hhhdirec;
    chi=mag/hhh*0.5585;

例1:磁場変化

  • (* Field dependence of magnetization *)
    hhhdirec = {1, 1, 0}/Sqrt[2];
    temp = 5;
    magans = {};
    start = 0; finish = 15; step = 0.2;

    ii = 0;
    While[ii <= (finish - start)/step, hhh = start + step*ii;
    da = (dcef + g*0.67171*(hhh + 0.000001)*(hhhdirec.{eljx, eljy, eljz}));
    {valsa, vecsa} = Chop[Eigensystem[N[da]]];
    za = Sum[Exp[-valsa[[i]]/temp], {i, 1, 2*J + 1}];
    magx = -g*N[Sum[(Conjugate[vecsa[[i]]].eljx.vecsa[[i]])*Exp[-valsa[[i]]/temp]/za
    , {i,1,2*J+1}]];
    magy = -g*N[Sum[(Conjugate[vecsa[[i]]].eljy.vecsa[[i]])*Exp[-valsa[[i]]/temp]/za
    , {i,1,2*J+1}]];
    magz = -g*N[Sum[(Conjugate[vecsa[[i]]].eljz.vecsa[[i]])*Exp[-valsa[[i]]/temp]/za
    , {i,1,2*J+1}]];
    mag = Chop[{magx, magy, magz}.hhhdirec];
    magans = Append[magans, {hhh, mag}]; ii++];

    ListPlot[magans]

(Fig. 1)
Ce3+: Γ7(0)-Γ8(42 K), T=5 K.

例2:温度変化(帯磁率)

  • 弱磁場をかけて固有状態を求め,磁化を計算し,磁場で割って帯磁率を求める.
  • (* Temperature dependence of magnetization *)
    hhh=0.01; hhhdirec = {1, 1, 0}/Sqrt[2];
    da = (dcef + g*0.67171*(hhh + 0.000001)*(hhhdirec.{eljx, eljy, eljz}));
    {valsa, vecsa} = Chop[Eigensystem[N[da]]];

    magans = {};
    start = 0.2; finish = 70; step = 0.2;

    ii = 0;
    While[ii <= (finish - start)/step, temp = start + step*ii;
    za = Sum[Exp[-valsa[[i]]/temp], {i, 1, 2*J + 1}];
    magx = -g*N[Sum[(Conjugate[vecsa[[i]]].eljx.vecsa[[i]])*Exp[-valsa[[i]]/temp]/za, {i,1,2*J+1}]];
    magy = -g*N[Sum[(Conjugate[vecsa[[i]]].eljy.vecsa[[i]])*Exp[-valsa[[i]]/temp]/za, {i,1,2*J+1}]];
    magz = -g*N[Sum[(Conjugate[vecsa[[i]]].eljz.vecsa[[i]])*Exp[-valsa[[i]]/temp]/za, {i,1,2*J+1}]];
    mag = Chop[{magx, magy, magz}.hhhdirec];
    magans = Append[magans, {temp, mag}]; ii++];
    chi = Table[{magans[[i,1]],magans[[i,2]]/hhh*0.5585},{i,1,Length[magans]}];
    chiinv = Table[{magans[[i,1]],1/(magans[[i, 2]]/hhh*0.5585)},{i,1,Length[magans]}];
    ListPlot[chiinv, Joined -> True, PlotRange -> {{0, 70}, {0, 90}}]

(Fig. 2)
Ce3+: Γ7(0)-Γ8(42 K), H=0.01 T

比熱とエントロピー

基本ルーチン

  • – Note –
  • hhh: Magnetic field (Tesla), hhhdirec: Unit vector of the field direction, temp: Temperature (K)
    spcheat: Specific heat (J/K mol)
    entropy: Entropy (J/K mol)
  • (* Specific heat and entropy *)
    hhh=5; hhhdirec={1,1,0}/Sqrt[2];
    temp=5;
    da=(dcef+g*0.67171*(hhh+0.000001)*(hhhdirec.{eljx,eljy,eljz}));
    {valsa,vecsa}=Chop[Eigensystem[N[da]]];
    z0=Sum[Exp[-valsa[[i]]/temp],{i,1,2*J+1}];
    z1=Sum[valsa[[i]]/temp^2*Exp[-valsa[[i]]/temp],{i,1,2*J+1}];
    z2=Sum[(-2*valsa[[i]]/temp^3+(valsa[[i]]/temp^2)^2)*Exp[-valsa[[i]]/temp],{i,1,2*J+1}];
    spcheat=(2*temp/z0*z1-temp^2/z0^2*z1^2+temp^2/z0*z2)*8.31441;
    entropy=(Log[z0]+temp/z0*z1)*8.31441;

例:温度変化

  • (* Temperature dependence *)
    
hhhdirec = {1, 1, 0}/Sqrt[2];
    
hhh = 5;

    spchans={}; enpyans={};

    start = 0.5; finish = 50; step = 0.5;

    da = (dcef + g*0.67171*(hhh + 0.000001)*(hhhdirec.{eljx, eljy, eljz}));

    {valsa, vecsa} = Chop[Eigensystem[N[da]]];

    ii = 0;

    While[ii <= (finish - start)/step, temp = start + step*ii;

    z0=Sum[Exp[-valsa[[i]]/temp],{i,1,2*J+1}];

    z1=Sum[valsa[[i]]/temp^2*Exp[-valsa[[i]]/temp],{i,1,2*J+1}];

    z2=Sum[(-2*valsa[[i]]/temp^3+(valsa[[i]]/temp^2)^2)*Exp[-valsa[[i]]/temp],{i,1,2*J+1}];

    spcheat=(2*temp/z0*z1-temp^2/z0^2*z1^2+temp^2/z0*z2)*8.31441;

    entropy=(Log[z0]+temp/z0*z1)*8.31441;

    spchans = Append[spchans, {temp, spcheat}];

    enpyans = Append[enpyans, {temp, entropy}]; ii++];

    GraphicsRow[{ListPlot[spchans,Joined->True,PlotRange->All],

    ListPlot[enpyans,Joined->True,PlotRange->All]}]


(Fig. 3)
Ce3+: Γ7(0)-Γ8(42 K), H=5 T.

歪み感受率

基本方針:歪み有りの固有状態での四極子の期待値から,歪みなしの固有状態での四極子の期待値を引いて,歪みの大きさで割る.

基本ルーチン

  • – Note –
    hhh: Magnetic field (Tesla), hhhdirec: Unit vector of the field direction, temp: Temperature (K)
    strain: strain (no unit), elquad: matrix of corresponding quadrupolar moment for the J-multiplet
    stsus: strain susceptibility
  • (* Strain susceptibility *)
    strain=0.001;elquad = eloyz;
    hhh=10; hhhdirec={1,1,0}/Sqrt[2];
    temp=5;

    (* without strain *)
    da0=(dcef+g*0.67171*(hhh+0.000001)*(hhhdirec.{eljx,eljy,eljz}));
    {vals0,vecs0}=Chop[Eigensystem[N[da0]]];
    z0=Sum[Exp[-vals0[[i]]/temp],{i,1,2*J+1}];

    (* with strain *)
    da1=(da0-strain*elquad);
    {valsa,vecsa}=Chop[Eigensystem[N[da1]]];
    za=Sum[Exp[-valsa[[i]]/temp],{i,1,2*J+1}];

    quadi=Chop[Sum[(Conjugate[vecs0[[i]]].elquad.vecs0[[i]])*Exp[-vals0[[i]]/temp],{i,1,2*J+1}]/z0];
    quadf=Chop[Sum[(Conjugate[vecsa[[i]]].elquad.vecsa[[i]])*Exp[-valsa[[i]]/temp],{i,1,2*J+1}]/za];
    stsus=(quadf-quadi)/strain;

例:温度変化

  • (* Temperature dependence *)

    strain=0.001;

    elquad = elo20;

    hhh = 0.01; hhhdirec = {1, 1, 0}/Sqrt[2];

    stsusans={};

    start = 0.2; finish = 50; step = 0.2;

    (* without strain *)

    da0=(dcef+g*0.67171*(hhh+0.000001)*(hhhdirec.{eljx,eljy,eljz}));

    {vals0,vecs0}=Chop[Eigensystem[N[da0]]];

    (* with strain *)

    da1=(da0-strain*elquad);

    {valsa,vecsa}=Chop[Eigensystem[N[da1]]];

    ii = 0;

    While[ii <= (finish - start)/step, temp = start + step*ii;

    z0=Sum[Exp[-vals0[[i]]/temp],{i,1,2*J+1}];

    za=Sum[Exp[-valsa[[i]]/temp],{i,1,2*J+1}];

    quadi=Chop[Sum[(Conjugate[vecs0[[i]]].elquad.vecs0[[i]])*Exp[-vals0[[i]]/temp],{i,1,2*J+1}]/z0];

    quadf=Chop[Sum[(Conjugate[vecsa[[i]]].elquad.vecsa[[i]])*Exp[-valsa[[i]]/temp],{i,1,2*J+1}]/za];

    stsus=(quadf-quadi)/strain;

    stsusans = Append[stsusans, {temp, stsus}]; ii++];

    ListPlot[stsusans,PlotRange->All]


(Fig. 4)
Ce3+: Γ7(0)-Γ8(42 K), H=0.01 T. solid line: O20, dashed line: Oxy

平均場近似 (self-consistentな固有状態の計算)

基本例:

  • – Note –
  • モデル:AB部分格子間に反強磁性相互作用が働き,z軸方向の磁気モーメントが互いに逆向きに発生して秩序化している.x成分とy成分はゼロとする.さらに,z軸方向に磁場がかかっており(平行磁場),AB両サイトの磁気モーメントが異なる絶対値を持つ(磁場方向のモーメントは伸び,反対方向のモーメントは縮む).
    calc: 初期値を入れると計算結果を返すモジュール.ここでモデルを定義.
    jzai: A格子の<Jz>の初期値,jzbi: B格子の<Jz>の初期値.
    jzaf: A格子の<Jz>の計算結果,jzbf: B格子の<Jz>の計算結果.
    jab: 交換相互作用定数.
    eps: 収束判断しきい値. |(計算結果ー初期値)/初期値| < eps なら収束とみなす.
  • (* Module for the mean-field calculation, a two-sublattice model with AF interaction between Jz *)

    calc[jzai_,jzbi_]:=Module[{jzaf,jzbf},
    
da=(dcef+g*0.67171*hhh*eljz)-jab*(jzbi*eljz);

    db=(dcef+g*0.67171*hhh*eljz)-jab*(jzai*eljz);

    {valsa,vecsa}=Chop[Eigensystem[N[da]]];

    {valsb,vecsb}=Chop[Eigensystem[N[db]]]; 

    za=Sum[Exp[-valsa[[i]]/temp],{i,1,2*J+1}];

    zb=Sum[Exp[-valsb[[i]]/temp],{i,1,2*J+1}];

    {jzaf=Chop[Sum[(Conjugate[vecsa[[i]]].eljz.vecsa[[i]])*Exp[-valsa[[i]]/temp]/za,{i,1,2*J+1}]],

    jzbf=Chop[Sum[(Conjugate[vecsb[[i]]].eljz.vecsb[[i]])*Exp[-valsb[[i]]/temp]/zb,{i,1,2*J+1}]]}

    ]

    err[]:=Module[{},{jzaf,jzbf}=calc[jzai,jzbi];

    error=Chop[Abs[({jzaf,jzbf}-{jzai,jzbi})/{jzai,jzbi}],diff]]

    (* mean-field parameters *)
    
eps=0.0001; diff=eps/10;

    jab=-5;

    hhh=0.01;

    temp=0.2;

    (* initial values *)

    jzai=-0.5;

    jzbi=0.5;

    (* one cycle of the mean-field calculation *)

    {jzaf,jzbf}=calc[jzai,jzbi]

    err[]

    (* a simple method to get to a self-consistent solution *)

    findans[]:=Module[{},ia=0;err[];

    While[(Max[error]>eps),ia++;

    {jzai,jzbi}=Chop[{jzai,jzbi}+(calc[jzai,jzbi]-{jzai,jzbi})*0.8];

    err[]];

    ]

    findans[];

    Print[{jzai, jzbi}, Tab, ia, Tab, error]


例:温度変化の計算

  • (* calculate the temperature dependence *)

    ans={};

    temp=0.2; step=0.2;

    While[temp<30,findans[];

    Print[temp,Tab,Chop[{jzai,jzbi}],Tab,ia,Tab,error];

    z = za*zb*Exp[-jab*(jzai*jzbi)/temp];

    fe = -temp*Log[z]/2;

    AppendTo[ans,Chop[{temp,jzai,jzbi,fe}]];

    temp+=step];

    (* Plot the antiferromagnetic and ferromagnetic component *)

    ansexp=Sort[ans];

    jzAF=Table[{ansexp[[i,1]],-g*(ansexp[[i,2]]-ansexp[[i,3]])/2},{i,1,Length[ansexp]}];

    jzF=Table[{ansexp[[i,1]],-g*(ansexp[[i,2]]+ansexp[[i,3]])/2},{i,1,Length[ansexp]}];

    ListPlot[jzAF,PlotRange->All]

    ListPlot[jzF,PlotRange->All]


(Fig. 5)
(左)AF成分,(中)Ferro成分,(右)Ferro成分を帯磁率にしたもの.点線は相互作用なし の場合(Fig. 2).
Ce3+: Γ7(0)-Γ8(42 K), H=0.01 T.

  • (*********** advanced calculation ************)

    (* rapid and safe estimate of the next solution, set frac *)
    ans={};
    temp=0.2; step=0.2; frac=1/2;
    While[temp<30,findans[];
    Print[temp,Tab,Chop[{jzai,jzbi}],ia,error];
    z = za*zb*Exp[-jab*(jzai*jzbi)/temp];
    fe = -temp*Log[z]/2;
    AppendTo[ans,Chop[{temp,jzai,jzbi,fe}]];
    nn = Length[ans];
    If[nn >= 2, {dum, jzai, jzbi, dum} = ans[[nn]] + (ans[[nn]] - ans[[nn - 1]])*frac];
    temp+=step];

  • (* calculation of specific heat and entropy *)
    ndata=Length[ans];
    fengy=Table[{ans[[ii,1]],ans[[ii,4]]},{ii,1,ndata}];
    ery=Table[{(fengy[[i,1]]+fengy[[i+1,1]])/2,
    -8.31441*(fengy[[i+1,2]]-fengy[[i,2]])/(fengy[[i+1,1]]-fengy[[i,1]])},{i,1,ndata-1}];
    ndata=Length[ery];
    spch=Table[{t=(ery[[i,1]]+ery[[i+1,1]])/2,
    t*(ery[[i+1,2]]-ery[[i,2]])/(ery[[i+1,1]]-ery[[i,1]])},{i,1,ndata-1}];

(Fig. 6)