From 840af14cbecf88ae8420f23c77a7519baf484a79 Mon Sep 17 00:00:00 2001 From: kimx1612 <1007647274@qq.com> Date: Sun, 7 Jun 2026 18:07:05 +0800 Subject: [PATCH 1/2] Fix interlayer exchange energy calculation --- src/micro/kernels.jl | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/micro/kernels.jl b/src/micro/kernels.jl index 70af16ba..4bc8dd0d 100644 --- a/src/micro/kernels.jl +++ b/src/micro/kernels.jl @@ -481,16 +481,18 @@ end @inbounds h[k1 + 1] = Ms_inv * mty @inbounds h[k1 + 2] = Ms_inv * mtz @inbounds energy[id1] = -0.5 * - (h[k1] * mbx + h[k1 + 1] * mby + h[k1 + 2] * mbz) * - volume + Ms1 * + (h[k1] * mbx + h[k1 + 1] * mby + h[k1 + 2] * mbz) * + volume Ms_inv = J / (Ms2 * dz) @inbounds h[k2] = Ms_inv * mbx @inbounds h[k2 + 1] = Ms_inv * mby @inbounds h[k2 + 2] = Ms_inv * mbz @inbounds energy[id2] = -0.5 * - (h[k2] * mtx + h[k2 + 1] * mty + h[k2 + 2] * mtz) * - volume + Ms2 * + (h[k2] * mtx + h[k2 + 1] * mty + h[k2 + 2] * mtz) * + volume end end From 7a3691309980d2c2879e639efbfd4a1a472b26dd Mon Sep 17 00:00:00 2001 From: kimx1612 <1007647274@qq.com> Date: Sun, 7 Jun 2026 19:32:59 +0800 Subject: [PATCH 2/2] Fix interlayer DMI energy calculation --- src/micro/kernels.jl | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/micro/kernels.jl b/src/micro/kernels.jl index 4bc8dd0d..0cec141c 100644 --- a/src/micro/kernels.jl +++ b/src/micro/kernels.jl @@ -506,6 +506,7 @@ end k1 = 3 * id1 - 2 k2 = 3 * id2 - 2 + @inbounds mbx = m[k1] @inbounds mby = m[k1 + 1] @inbounds mbz = m[k1 + 2] @@ -516,20 +517,25 @@ end @inbounds Ms1 = mu0_Ms[id1] @inbounds Ms2 = mu0_Ms[id2] + if Ms1 > 0 && Ms2 > 0 Ms_inv = 1.0 / (Ms1 * dz) - @inbounds h[k1] = Ms_inv * cross_x(Dx, Dy, Dz, mtx, mty, mtz) + @inbounds h[k1] = Ms_inv * cross_x(Dx, Dy, Dz, mtx, mty, mtz) @inbounds h[k1 + 1] = Ms_inv * cross_y(Dx, Dy, Dz, mtx, mty, mtz) @inbounds h[k1 + 2] = Ms_inv * cross_z(Dx, Dy, Dz, mtx, mty, mtz) + @inbounds energy[id1] = -0.5 * + Ms1 * (h[k1] * mbx + h[k1 + 1] * mby + h[k1 + 2] * mbz) * volume Ms_inv = -1.0 / (Ms2 * dz) - @inbounds h[k2] = Ms_inv * cross_x(Dx, Dy, Dz, mbx, mby, mbz) + @inbounds h[k2] = Ms_inv * cross_x(Dx, Dy, Dz, mbx, mby, mbz) @inbounds h[k2 + 1] = Ms_inv * cross_y(Dx, Dy, Dz, mbx, mby, mbz) @inbounds h[k2 + 2] = Ms_inv * cross_z(Dx, Dy, Dz, mbx, mby, mbz) + @inbounds energy[id2] = -0.5 * + Ms2 * (h[k2] * mtx + h[k2 + 1] * mty + h[k2 + 2] * mtz) * volume end