Field domain wall movement in permalloy

245 views
Skip to first unread message

Rishabh Verma

unread,
Sep 21, 2024, 10:04:46 AM9/21/24
to Boris Computational Spintronics
Hi Serban,
Can you suggest me how you get DW of permalloy (tutorial-5, field-driven DW) keep remaining in the center while applying any field (even relaxing)?  The manual suggests "freezing the x-axis ends spins.". How can I achieve this in a simulation? 
When I attempt to relax the DW while the triggering mesh is activated (follow dw_field_driven.bsm), the DW consistently shifts its position. This behavior is not observed in your simulation. 

Serban Lepadatu

unread,
Sep 22, 2024, 5:16:23 AM9/22/24
to Boris Computational Spintronics
Hi,

You need to use the domain wall movement algorithm, please see Tutorial 5 in the manual; further details in Tutorial 4.

Regards,
Serban

Rishabh Verma

unread,
Sep 24, 2024, 3:40:23 AM9/24/24
to Boris Computational Spintronics
Hi Serban,
                 For the two sublattice model, i am not getting desired result. Is there anything else I have to take care of while solving the DW movement of ferrimagnets (two sublattice model)?

Serban Lepadatu

unread,
Sep 25, 2024, 3:15:45 AM9/25/24
to Boris Computational Spintronics
Hi,

Here is a simple script example, below, which obtains the domain wall shift as a function of time in a ferrimagnet, for a set field.
The gradient is the velocity, but you'll need to process the output data to extract it. 
You can use this example to configure a script which obtains velocity for a range of fields as needed.

Regards,
Serban

from NetSocks import NSClient
import matplotlib.pyplot as plt

ns = NSClient(); ns.configure(True)

Ferri = ns.AntiFerromagnet([200e-9, 50e-9, 5e-9], [5e-9])
Ferri.modules(['Zeeman', 'exchange', 'demag', 'aniuni'])
Ferri.param.Ms_AFM = [800e3, 400e3]

Ferri.preparemovingmesh()

ns.setode('LLG', 'RK4')
ns.setdt(100e-15)

ns.Relax(['mxh', 1e-5])
ns.reset()

ns.setsavedata('ferri_dw.txt', ['time'], ['dwshift'])
ns.Hxyz([Ferri, [1e3, 0, 0], 'time', 5e-9, 'time', 1e-12])

dwshift_data = ns.Get_Data_Columns('ferri_dw.txt', [0, 1])
plt.axes(xlabel = 'time (s)', ylabel = 'DW shift (m)')
plt.plot(dwshift_data[0], dwshift_data[1])
plt.show()


Rishabh Verma

unread,
Oct 4, 2024, 6:17:27 AM10/4/24
to Boris Computational Spintronics
Hi Serban,
Thanks for replying. I've observed a linear relationship between domain wall velocity and applied field in the simulations. However, when I simulate domain wall velocity against temperature at a fixed field, I'm getting an unexpected trend: DW velocity decreases as temperature increases. This is contrary to what is expected in ferrimagnets, where DW velocity typically increases to a certain temperature before decreasing. I have also tried with LLB ode.  Should I adjust the temperature dependence in my simulations, or are there other factors to consider? 

Serban Lepadatu

unread,
Oct 5, 2024, 6:04:00 AM10/5/24
to Boris Computational Spintronics
Hi,

I haven't looked into this before, but yes you likely need to have correct temperature dependences for all parameters.
Please see "Parameters Temperature Dependence" section in the manual (pg. 244) to set custom temperature dependences instead of the default ones.
The other option is to not set a temperature value directly, but set the parameter values instead as they would be at the temperature you want to consider - i.e. as quasi-zero temperature simulations, since the temperature is constant for each simulation (I assume). LLG should be enough, you probably don't need LLB here.

Regards,
Serban

Rishabh Verma

unread,
Oct 8, 2024, 6:37:08 AM10/8/24
to Boris Computational Spintronics
Hi Serban,
Thankyou sir. There is another thing i want to know about domain shift in this DW simulation. Can we distinguish between shifting the domain wall and expanding the domain wall. Specifically, for ferrimagnetic DW, is it possible to study domain wall expansion using the BORIS method?"
 
Thankyou

Serban Lepadatu

unread,
Oct 8, 2024, 9:38:53 AM10/8/24
to Boris Computational Spintronics
Hi,

Yes that's possible. One way you can do this is to save magnetization profiles along the track. These profiles can then be fitted using appropriate theoretical DW profile functions so the DW width parameter can be obtained.
To save magnetization profiles at regular intervals during the simulation, you can use the same technique as for the spin-wave dispersion simulations in Tutorial 30. Please have a look at this tutorial and associated example scripts to see how this is done.

Kind regards,
Serban

Rishabh Verma

unread,
Oct 22, 2024, 8:45:20 AM10/22/24
to Boris Computational Spintronics
Hi Serben,

Thank you Sir for your response. I have a question regarding the relaxation of a domain wall. When I simulate a Bloch domain wall in a ferrimagnet with out-of-plane anisotropy, the domain wall does not remain near the center and shows either a zero domain width (showdata - dwpos_x) or exhibits excessive fluctuations. However, when I simulate an in-plane domain wall in NiFe, as demonstrated in the tutorial, it works perfectly fine.

What could be the cause of this issue? What factors should be considered when simulating a Bloch domain wall with out-of-plane anisotropy?

Thankyou

Serban Lepadatu

unread,
Oct 23, 2024, 4:18:52 AM10/23/24
to Boris Computational Spintronics
Hi,

dwpos_x also works for a Bloch wall. I think the likely reason is the material parameters you've set do not allow a stable Bloch wall, but cannot say for sure without seeing the script.

Regards,
Serban

Rishabh Verma

unread,
Oct 24, 2024, 2:24:33 AM10/24/24
to Boris Computational Spintronics
Thankyou Serban,
                                 I am attaching bsm file for GdFeCo(25%/75%). I have done this in console so i have't write code. you can see parameters in curitemperature.

GdFeCo_1.bsm

Serban Lepadatu

unread,
Oct 24, 2024, 7:23:41 AM10/24/24
to Boris Computational Spintronics
Hi,

It looks like the problem is the Ah parameter (homogeneous AFM exchange coupling) has the wrong sign. For both sublattices the values should be negative.
With this change the Bloch wall is stable and the simulation file seems to be running OK.

Regards,
Serban

Rishabh Verma

unread,
Oct 24, 2024, 3:46:51 PM10/24/24
to Boris Computational Spintronics
Thankyou sir. It works well

Rishabh Verma

unread,
Dec 25, 2024, 10:58:14 PM12/25/24
to Boris Computational Spintronics
Hi Serban, 
                    Can we simulate SOT-driven domain wall movement in BORIS? Will it be similar like STT-driven domain wall motion? Can you help me?

Thank you. 
Rishabh

Serban Lepadatu

unread,
Dec 31, 2024, 2:43:48 AM12/31/24
to Boris Computational Spintronics
Hi Rishabh,

Yes, to enable SOT you need to add the SOTfield module. See page 217 for a description of this module. The parameters you need to set are "SHA" and "flST".
You still need to have the transport module enabled so you have a current density. It can be used in addition to STT (LLG-STT equation) or without (just the LLG equation).

Kind regards,
Serban

Rishabh Verma

unread,
Jan 2, 2025, 1:52:30 AMJan 2
to Boris Computational Spintronics
Hi Serban,
                   Thank you for replying. So if I used effective SHA, SOT module, and flst in ferrimagnetic mesh, then it will manage itself to simulate SOT without adding Pt mesh? Or i have to add Pt mesh and then apply current.
Thank you
Rishabh

Serban Lepadatu

unread,
Jan 2, 2025, 2:28:46 AMJan 2
to Boris Computational Spintronics
Hi Rishabh,

You don't have to add a Pt mesh, unless you're simulating SOT using self-consistent drift-diffusion solver (e.g. as in Tutorial 23). If you use the SOTfield module instead (much faster), then only the magnetic layer is needed.

Regards,
Serban

Rishabh Verma

unread,
Jan 6, 2025, 10:44:33 PMJan 6
to Boris Computational Spintronics
Hi Serban,
                  Thanks for reply.  I want to to see the exact domain shift or track the dw through ovf files. In that case, i have to see the mx magnetization with time. Is this right way ?

Serban Lepadatu

unread,
Jan 8, 2025, 2:04:32 AMJan 8
to Boris Computational Spintronics
Hi Rishabh,

The easiest way is to use the dw movement algorithm, in which case the dw shift is captured through the dwshift output data parameter. 
If you don't want to use the dw movement algorithm, one way I suggest is to capture magnetization profiles through the domain wall, then analyze them at the end of the simulation.
See Tutorial 30 on spin-wave dispersion for a technique to capture magnetization profiles.
You could also capture a sequence of ovf files if you really need to - see the chapter on Command Buffering, there's an example on page 273 on how to do this.

Regards,
Serban

Rishabh Verma

unread,
Jan 14, 2025, 1:59:43 AMJan 14
to Boris Computational Spintronics
Hi Serban,
                  Thank you for your reply. I'd like to know if it's possible to visualize the results as an MFM image, or if working solely with the OVF data is the only option.
Thank You
Rishabh

Serban Lepadatu

unread,
Jan 14, 2025, 2:53:20 AMJan 14
to Boris Computational Spintronics
Hi Rishabh,

There's no MFM visualisation in the current version. It could be done externally using ovf files.

Regards,
Serban

Rishabh Verma

unread,
Jan 21, 2025, 5:20:25 AMJan 21
to Boris Computational Spintronics
Hi Serban,
                  Thank you, sir. I have a few more questions:
  1. When performing an M-H loop (from out-of-plane to in-plane) for a ferrimagnet, what would be the best stopping condition for the LLG static ODE?
  2. Is it possible to simulate Hall measurements (V vs. H) in Boris? Or can I only track magnetization vs. H while applying a constant current?
  3. Does this setup account for the effect of the current on the magnetization?

Thank you 
Rishabh

Serban Lepadatu

unread,
Jan 22, 2025, 2:29:09 PMJan 22
to Boris Computational Spintronics
Hi Rishabh,

For hysteresis loops mxh stopping condition is best, used with the SDesc solver (LLGStatic equation). An mxh value of 10^-5 is typical but may need to experiment - lower values give more accurate results, but may result in excessive iterations.

You can simulate V vs H (e.g. see tutorial 8 on anisotropic magnetoresistance), but Hall effect is not currently implemented in the transport solver. AHE will be available however in the upcoming new version later this year.

Yes you can include the effect of current on magnetization through inclusion of spin torques. There are a number of tutorials on this, e.g. see Tutorial 10 on current-induced domain wall motion. For more advanced capabilities using the spin transport solver see tutorials 17-23, but simply using the LLG-STT equation may be enough.

Regards,
Serban

Rishabh Verma

unread,
Jan 30, 2025, 5:42:59 AMJan 30
to Boris Computational Spintronics
Hi Serban,
                   Thankyou sir. I want to ask how can i simulate current sweep with square pulse?
Thanks
Rishabh

Serban Lepadatu

unread,
Feb 3, 2025, 7:43:57 AMFeb 3
to Boris Computational Spintronics
Hi Rishabh,

One way you could do it is to run a 'Vequation' simulation stage. This allows you to pass in a custom equation to define the voltage stimulus (or if you really need to run an 'Iequation' stage with a current stimulus, but I recommend running a voltage stimulus). See the chapter in the manual on working with text equations.

e.g. to define a square pulse the text equation would be 'Va * step(t-t0) * step(tl+t0-t)'. This uses 2 step functions to define a square pulse of duration tl starting at time t0. Va, t0 and tl are equation constants defined as e.g.:

ns.equationconstants('Va', 1)
ns.equationconstants('t0', 0)
ns.equationconstants('tl', 2e-9)

To run a sweep you can define a for loop in your Python script where you keep adding a Vequation stage after the previous one, and changing Va and t0 as required.

Regards,
Serban

Rishabh Verma

unread,
Feb 18, 2025, 7:01:15 AMFeb 18
to Boris Computational Spintronics
Hi Serban,
                  Thankyou very much. Other this i want to ask is can we change spin polarization ? Do we have control over choosing sigma_x, sigma_z  (like unconvenstional torque) in BORIS? 
Thankyou
Rishabh

Serban Lepadatu

unread,
Feb 21, 2025, 2:07:29 AMFeb 21
to Boris Computational Spintronics
Hi Rishabh,

You can change the current spin polarization, it's the P parameter. I'm not sure what you mean by sigma_x, sigma_z.

Regards,
Serban

Rishabh Verma

unread,
Feb 21, 2025, 5:43:40 AMFeb 21
to Boris Computational Spintronics
Hi Serban,
                  in totorial 21 we have polarization p=z×eJc​ (spin polarization direction). This is deafault condition as described for Spin hall effect. Can we Change the direction of p vector? In this case it is in -y direction if we apply current in x direction. And also what is the parameter " STp" exacldy do?

Thanks 
Rishabh

Serban Lepadatu

unread,
Feb 23, 2025, 3:00:58 AMFeb 23
to Boris Computational Spintronics
Hi Rishabh,

Yes, you can change the p vector direction. Have a look at page 217 which describes the SOTfield module. STp is the d vector in the expression p = d x eJc, i.e. STp = 0 0 1 means d = z.

Regards,
Serban

Rishabh Verma

unread,
Mar 5, 2025, 1:09:57 AMMar 5
to Boris Computational Spintronics
Hi Serban,
                  Thanks! I want to simulate bulk DMI in the same ferrimagnetic system. In BORIS, we have two parameters: DAFM​ and Dh​. Since bulk DMI is involved, the DMExchange module will be used. However, for a two-sublattice ferrimagnet, how should these parameters be applied correctly? Specifically, Dh​ represents homogeneous DMI in a two-sublattice model—how should it be properly implemented?
Thank you
Rishabh

Serban Lepadatu

unread,
Mar 8, 2025, 1:34:01 PMMar 8
to Boris Computational Spintronics
Hi Rishabh,

See page 202 for the equations implemented in the DMexchange module.

D_AFM is a two-value DMI constant, one for each sub-lattice.

For the homogeneous contribution you need to set Dh (J/m^3) which is the magnitude, and dh_dir vector parameter which gives the direction (unit vector).

Regards,
Serban



Reply all
Reply to author
Forward
0 new messages