本文整理汇总了Python中fidimag.atomistic.Sim.do_precession方法的典型用法代码示例。如果您正苦于以下问题:Python Sim.do_precession方法的具体用法?Python Sim.do_precession怎么用?Python Sim.do_precession使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类fidimag.atomistic.Sim
的用法示例。
在下文中一共展示了Sim.do_precession方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: relax_system_stage2
# 需要导入模块: from fidimag.atomistic import Sim [as 别名]
# 或者: from fidimag.atomistic.Sim import do_precession [as 别名]
def relax_system_stage2():
mesh = CuboidMesh(nx=140 , ny=140, nz=1)
sim = Sim(mesh, name='dyn', driver='llg')
sim.alpha = 0.1
sim.do_precession = True
sim.gamma = const.gamma
sim.mu_s = spatial_mu
sim.set_m(np.load('skx.npy'))
J = 50 * const.k_B
exch = UniformExchange(J)
sim.add(exch)
D = 0.27 * J
dmi = DMI(D)
sim.add(dmi)
zeeman = Zeeman(spatial_H)
sim.add(zeeman)
ts = np.linspace(0, 2e-9, 201)
for t in ts:
sim.run_until(t)
sim.save_vtk()
sim.save_m()
print(t)
示例2: relax_system
# 需要导入模块: from fidimag.atomistic import Sim [as 别名]
# 或者: from fidimag.atomistic.Sim import do_precession [as 别名]
def relax_system(mesh):
sim=Sim(mesh,name='relax')
sim.set_options(rtol=1e-12,atol=1e-14)
sim.do_precession = False
sim.alpha = 0.5
sim.gamma = 1.0
sim.mu_s = 1.0
sim.set_m(init_m)
J = 1.0
exch = UniformExchange(J)
sim.add(exch)
D = 0.18
dmi = DMI(D)
sim.add(dmi)
zeeman = Zeeman([0,0e-3,2e-2],name='H')
sim.add(zeeman)
sim.relax(dt=2.0, stopping_dmdt=1e-8, max_steps=10000, save_m_steps=None, save_vtk_steps=100)
np.save('m0.npy',sim.spin)
示例3: relax_system
# 需要导入模块: from fidimag.atomistic import Sim [as 别名]
# 或者: from fidimag.atomistic.Sim import do_precession [as 别名]
def relax_system(mesh, Hy=0):
sim = Sim(mesh, name="relax")
sim.set_options(rtol=1e-10, atol=1e-12)
sim.alpha = 0.5
sim.gamma = 1.0
sim.mu_s = 1.0
sim.do_precession = False
sim.set_m(init_m)
# sim.set_m(random_m)
# sim.set_m(np.load('m_10000.npy'))
J = 1.0
exch = UniformExchange(J)
sim.add(exch)
D = 0.18
dmi = DMI(D)
sim.add(dmi)
zeeman = Zeeman([0, Hy, 2e-2], name="H")
sim.add(zeeman)
sim.relax(dt=2.0, stopping_dmdt=1e-8, max_steps=10000, save_m_steps=100, save_vtk_steps=50)
np.save("m0.npy", sim.spin)
示例4: relax_system_stage1
# 需要导入模块: from fidimag.atomistic import Sim [as 别名]
# 或者: from fidimag.atomistic.Sim import do_precession [as 别名]
def relax_system_stage1():
mesh = CuboidMesh(nx=140 , ny=140, nz=1)
sim = Sim(mesh, name='relax', driver='llg')
#sim.set_options(dt=1e-14, gamma=const.gamma, k_B=const.k_B)
sim.alpha = 0.5
sim.do_precession = False
sim.gamma = const.gamma
sim.mu_s = spatial_mu
sim.set_m(init_m)
J = 50 * const.k_B
exch = UniformExchange(J)
sim.add(exch)
D = 0.27 * J
dmi = DMI(D)
sim.add(dmi)
zeeman = Zeeman(spatial_H)
sim.add(zeeman)
sim.relax(dt=1e-14, stopping_dmdt=1e10, max_steps=1000,
save_m_steps=100, save_vtk_steps=10)
np.save('skx.npy', sim.spin)
plot_m(mesh, 'skx.npy', comp='z')
示例5: test_skx_num_atomistic
# 需要导入模块: from fidimag.atomistic import Sim [as 别名]
# 或者: from fidimag.atomistic.Sim import do_precession [as 别名]
def test_skx_num_atomistic():
"""
Test the *finite spin chirality* or skyrmion number for
a discrete spins simulation in a two dimensional lattice
The expression is (PRL 108, 017601 (2012)) :
Q = S_i \dot ( S_{i+1} X S_{j+1} )
+ S_i \dot ( S_{i-1} X S_{j-1} )
which measures the chirality taking two triangles of spins
per lattice site i:
S_{i} , S_{i + x} , S_{i + y} and
S_{i} , S_{i - x} , S_{i - y}
The area of the two triangles cover a unit cell, thus the sum
cover the whole area of the atomic lattice
This test generate a skyrmion pointing down with unrealistic
paremeters.
"""
mesh = CuboidMesh(nx=120, ny=120, nz=1,
periodicity=(True, True, False))
sim = Sim(mesh, name='skx_num')
sim.set_tols(rtol=1e-6, atol=1e-6)
sim.alpha = 1.0
sim.gamma = 1.0
sim.mu_s = 1.0
sim.set_m(lambda pos: init_m(pos, 60, 60, 20))
sim.do_precession = False
J = 1.0
exch = UniformExchange(J)
sim.add(exch)
D = 0.09
dmi = DMI(D)
sim.add(dmi)
zeeman = Zeeman([0, 0, 5e-3])
sim.add(zeeman)
sim.relax(dt=2.0, stopping_dmdt=1e-2, max_steps=1000,
save_m_steps=None, save_vtk_steps=None)
skn = sim.skyrmion_number()
print('skx_number', skn)
assert skn > -1 and skn < -0.99
示例6: relax_system
# 需要导入模块: from fidimag.atomistic import Sim [as 别名]
# 或者: from fidimag.atomistic.Sim import do_precession [as 别名]
def relax_system():
# 1D chain of 50 spins with a lattice constant of 0.27 A
mesh = CuboidMesh(nx=nx,
dx=dx,
unit_length=1e-9,
# pbc='1d'
)
# Initiate the simulation. PBCs are specified in the mesh
sim = Sim(mesh, name=sim_name)
sim.gamma = const.gamma
# magnetisation in units of Bohr's magneton
sim.mu_s = 2. * const.mu_B
# sim.set_options(gamma=const.gamma, k_B=const.k_B)
# Initial magnetisation profile
sim.set_m((0, 0, 1))
# Exchange constant in Joules: E = Sum J_{ij} S_i S_j
J = 12. * const.meV
exch = UniformExchange(J)
sim.add(exch)
# DMI constant in Joules: E = Sum D_{ij} S_i x S_j
D = 2. * const.meV
dmi = DMI(D, dmi_type='interfacial')
sim.add(dmi)
# Anisotropy along +z axis
ku = Anisotropy(Ku=0.5 * const.meV,
axis=[0, 0, 1],
name='ku')
sim.add(ku)
# Faster convergence
sim.alpha = 0.5
sim.do_precession = False
sim.relax(dt=1e-13, stopping_dmdt=0.05,
max_steps=700,
save_m_steps=1000, save_vtk_steps=1000)
# Save the last relaxed state
np.save(sim_name + '.npy', sim.spin)
示例7: test_dw_dmi_atomistic
# 需要导入模块: from fidimag.atomistic import Sim [as 别名]
# 或者: from fidimag.atomistic.Sim import do_precession [as 别名]
def test_dw_dmi_atomistic(do_plot=False):
mesh = CuboidMesh(nx=300, ny=1, nz=1)
sim = Sim(mesh, name='relax')
sim.set_default_options(gamma=const.gamma)
sim.alpha = 0.5
sim.mu_s = const.mu_s_1
sim.do_precession = False
sim.set_m(m_init_dw)
J = 50.0 * const.k_B
exch = UniformExchange(J)
sim.add(exch)
D = 0.01 * J
dmi = DMI(D)
sim.add(dmi)
K = 0.005 * J
anis = Anisotropy(K, axis=[1,0,0])
sim.add(anis)
ONE_DEGREE_PER_NS = 17453292.52
sim.relax(dt=1e-13, stopping_dmdt=0.01 * ONE_DEGREE_PER_NS,
max_steps=1000, save_m_steps=100, save_vtk_steps=50)
np.save('m0.npy', sim.spin)
xs = np.array([p[0] for p in mesh.coordinates]) - 150
mx, my, mz = analytical(xs, A=J/2.0, D=-D, K=K)
mxyz = sim.spin.copy()
mxyz = mxyz.reshape(-1, 3).T
assert max(abs(mxyz[0, :] - mx)) < 0.001
assert max(abs(mxyz[1, :] - my)) < 0.001
assert max(abs(mxyz[2, :] - mz)) < 0.0006
if do_plot:
save_plot(xs, mxyz, mx, my, mz)
示例8: relax_system
# 需要导入模块: from fidimag.atomistic import Sim [as 别名]
# 或者: from fidimag.atomistic.Sim import do_precession [as 别名]
def relax_system(mesh):
sim = Sim(mesh, name='relax')
sim.set_default_options(gamma=constant.gamma)
sim.driver.alpha = 0.5
sim.mu_s = constant.mu_s_1
sim.do_precession = False
sim.set_m(m_init_dw)
J = 50.0 * constant.k_B
exch = UniformExchange(J)
sim.add(exch)
D = 0.1 * J
dmi = DMI(D, dmi_type = 'interfacial')
sim.add(dmi)
K = 0.02 * J
anis = Anisotropy(K, axis=[0,0,1])
sim.add(anis)
ONE_DEGREE_PER_NS = 17453292.52
sim.relax(dt=1e-13, stopping_dmdt=0.01 * ONE_DEGREE_PER_NS,
max_steps=1000, save_m_steps=100, save_vtk_steps=50)
np.save('m0.npy', sim.spin)
xs = np.array([p[0] for p in mesh.pos]) - 150
mx, my, mz = analytical(xs, A=J/2.0, D=-D, K=K)
mxyz = sim.spin.copy()
mxyz.shape = (3, -1)
save_plot(xs, mxyz, mx, my, mz)
示例9: test_skx_num_atomistic
# 需要导入模块: from fidimag.atomistic import Sim [as 别名]
# 或者: from fidimag.atomistic.Sim import do_precession [as 别名]
def test_skx_num_atomistic():
"""
Test the *finite spin chirality* or skyrmion number for
a discrete spins simulation in a two dimensional lattice
The expression is (PRL 108, 017601 (2012)) :
Q = S_i \dot ( S_{i+1} X S_{j+1} )
+ S_i \dot ( S_{i-1} X S_{j-1} )
which measures the chirality taking two triangles of spins
per lattice site i:
S_{i} , S_{i + x} , S_{i + y} and
S_{i} , S_{i - x} , S_{i - y}
The area of the two triangles cover a unit cell, thus the sum
cover the whole area of the atomic lattice
We also test the Berg and Luscher definition for a topological
charge (see the hexagonal mesh test for details) in a
square lattice.
This test generate a skyrmion pointing down with unrealistic
paremeters.
"""
mesh = CuboidMesh(nx=120, ny=120, nz=1,
periodicity=(True, True, False))
sim = Sim(mesh, name='skx_num')
sim.driver.set_tols(rtol=1e-6, atol=1e-6)
sim.driver.alpha = 1.0
sim.driver.gamma = 1.0
sim.mu_s = 1.0
sim.set_m(lambda pos: init_m(pos, 60, 60, 20))
sim.do_precession = False
J = 1.0
exch = UniformExchange(J)
sim.add(exch)
D = 0.09
dmi = DMI(D)
sim.add(dmi)
zeeman = Zeeman([0, 0, 5e-3])
sim.add(zeeman)
sim.relax(dt=2.0, stopping_dmdt=1e-2, max_steps=1000,
save_m_steps=None, save_vtk_steps=None)
skn = sim.skyrmion_number()
print('skx_number', skn)
skn_BL = sim.skyrmion_number(method='BergLuscher')
print('skx_number_BergLuscher', skn_BL)
# Test the finite chirality method
assert skn > -1 and skn < -0.99
# Test the Berg-Luscher method
assert np.abs(skn_BL - (-1)) < 1e-4 and np.sign(skn_BL) < 0
# Test guiding center
Rx, Ry = compute_RxRy(mesh, sim.spin)
print('Rx=%g, Ry=%g'%(Rx, Ry))
assert Rx<60 and Rx>58
assert Ry<60 and Ry>58