NDSolve Singularity in solving LLG equation
- To: mathgroup at smc.vnet.net
- Subject: [mg126321] NDSolve Singularity in solving LLG equation
- From: Jiwan Kim <hwoarang.kim at gmail.com>
- Date: Tue, 1 May 2012 05:21:24 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
Hello, Mathgroup. I am trying to solve the famous Landau-Lifshitz-Gilbert equation, which explains the dynamic motion of the magnetization in ferromagnetics. (dM/dt = -(gamma*mu0)MxHeff + alpha/M (MxdM/dt). (x : vector product) The reducing magnitude of magnetization at time=0 triggers the precession motion. Using this equation I want to get the theta[t] and phi[t] in spherical coordinate system. But, now I have a problem that the error message "NDSolve::ndsz: At t == -2.1091991871443846`*^-13, step size is effectively zero; singularity or stiff system suspected". I don't think that the equation includes the diverging point. And this error message always appears when the value of 'SpinTempData' starts to increase from 300. I suspect that D[Mr[t], t] is not working well in this code. I don't know the reason. Could you help me? Plz..... In this code, I used (r, theta, phi) parameter instead of (x,y,z), but Cartesian basis vector was used when the vector product was conducted (in eq2 expression in the code, I used 'x' instead of CrossProduct to get a vectorproduct in Cartesian coordinate) I attached the following code (SpinTempData is included) : --------------------------------------------------------------------------------------------------------------------------- Remove["Global`*"]; Needs["VectorAnalysis`"] SetCoordinates[Spherical]; \[Mu]0 = 4 \[Pi] 10^-7;(* [H/m] *) Ms = 0.66/\[Mu]0;(* 525 emu/cc=0.66 *) Hext = 0.45/\[Mu]0; (* Ms, Hext [A/m] *) \[Alpha]f = 0.05; \[Gamma] = 1.76 10^11; K0 = -0.5 10^4; \[Psi] = 35 \[Pi]/180.0; ps = 10^-12; \[Beta] = 1.34 10^-5; \[Nu] = 0.3; B = 1.8 10^11; \[Lambda]s = -3.4 10^-5; Tc = 631; Tp = 98; Rac = -0.39; \ \[Sigma]s1 = 1; \[Xi]1 = 13.5; \[Xi]2 = 14.5; Nx = 1/3; Ny = 1/3; Nz = 1/3; \[Rho] = 8910; v = 4082; SpinTempData = {{-5.`, 300}, {-4.95`, 300}, {-4.9`, 300}, {-4.85`, 300}, {-4.8`, 300}, {-4.75`, 300}, {-4.7`, 300}, {-4.65`, 300}, {-4.6`, 300}, {-4.55`, 300}, {-4.5`, 300}, {-4.45`, 300}, {-4.4`, 300}, {-4.35`, 300}, {-4.3`, 300}, {-4.25`, 300}, {-4.2`, 300}, {-4.15`, 300}, {-4.1`, 300}, {-4.05`, 300}, {-4.`, 300}, {-3.95`, 300}, {-3.9`, 300}, {-3.85`, 300}, {-3.8`, 300}, {-3.75`, 300}, {-3.7`, 300}, {-3.65`, 300}, {-3.6`, 300}, {-3.55`, 300}, {-3.5`, 300}, {-3.45`, 300}, {-3.4`, 300}, {-3.35`, 300}, {-3.3`, 300}, {-3.25`, 300}, {-3.2`, 300}, {-3.15`, 300}, {-3.1`, 300}, {-3.05`, 300}, {-3.`, 300}, {-2.95`, 300}, {-2.9`, 300}, {-2.85`, 300}, {-2.8`, 300}, {-2.75`, 300}, {-2.7`, 300}, {-2.65`, 300}, {-2.6`, 300}, {-2.55`, 300}, {-2.5`, 300}, {-2.45`, 300}, {-2.4`, 300}, {-2.35`, 300}, {-2.3`, 300}, {-2.25`, 300}, {-2.2`, 300}, {-2.15`, 300}, {-2.1`, 300}, {-2.05`, 300}, {-2.`, 300}, {-1.95`, 300}, {-1.9`, 300}, {-1.85`, 300}, {-1.8`, 300}, {-1.75`, 300}, {-1.7`, 300}, {-1.65`, 300}, {-1.6`, 300}, {-1.55`, 300}, {-1.5`, 300}, {-1.45`, 300}, {-1.4`, 300}, {-1.35`, 300}, {-1.3`, 300}, {-1.25`, 300}, {-1.2`, 300}, {-1.15`, 300}, {-1.1`, 300}, {-1.05`, 300}, {-1.`, 300}, {-0.95`, 300}, {-0.9`, 300}, {-0.85`, 300}, {-0.8`, 300}, {-0.75`, 300}, {-0.7`, 300}, {-0.65`, 300}, {-0.6`, 300}, {-0.55`, 300}, {-0.5`, 300}, {-0.45`, 300}, {-0.4`, 300}, {-0.35`, 300.00029`}, {-0.3`, 300.00057`}, {-0.25`, 300.00588`}, {-0.2`, 300.05339`}, {-0.15`, 300.48233`}, {-0.1`, 303.32062`}, {-0.05`, 314.09299`}, {-9.39526`*^-15, 337.36538`}, {0.05`, 369.43267`}, {0.1`, 402.14368`}, {0.15`, 430.44968`}, {0.2`, 453.56358`}, {0.25`, 472.37784`}, {0.3`, 487.89433`}, {0.35`, 500.84204`}, {0.4`, 511.7486`}, {0.45`, 521.00431`}, {0.5`, 528.89807`}, {0.55`, 535.64818`}, {0.6`, 541.43276`}, {0.65`, 546.38944`}, {0.7`, 550.63141`}, {0.75`, 554.25236`}, {0.8`, 557.32945`}, {0.85`, 559.92689`}, {0.9`, 562.10125`}, {0.95`, 563.89989`}, {1.`, 565.36016`}, {1.05`, 566.51965`}, {1.1`, 567.4031`}, {1.15`, 568.04153`}, {1.2`, 568.45306`}, {1.25`, 568.66236`}, {1.3`, 568.68462`}, {1.35`, 568.53867`}, {1.4`, 568.23797`}, {1.45`, 567.79709`}, {1.5`, 567.22686`}, {1.55`, 566.53977`}, {1.6`, 565.74438`}, {1.65`, 564.85152`}, {1.7`, 563.86864`}, {1.75`, 562.80459`}, {1.8`, 561.66652`}, {1.85`, 560.46151`}, {1.9`, 559.19632`}, {1.95`, 557.87689`}, {2.`, 556.50931`}, {2.05`, 555.09879`}, {2.1`, 553.6507`}, {2.15`, 552.16966`}, {2.2`, 550.66042`}, {2.25`, 549.1271`}, {2.3`, 547.57386`}, {2.35`, 546.0044`}, {2.4`, 544.42235`}, {2.45`, 542.83101`}, {2.5`, 541.23351`}, {2.55`, 539.6328`}, {2.6`, 538.03158`}, {2.65`, 536.43244`}, {2.7`, 534.83766`}, {2.75`, 533.24951`}, {2.8`, 531.66993`}, {2.85`, 530.10083`}, {2.9`, 528.54384`}, {2.95`, 527.00058`}, {3.`, 525.47245`}, {3.05`, 523.96065`}, {3.1`, 522.4663`}, {3.15`, 520.99046`}, {3.2`, 519.53391`}, {3.25`, 518.09775`}, {3.3`, 516.68226`}, {3.35`, 515.28843`}, {3.4`, 513.91649`}, {3.45`, 512.56702`}, {3.5`, 511.24031`}, {3.55`, 509.93651`}, {3.6`, 508.65601`}, {3.65`, 507.39864`}, {3.7`, 506.16475`}, {3.75`, 504.95404`}, {3.8`, 503.76671`}, {3.85`, 502.60244`}, {3.9`, 501.46125`}, {3.95`, 500.34284`}, {4.`, 499.24705`}, {4.05`, 498.17363`}, {4.1`, 497.12225`}, {4.15`, 496.09268`}, {4.2`, 495.08452`}, {4.25`, 494.09751`}, {4.3`, 493.13119`}, {4.35`, 492.18529`}, {4.4`, 491.25934`}, {4.45`, 490.353`}, {4.5`, 489.46584`}, {4.55`, 488.59747`}, {4.6`, 487.74747`}, {4.65`, 486.91542`}, {4.7`, 486.10092`}, {4.75`, 485.30354`}, {4.8`, 484.52288`}, {4.85`, 483.75851`}, {4.9`, 483.01004`}, {4.95`, 482.27705`}, {5.`, 481.55915`}, {5.5`, 475.12589`}, {6.`, 469.80928`}, {6.5`, 465.32763`}, {7.`, 461.47028`}, {7.5`, 458.08379`}, {8.`, 455.05749`}, {8.5`, 452.31161`}, {9.`, 449.78841`}, {9.5`, 447.44569`}, {10.`, 445.25233`}, {10.5`, 443.18502`}, {11.`, 441.22612`}, {11.5`, 439.36201`}, {12.`, 437.58201`}, {12.5`, 435.87759`}, {13.`, 434.24183`}, {13.5`, 432.669`}, {14.`, 431.15426`}, {14.5`, 429.69348`}, {15.`, 428.28306`}, {15.5`, 426.91983`}, {16.`, 425.60098`}, {16.5`, 424.32397`}, {17.`, 423.08651`}, {17.5`, 421.8865`}, {18.`, 420.72202`}, {18.5`, 419.5913`}, {19.`, 418.49269`}, {19.5`, 417.42466`}, {20.`, 416.38581`}, {20.5`, 415.37479`}, {21.`, 414.39037`}, {21.5`, 413.43139`}, {22.`, 412.49675`}, {22.5`, 411.58543`}, {23.`, 410.69646`}, {23.5`, 409.82893`}, {24.`, 408.98198`}, {24.5`, 408.1548`}, {25.`, 407.34662`}, {25.5`, 406.55672`}, {26.`, 405.78441`}, {26.5`, 405.02904`}, {27.`, 404.28998`}, {27.5`, 403.56666`}, {28.`, 402.85852`}, {28.5`, 402.16502`}, {29.`, 401.48566`}, {29.5`, 400.81996`}, {30.`, 400.16746`}} datanum = Count[SpinTempData[[All, 1]], _Real]; Curie[temp_] := Ms ((1 - Exp[(temp - Tc)/Tc])/(1 - Exp[(300 - Tc)/Tc]))^0.51; SpinData = Table[{ps SpinTempData[[i, 1]], Curie[SpinTempData[[i, 2]]]}, {i, 1, datanum}]; SpinDataitp = Interpolation[SpinData]; Plot[SpinDataitp[t], {t, -5 ps, 30 ps}, PlotRange -> All] Mr[t_] := If[t > -5 ps, SpinDataitp[t], Ms]; Plot[Mr[t], {t, -5 ps, 30 ps}, PlotRange -> All] Module[{t, \[Theta]2, \[Phi]2}, Energy[t_, \[Theta]2_, \[Phi]2_] := (1/2 \[Mu]0 Nz Mr[ t]^2) Cos[\[Theta]2]^2 + 1/2 \[Mu]0 Mr[ t]^2 Sin[\[Theta]2]^2 (Ny Sin[\[Phi]2]^2 + Nx Cos[\[Phi]2]^2) - \[Mu]0 Hext Mr[ t] (Sin[\[Theta]2] Sin[\[Phi]2] Sin[\[Psi]] + Cos[\[Theta]2] Cos[\[Psi]]); \[Theta]0 = FindArgMin[ Energy[-5 ps, \[Theta]2, \[Pi]/2], {\[Theta]2, \[Pi]/4}];]; \[Theta]0 = \[Theta]0[[1]] M = {Mr[t] Sin[\[Theta][t]] Cos[\[Phi][t]], Mr[t] Sin[\[Theta][t]] Sin[\[Phi][t]], Mr[t] Cos[\[Theta][t]]}; Heff1 = {(-Mr[t] (Nz Cos[\[Theta][t]]^2 + Ny Sin[\[Theta][t]]^2 Sin[\[Phi][t]]^2 + Nx Sin[\[Theta][t]]^2 Cos[\[Phi][t]]^2) + Hext (Sin[\[Theta][t]] Sin[\[Phi][t]] Sin[\[Psi]] + Cos[\[Theta][t]] Cos[\[Psi]])) Sin[\[Theta][t]] Cos[\[Phi][ t]] + ((Nz Mr[ t] - (2 K0 + 3 \[Lambda]s \[Sigma]s1)/(\[Mu]0 Mr[t]) - Mr[t] Ny Sin[\[Phi][t]]^2 - Mr[t] Nx Cos[\[Phi][t]]^2) Sin[\[Theta][t]] Cos[\[Theta][ t]] + Hext (Cos[\[Theta][t]] Sin[\[Phi][t]] Sin[\[Psi]] - Sin[\[Theta][t]] Cos[\[Psi]])) Cos[\[Theta][t]] Cos[\[Phi][ t]] - (Mr[ t] (Nx - Ny) Sin[\[Theta][t]] Sin[\[Phi][t]] Cos[\[Phi][t]] + Hext Cos[\[Phi][t]] Sin[\[Psi]]) Sin[\[Phi][ t]], (-Mr[t] (Nz Cos[\[Theta][t]]^2 + Ny Sin[\[Theta][t]]^2 Sin[\[Phi][t]]^2 + Nx Sin[\[Theta][t]]^2 Cos[\[Phi][t]]^2) + Hext (Sin[\[Theta][t]] Sin[\[Phi][t]] Sin[\[Psi]] + Cos[\[Theta][t]] Cos[\[Psi]])) Sin[\[Theta][t]] Sin[\[Phi][ t]] + ((Nz Mr[ t] - (2 K0 + 3 \[Lambda]s \[Sigma]s1)/(\[Mu]0 Mr[t]) - Mr[t] Ny Sin[\[Phi][t]]^2 - Mr[t] Nx Cos[\[Phi][t]]^2) Sin[\[Theta][t]] Cos[\[Theta][ t]] + Hext (Cos[\[Theta][t]] Sin[\[Phi][t]] Sin[\[Psi]] - Sin[\[Theta][t]] Cos[\[Psi]])) Cos[\[Theta][t]] Sin[\[Phi][ t]] + (Mr[ t] (Nx - Ny) Sin[\[Theta][t]] Sin[\[Phi][t]] Cos[\[Phi][t]] + Hext Cos[\[Phi][t]] Sin[\[Psi]]) Cos[\[Phi][t]], (-Mr[t] (Nz Cos[\[Theta][t]]^2 + Ny Sin[\[Theta][t]]^2 Sin[\[Phi][t]]^2 + Nx Sin[\[Theta][t]]^2 Cos[\[Phi][t]]^2) + Hext (Sin[\[Theta][t]] Sin[\[Phi][t]] Sin[\[Psi]] + Cos[\[Theta][t]] Cos[\[Psi]])) Cos[\[Theta][ t]] - ((Nz Mr[ t] - (2 K0 + 3 \[Lambda]s \[Sigma]s1)/(\[Mu]0 Mr[t]) - Mr[t] Ny Sin[\[Phi][t]]^2 - Mr[t] Nx Cos[\[Phi][t]]^2) Sin[\[Theta][t]] Cos[\[Theta][ t]] + Hext (Cos[\[Theta][t]] Sin[\[Phi][t]] Sin[\[Psi]] - Sin[\[Theta][t]] Cos[\[Psi]])) Sin[\[Theta][t]]}; eq1 = {D[Mr[t], t] Sin[\[Theta][t]] Cos[\[Phi][t]] + D[\[Theta][t], t] Mr[t] Cos[\[Theta][t]] Cos[\[Phi][t]] - D[\[Phi][t], t] Mr[t] Sin[\[Theta][t]] Sin[\[Phi][t]], D[Mr[t], t] Sin[\[Theta][t]] Sin[\[Phi][t]] + D[\[Theta][t], t] Mr[t] Cos[\[Theta][t]] Sin[\[Phi][t]] + D[\[Phi][t], t] Mr[t] Sin[\[Theta][t]] Cos[\[Phi][t]], D[Mr[t], t] Cos[\[Theta][t]] - D[\[Theta][t], t] Mr[t] Sin[\[Theta][t]]}; eq2 = -\[Gamma] \[Mu]0 M\[Cross]Heff1 + \[Alpha]f/Mr[t] M\[Cross]eq1; eq3 = \[Theta][-5 ps] == \[Theta]0; eq4 = \[Phi][-5 ps] == \[Pi]/2; eq5 = eq1[[2]] == eq2[[2]]; eq6 = eq1[[3]] == eq2[[3]]; solution1 = NDSolve[{eq5, eq6, eq3, eq4}, {\[Theta][t], \[Phi][t]}, {t, -5 ps, 30 ps}, MaxSteps -> Infinity, MaxStepSize -> {0.05 ps}]