本文整理汇总了Python中fidimag.atomistic.Sim.spin_length方法的典型用法代码示例。如果您正苦于以下问题:Python Sim.spin_length方法的具体用法?Python Sim.spin_length怎么用?Python Sim.spin_length使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类fidimag.atomistic.Sim
的用法示例。
在下文中一共展示了Sim.spin_length方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: disable_test_sim_single_spin_llg_stt
# 需要导入模块: from fidimag.atomistic import Sim [as 别名]
# 或者: from fidimag.atomistic.Sim import spin_length [as 别名]
def disable_test_sim_single_spin_llg_stt(do_plot=False):
ni = Nickel()
mesh = CuboidMesh(nx=1, ny=1, nz=1)
mesh.set_material(ni)
ni.alpha = 0.1
sim = Sim(mesh, driver='llg_stt')
sim.set_m((1, 0, 0))
H0 = 1
sim.add(Zeeman((0, 0, H0)))
dt = 1e-12
ts = np.linspace(0, 200 * dt, 101)
precession = ni.gamma / (1 + ni.alpha**2)
mz_ref = []
mxyz = []
real_ts = []
for t in ts:
sim.run_until(t)
real_ts.append(sim.t)
print(sim.t, abs(sim.spin_length()[0] - 1), sim.spin)
mz_ref.append(np.tanh(precession * ni.alpha * H0 * sim.t))
mxyz.append(np.copy(sim.spin))
mxyz = np.array(mxyz)
if do_plot:
ts_ns = np.array(real_ts) * 1e9
plt.plot(ts_ns, mxyz[:, 0], ".-", label="mx")
plt.plot(ts_ns, mxyz[:, 1], ".-", label="my")
plt.plot(ts_ns, mxyz[:, 2], ".-", label="mz")
plt.plot(ts_ns, mz_ref, "-", label="analytical")
plt.xlabel("time (ns)")
plt.ylabel("mz")
plt.title("integrating a macrospin")
plt.legend()
plt.savefig("test_llg_stt.png")
print(("Deviation = {0}".format(np.max(np.abs(mxyz[:, 2] - mz_ref)))))
assert np.max(np.abs(mxyz[:, 2] - mz_ref)) < 1e-9
示例2: test_sim_single_spin_sllg
# 需要导入模块: from fidimag.atomistic import Sim [as 别名]
# 或者: from fidimag.atomistic.Sim import spin_length [as 别名]
def test_sim_single_spin_sllg(do_plot=False):
mesh = CuboidMesh(nx=1, ny=1, nz=1)
sim = Sim(mesh, name='spin', driver='sllg')
alpha = 0.1
gamma = 2.21e5
sim.set_options(dt=5e-15, gamma=gamma)
sim.alpha = alpha
sim.mu_s = 1.0
sim.set_m((1, 0, 0))
H0 = 1e5
sim.add(Zeeman((0, 0, H0)))
ts = np.linspace(0, 1e-10, 101)
mx = []
my = []
mz = []
real_ts = []
for t in ts:
sim.run_until(t)
real_ts.append(sim.t)
print(sim.t, abs(sim.spin_length()[0] - 1))
mx.append(sim.spin[0])
my.append(sim.spin[1])
mz.append(sim.spin[2])
mz = np.array(mz)
a_mx, a_my, a_mz = single_spin(alpha, gamma, H0, ts)
if do_plot:
plot(real_ts, mx, my, mz, a_mx, a_my, a_mz, name='spin_sllg.pdf', title='integrating a spin')
print(("Max Deviation = {0}".format(
np.max(np.abs(mz - a_mz)))))
assert np.max(np.abs(mz - a_mz)) < 1e-8
示例3: relax_system
# 需要导入模块: from fidimag.atomistic import Sim [as 别名]
# 或者: from fidimag.atomistic.Sim import spin_length [as 别名]
def relax_system(mesh):
sim = Sim(mesh, name='relax')
sim.alpha = 0.1
sim.set_m(init_m)
J = 1
exch = UniformExchange(J)
sim.add(exch)
dmi = DMI(0.05 * J)
sim.add(dmi)
ts = np.linspace(0, 1, 11)
for t in ts:
print t, sim.spin_length() - 1
sim.run_until(t)
sim.save_vtk()
return sim.spin