In the publication at [1], it is also not clear to me how they set the magnetic moment fixed for the reference layer in their VAMPIRE simulation.
One way is to set different magnetic parameters for adjusting the coercivity values for the free layer and reference layer such as saturation magnetization (material[#]:atomic-spin-moment) and layer thickness. The free layer coercivity values (-Hc1 and +Hc1) usually need to be lower than the reference layer coercivity values (-Hc2 and +Hc2). That way an effective applied field (Happ) slightly larger than Hc1 will switch the free layer but not switch the reference layer (leaving its magnetic moments fixed) [Hc1 < Happ < Hc2].
Another way to make the moment fixed in a reference layer (especially in the case when the free and reference layer have the same magnetic parameters) is to use an anti-ferromagnetic (AFM) layer. A paper on that you should find at [2].
There is also a synthetic anti-ferromagnet (SAF) structure as an alternative to that of the AFM layer that could be used to make the moment fixed in a reference layer. A dissertation on that you should find at [3].
A simple model that you might come across in literature that is used to fix the moments for a reference layer is to use a local applied field for emulating an exchange bias (Hbias) behavior. The abstract at [4] calls the local field a "direction magnetic field".
Of note, the article at [1] is for an out-of-plane stack. However, the following in-plane example might still be of interest to you.
As seen in the attached stack.mat, the following two keywords can be used to apply a local applied field to a material layer:
material[#]:applied-field-strength
material[#]:applied-field-unit-vector
The following hysteresis loop calculation was ran:
username@computername:~/exchange_bias$ ls -l
total 16
-rw-r--r-- 1 username username 308 Jan 2 18:06
calculate_exchanges.sh
-rw-r--r-- 1 username username 162 Jan 2 17:57 hplot
-rw-r--r-- 1 username username 512 Jan 2 19:02 input
-rw-r--r-- 1 username username 1036 Jan 2 19:01 stack.mat
username@computername:~/exchange_bias$ chmod +x
calculate_exchanges.sh
username@computername:~/exchange_bias$ dos2unix
calculate_exchanges.sh
dos2unix: converting file calculate_exchanges.sh to Unix format...
username@computername:~/exchange_bias$ ./calculate_exchanges.sh
_
(_)
__ ____ _ _ __ ___ _ __ _ _ __ ___
\ \ / / _` | '_ ` _ \| '_ \| | '__/ _ \
\ V / (_| | | | | | | |_) | | | | __/
\_/ \__,_|_| |_| |_| .__/|_|_| \___|
| |
|_|
Version 7.0.0 Dec 27 2025 22:03:50
Git commit: fed31aa8d06f278d43089352e126350bfdca26f2
...
Simulation ended gracefully.
username@computername:~/exchange_bias$ gnuplot --persist hplot
The hysteresis plot shows a green curve for material[3]:applied-field-strength=5.0 !T and a purple curve for material[3]:applied-field-strength=1.0 !T. For the green curve, you can see the free layer coercivity values (-Hc1 ≈ -12.4 T and +Hc1 ≈ 2.4 T) are less than the reference layer ones (-Hc2 ≈ -20 T and +Hc2 ≈ 21 T). Thus, the reference layer magnetic moments should stay fixed as long we don't use an "effective" applied field greater than 20 T (= |-Hc2|) in this case. By "effective", I mean that only a magnetic applied field was used for this simulation but an Oersted field from a spin polarized current potentially could be also used. You might also notice that the loops are not symmetrical around 0. The green curve is shifted to the left having an Hbias of -5.0 T, while the purple curve has Hbias = -1.0 T. Therefore, if you have an experimentally measured Hbias, you could adjust the applied-field-strength to achieve a matching simulated Hbias value. Obviously, this calculation is just for the purpose of demonstration. One won't use parameters for reduced calculation speed instead of for accuracy, such as sim:loop-time-steps=1500 in the input file, where those should be changed for a production level simulation.

And how does the system know, which one is the reference layer and which one is the free layer?
Vinod 在 2025年11月6日 星期四下午5:14:56 [UTC+8] 的信中寫道:
Hi,In Andrea Meo's 2023 paper J. Phys.: Condens. Matter 35 (2023) 025801, it was mentioned in Sec 4.2 first paragraph that the reference layer moment is fixed. So how would we do this? Like how do we specify the fixed layer and the free layer?
Thank you.


loop_with_Hbias.png
The hysteresis plot shows a green curve for material[3]:applied-field-strength=5.0 !T and a purple curve for material[3]:applied-field-strength=1.0 !T. For the green curve, you can see the free layer coercivity values (-Hc1 ≈ -12.4 T and +Hc1 ≈ 2.4 T) are less than the reference layer ones (-Hc2 ≈ -20 T and +Hc2 ≈ 21 T). Thus, the reference layer magnetic moments should stay fixed as long we don't use an "effective" applied field greater than 20 T (= |-Hc2|) in this case. By "effective", I mean that only a magnetic applied field was used for this simulation but an Oersted field from a spin polarized current potentially could be also used. You might also notice that the loops are not symmetrical around 0. The green curve is shifted to the left having an Hbias of -5.0 T, while the purple curve has Hbias = -1.0 T. Therefore, if you have an experimentally measured Hbias, you could adjust the applied-field-strength to achieve a matching simulated Hbias value. Obviously, this calculation is just for the purpose of demonstration. One won't use parameters for reduced calculation speed instead of for accuracy, such as sim:loop-time-steps=1500 in the input file, where those should be changed for a production level simulation.