当前位置: 首页>>代码示例>>Python>>正文


Python micro.Sim类代码示例

本文整理汇总了Python中fidimag.micro.Sim的典型用法代码示例。如果您正苦于以下问题:Python Sim类的具体用法?Python Sim怎么用?Python Sim使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


在下文中一共展示了Sim类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: test_sim_init_m

def test_sim_init_m():
    mesh = CuboidMesh(nx=3, ny=4, nz=5)
    sim = Sim(mesh)
    sim.set_m((0, 1, 0))
    sim.spin.shape = (-1, 3)
    spin_y = sim.spin[:, 1]
    assert(spin_y.any() == 1)
开发者ID:River315,项目名称:fidimag,代码行数:7,代码来源:test_llg.py

示例2: setup_simulation

def setup_simulation(mesh, m0, simulation_name, integrator="sundials", use_jac=False):
    sim = Sim(mesh, name=simulation_name, integrator=integrator, use_jac)
    sim.set_m(m0)
    sim.Ms = Ms
    sim.alpha = alpha
    sim.gamma = gamma
    sim.add(UniformExchange(A))
    sim.add(Demag())
    return sim
开发者ID:fangohr,项目名称:paper-supplement-finite-difference-time-integration,代码行数:9,代码来源:std_4.py

示例3: compute_field

def compute_field():

    mesh = CuboidMesh(nx=1, ny=1, nz=1, dx=2.0, dy=2.0, dz=2.0, unit_length=1e-9, periodicity=(True, True, False))

    sim = Sim(mesh, name='relax')

    sim.driver.set_tols(rtol=1e-10, atol=1e-14)
    sim.driver.alpha = 0.5
    sim.driver.gamma = 2.211e5
    sim.Ms = 8.6e5
    sim.do_precession = False

    sim.set_m((0,0,1))
    # sim.set_m(np.load('m0.npy'))

    A = 1.3e-11
    exch = UniformExchange(A=A)
    sim.add(exch)

    demag = Demag(pbc_2d=True)
    sim.add(demag)
    field=demag.compute_field()
    print(field)

    np.save('m0.npy', sim.spin)
开发者ID:computationalmodelling,项目名称:fidimag,代码行数:25,代码来源:single_cube.py

示例4: test_sim_init_m_fun

def test_sim_init_m_fun():
    mesh = CuboidMesh(nx=3, ny=4, nz=5)
    sim = Sim(mesh)
    sim.set_m(init_m, normalise=False)

    print sim.spin.reshape(-1, 3).shape
    print sim.mesh.index(1, 2, 3)

    assert(sim.spin_at(1, 2, 3)[0] == 1)
    assert(sim.spin_at(1, 2, 3)[1] == 2)
    assert(sim.spin_at(1, 2, 3)[2] == 3)
开发者ID:River315,项目名称:fidimag,代码行数:11,代码来源:test_llg.py

示例5: setup_domain_wall_cobalt

def setup_domain_wall_cobalt(node_count=NODE_COUNT, A=A_Co, Ms=Ms_Co, K1=K1_Co, length=LENGTH, do_precession=True, unit_length=UNIT_LENGTH):
    a = length / node_count  # cell size
    mesh = CuboidMesh(dx=a, dy=a, dz=a, nx=node_count, ny=1, nz=1, unit_length=unit_length)
    sim = Sim(mesh, "dw_cobalt")
    sim.Ms = Ms
    sim.set_m(lambda r: initial_m(r, length))
    sim.do_precession = do_precession
    sim.add(UniformExchange(A))
    sim.add(UniaxialAnisotropy(K1, (0, 0, 1)))
    sim.pins = lambda r: 1 if (r[0] < a or r[0] > LENGTH - a) else 0
    return sim
开发者ID:computationalmodelling,项目名称:fidimag,代码行数:11,代码来源:test_domain_wall_cobalt.py

示例6: test_init

def test_init():
    """
    This tests (mx, my, mx) for the first 2 spins
    """
    mesh = CuboidMesh(nx=100, ny=1, nz=1)
    sim = Sim(mesh)
    sim.set_m(init_m)

    expected = np.array([0, 0, 1,
                         0, np.sin(0.1), np.cos(0.1)])

    assert max(abs(sim.spin[:6] - expected)) < 1e-15
开发者ID:River315,项目名称:fidimag,代码行数:12,代码来源:test_exch_micro.py

示例7: run

def run(integrator, jacobian):
    name = "sim_" + integrator
    if integrator == "sundials":
        name += "_J1" if jacobian else "_J0"
    sim = Sim(mesh, name, integrator, use_jac=jacobian)
    sim.Ms = 0.86e6
    sim.driver.alpha = 0.5
    sim.set_m((1, 0, 1))
    sim.add(UniformExchange(A=13e-12))
    sim.add(Demag())

    ts = np.linspace(0, 3e-10, 61)
    for t in ts:
        sim.run_until(t)
开发者ID:computationalmodelling,项目名称:fidimag,代码行数:14,代码来源:sim.py

示例8: test_zeeman

def test_zeeman():

    mesh = CuboidMesh(nx=5, ny=2, nz=1)

    sim = Sim(mesh)
    sim.set_m((1, 0, 0))

    zeeman = Zeeman(varying_field)
    sim.add(zeeman)

    field = zeeman.compute_field()

    assert field[6] == 1.2 * (2 + 0.5)
    assert field[7] == 2.3 * 0.5
开发者ID:River315,项目名称:fidimag,代码行数:14,代码来源:test_micromagnetic_zeeman.py

示例9: elongated_part_sim

def elongated_part_sim():
    sim = Sim(mesh)
    sim.Ms = lambda r: cylinder(r, centre, 8)
    sim.add(UniformExchange(A=A))
    sim.add(UniaxialAnisotropy(Kx, axis=(0, 1, 0)))  # Anisotropy along y
    sim.add(Demag())

    return sim
开发者ID:computationalmodelling,项目名称:fidimag,代码行数:8,代码来源:elongated_particle_along_y.py

示例10: test_sim_pin

def test_sim_pin():
    mesh = CuboidMesh(nx=3, ny=2, nz=1)
    sim = Sim(mesh)
    sim.set_m((0, 0.8, 0.6))
    sim.alpha = 0.1
    sim.gamma = 1.0
    sim.pins = pin_fun

    anis = UniaxialAnisotropy(Ku=1, axis=[0, 0, 1], name='Dx')
    sim.add(anis)

    sim.run_until(1.0)
    print sim.spin
    assert sim.spin[0] == 0
    assert sim.spin[2] != 0
开发者ID:River315,项目名称:fidimag,代码行数:15,代码来源:test_llg.py

示例11: relax_neb

def relax_neb(k, maxst, simname, init_im, interp, save_every=10000):
    """
    Execute a simulation with the NEB function of the FIDIMAG code, for an
    elongated particle (long cylinder)

    The simulations are made for a specific spring constant 'k' (a float),
    number of images 'init_im', interpolations between images 'interp'
    (an array) and a maximum of 'maxst' steps.
    'simname' is the name of the simulation, to distinguish the
    output files.

    --> vtks and npys are saved in files starting with the 'simname' string

    """

    # Prepare simulation
    # We define the cylinder with the Magnetisation function
    sim = Sim(mesh)
    sim.Ms = two_part

    #sim.add(UniformExchange(A=A))

    # Uniaxial anisotropy along x-axis
    sim.add(UniaxialAnisotropy(Kx, axis=(1, 0, 0)))

    # Define many initial states close to one extreme. We want to check
    # if the images in the last step, are placed mostly in equally positions
    init_images = init_im

    # Number of images between each state specified before (here we need only
    # two, one for the states between the initial and intermediate state
    # and another one for the images between the intermediate and final
    # states). Thus, the number of interpolations must always be
    # equal to 'the number of initial states specified', minus one.
    interpolations = interp

    neb = NEB_Sundials(sim,
                       init_images,
                       interpolations=interpolations,
                       spring=k,
                       name=simname)

    neb.relax(max_steps=maxst,
              save_vtk_steps=save_every,
              save_npy_steps=save_every,
              stopping_dmdt=1e-2)
开发者ID:River315,项目名称:fidimag,代码行数:46,代码来源:test_two_particles.py

示例12: test_with_oommf_spatial_Ms

def test_with_oommf_spatial_Ms(A=1e-11):

    def spatial_Ms(pos):
        x, y = pos[0], pos[1]

        if x ** 2 + y ** 2 < 5 ** 2:
            return 2e4
        else:
            return 0

    init_m0 = (r'return [list [expr {sin($x * 1e9) + $y * 1e9 + $z * 2.3e9}] '
               + r' [expr {cos($x * 1e9) + $y * 1e9 + $z * 1.3e9}] '
               + r'0 '
               + r'] ')

    init_Ms = """

    if { ($x * $x + $y * $y) < 5e-9 * 5e-9 } {
        return 2e4
    } else {
        return 0
    }

    """

    mesh = CuboidMesh(nx=12, ny=10, nz=2, dx=0.5, unit_length=1e-9)

    sim = Sim(mesh)
    sim.Ms = spatial_Ms

    def init_m(pos):
        x, y, z = pos
        return (np.sin(x) + y + 2.3 * z, np.cos(x) + y + 1.3 * z, 0)

    sim.set_m(init_m)

    exch = UniformExchange(A=A)
    sim.add(exch)

    demag = Demag()
    sim.add(demag)

    field = exch.compute_field()
    field_oommf = compute_exch_field(
        mesh, init_m0=init_m0, A=A, spatial_Ms=init_Ms)
    mx0, mx1, mx2 = compare_fields(field_oommf, field)

    assert max([mx0, mx1, mx2]) < 1e-12

    field = demag.compute_field()
    field_oommf = compute_demag_field(
        mesh, spatial_Ms=init_Ms, init_m0=init_m0)

    mx0, mx1, mx2 = compare_fields(field_oommf, field)

    assert max([mx0, mx1, mx2]) < 1e-11
开发者ID:River315,项目名称:fidimag,代码行数:56,代码来源:tes_oommf.py

示例13: test_sim_single_spin

def test_sim_single_spin(do_plot=False):

    mesh = CuboidMesh(nx=80, ny=3, nz=3)

    sim = Sim(mesh, name='spin', integrator='sundials_openmp')

    alpha = 0.1
    gamma = 2.21e5
    sim.alpha = alpha
    sim.driver.gamma = gamma
    sim.mu_s = 1.0

    sim.set_m((1, 0, 0))

    H0 = 1e5
    sim.add(Zeeman((0, 0, H0)))

    ts = np.linspace(0, 1e-9, 101)

    mx = []
    my = []
    mz = []
    real_ts = []
    for t in ts:
        sim.driver.run_until(t)
        real_ts.append(sim.driver.t)
        print(sim.driver.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)
    # print mz
    a_mx, a_my, a_mz = single_spin(alpha, gamma, H0, ts)

    print(sim.driver.stat())

    if do_plot:
        ts_ns = np.array(real_ts) * 1e9
        plt.plot(ts_ns, mx, ".", label="mx", color='DarkGreen')
        plt.plot(ts_ns, my, ".", label="my", color='darkslateblue')
        plt.plot(ts_ns, mz, ".", label="mz", color='m')
        plt.plot(ts_ns, a_mx, "--", label="analytical", color='b')
        plt.plot(ts_ns, a_my, "--",  color='b')
        plt.plot(ts_ns, a_mz, "--",  color='b')
        plt.xlabel("time (ns)")
        plt.ylabel("m")
        plt.title("integrating a macrospin")
        plt.legend()
        plt.savefig("single_spin.pdf")

    print(("Max Deviation = {0}".format(
        np.max(np.abs(mz - a_mz)))))

    assert np.max(np.abs(mz - a_mz)) < 5e-7
开发者ID:computationalmodelling,项目名称:fidimag,代码行数:55,代码来源:test_llg_openmp.py

示例14: create_simulation

def create_simulation(mesh):

    sim = Sim(mesh)
    sim.Ms = 8.6e5

    sim.set_m((1, 0, 0))
    sim.add(UniformExchange(A=1.3e-11))
    # sim.add(Demag())
    #sim.add(UniaxialAnisotropy(Kx, (1, 0, 0), name='Kx'))
    anis = UniaxialAnisotropy(1e5, axis=(1, 0, 0))
    sim.add(anis)

    return sim
开发者ID:fangohr,项目名称:fidimag,代码行数:13,代码来源:dw.py

示例15: test_exch_field_oommf

def test_exch_field_oommf(A=1e-11, Ms=2.6e5):

    mesh = CuboidMesh(nx=10, ny=3, nz=2, dx=0.5, unit_length=1e-9)

    sim = Sim(mesh)
    sim.Ms = Ms

    exch = UniformExchange(A=A)
    sim.add(exch)

    def init_m(pos):

        x, y, z = pos

        return (np.sin(x) + y + 2.3 * z, np.cos(x) + y + 1.3 * z, 0)

    sim.set_m(init_m)

    field = exch.compute_field()

    init_m0 = """
    return [list [expr {sin($x*1e9)+$y*1e9+$z*2.3e9}] [expr {cos($x*1e9)+$y*1e9+$z*1.3e9}] 0]
    """
    omf_file = os.path.join(os.path.dirname(os.path.abspath(__file__)),
                            'omfs',
                            'test_exch_field_oommf.ohf'
                            )
    ovf = OMF2(omf_file)
    field_oommf = ovf.get_all_mags()

    #field_oommf = compute_exch_field(mesh, Ms=Ms, init_m0=init_m0, A=A)

    mx0, mx1, mx2 = compare_fields(field_oommf, field)
    assert max([mx0, mx1, mx2]) < 1e-12
开发者ID:fangohr,项目名称:fidimag,代码行数:34,代码来源:test_oommf_without_run.py


注:本文中的fidimag.micro.Sim类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。