to what is normalized the ext_scaleExchange parameter?

9 views
Skip to first unread message

ΙΩΑΝΝΗΣ ΠΑΝΑΓΙΩΤΟΠΟΥΛΟΣ

unread,
Apr 24, 2026, 3:09:09 PM (5 days ago) Apr 24
to mumax2
Hello 
Please, I need a clarification:
Is the ext_scaleExchange normalized to the harmonic mean of A_i and A_j  or to the Aex.Average() as implied by the example:

RKKY := -1e-3 
scale := (RKKY * c) / (2 * Aex.Average())
ext_scaleExchange(0, 1, scale)

Josh Lauzier

unread,
Apr 24, 2026, 11:20:21 PM (5 days ago) Apr 24
to mumax2
Hi,

Scale is a parameter that multiplies the existing exchange between two regions (which by default, if both Aex1 and Aex2 are positive, is the harmonic mean of the two exchange stiffnesses), it is just a prefactor that goes in front. You can set any value to scale that you want, it is completely arbitrary.

If you are trying to cancel out the Aex factor in existing exchange, you would want to normalize by the harmonic mean (But for Aex1=Aex2 as in the example, this will reduce down to just Aex). Also, note if you were to just use "Aex" in the script, this is not a float, but behind the scenes it is a region wise scalar type and it will error out. Aex.average() is just a way to get Aex=10e-12 in float form. it is the same value, 10e-12.

The full equation that mumax currently uses for exchange, if both values are positive, is given as( For a full discussion see this PR ):
mumaxhelp1.jpg

ext_scaleExchange sets the term S. So if you happened to be doing RKKY with two different Aex, or something similar where you wanted to cancel out the Aex prefactor, you would want to normalize to the harmonic mean. If Aex1=Aex2 as in the example, the harmonic mean reduces down to Aex. Note, you can also set the value of exchange between two regions directly to an arbitrary value using ext_Interexchange, instead of having to scale the existing exchange values.

Best,
Josh L.
Reply all
Reply to author
Forward
0 new messages