Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Time-Dependent Anisotropy and Magnetization term in the UBERMAG simulation #146

Open
DebanjanPolley opened this issue Nov 3, 2022 · 3 comments

Comments

@DebanjanPolley
Copy link

Hi,
Is it possible to include a time-dependent energy term in the equation? As shown in the attached code, I am using a constant exchange and anisotropy energy. However, in my experiment, the exchange energy, and anisotropy energy amplitude vary as a function of time and I have the data. Is there a way to include it in the UBERMAG simulation?
One way I think of doing it is to use a for loop and update the energy values for the LLG equation after measuring the magnetization dynamics for each time step. But, I haven't tried it yet.

system.energy = mm.Exchange(A=A) + mm.Zeeman(H=H) + mm.UniaxialAnisotropy(K=K1, u=(0,0,1)) + mm.Demag()

After defining the energy term, I am driving current-induced dynamics to study SOT-induced magnetization switching with a gaussian current pulse as the following:

system.dynamics = mm.Precession(gamma0=gamma0) + mm.Damping(alpha=alpha) + mm.Slonczewski(J = Jc1, mp = (0, dirc, 0), P = P, Lambda = L, eps_prime = ep_imag,func=time_func,dt=2e-13)
td = oc.TimeDriver()
td.drive(system, t=pulse_duration1, n=N1)

@DivineMassacre
Copy link

I'm also interested in this question, because I study laser-induced spin waves, which associated with time-dependent Zeeman field or, for example, time-dependent anisotropy constant.
I simulate laser excitation of spin waves using multiple time drives in Ubermag and the direct change of energy terms between them.

Example:

tPumpInc = 100e-12 # time of the incidence of pump pulse (s)
tRelax = 10e-9 # relaxation time after pump pulse incidence (s)
td.drive(system, t=tPumpInc, n=10, n_threads=12, verbose=2)

system.energy -= mm.UniaxialAnisotropy(K=Ku, u=u, name='uniaxial')
system.energy += mm.UniaxialAnisotropy(K=Kupump, u=u, name='uniaxial')

td.drive(system, t=tRelax, n=20000, n_threads=12, verbose=2)

@lang-m
Copy link
Member

lang-m commented Sep 19, 2023

OOMMF according to its documentation currently does not support time-dependent energy terms (apart from Zeeman). The only possibility is therefore to split the simulation into multiple short simulations with fixed constants as you both do already.

For data analysis, we provide the option to look at multiple drives simultaneously: https://ubermag.github.io/documentation/notebooks/micromagneticdata/documentation.html#CombinedDrive That might be useful depending on your needs.

@DebanjanPolley
Copy link
Author

Thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants