diff --git a/dev/.documenter-siteinfo.json b/dev/.documenter-siteinfo.json index f556f5bac..a84be5995 100644 --- a/dev/.documenter-siteinfo.json +++ b/dev/.documenter-siteinfo.json @@ -1 +1 @@ -{"documenter":{"julia_version":"1.10.5","generation_timestamp":"2024-09-20T16:59:28","documenter_version":"1.7.0"}} \ No newline at end of file +{"documenter":{"julia_version":"1.10.5","generation_timestamp":"2024-09-20T17:22:00","documenter_version":"1.7.0"}} \ No newline at end of file diff --git a/dev/examples/01_LSWT_CoRh2O4-04a2f997.png b/dev/examples/01_LSWT_CoRh2O4-04a2f997.png deleted file mode 100644 index 72cb78b1a..000000000 Binary files a/dev/examples/01_LSWT_CoRh2O4-04a2f997.png and /dev/null differ diff --git a/dev/examples/01_LSWT_CoRh2O4-839a7644.png b/dev/examples/01_LSWT_CoRh2O4-839a7644.png deleted file mode 100644 index 15eb8b77f..000000000 Binary files a/dev/examples/01_LSWT_CoRh2O4-839a7644.png and /dev/null differ diff --git a/dev/examples/01_LSWT_CoRh2O4-99f52f74.png b/dev/examples/01_LSWT_CoRh2O4-99f52f74.png deleted file mode 100644 index 83ad9860c..000000000 Binary files a/dev/examples/01_LSWT_CoRh2O4-99f52f74.png and /dev/null differ diff --git a/dev/examples/01_LSWT_CoRh2O4-a02a5316.png b/dev/examples/01_LSWT_CoRh2O4-a02a5316.png new file mode 100644 index 000000000..193ac9faf Binary files /dev/null and b/dev/examples/01_LSWT_CoRh2O4-a02a5316.png differ diff --git a/dev/examples/01_LSWT_CoRh2O4-c1900234.png b/dev/examples/01_LSWT_CoRh2O4-c1900234.png deleted file mode 100644 index fd71d41a4..000000000 Binary files a/dev/examples/01_LSWT_CoRh2O4-c1900234.png and /dev/null differ diff --git a/dev/examples/01_LSWT_CoRh2O4-e348980e.png b/dev/examples/01_LSWT_CoRh2O4-e348980e.png new file mode 100644 index 000000000..9c18a8760 Binary files /dev/null and b/dev/examples/01_LSWT_CoRh2O4-e348980e.png differ diff --git a/dev/examples/01_LSWT_CoRh2O4-f5fbbf16.png b/dev/examples/01_LSWT_CoRh2O4-f5fbbf16.png new file mode 100644 index 000000000..4874e28e3 Binary files /dev/null and b/dev/examples/01_LSWT_CoRh2O4-f5fbbf16.png differ diff --git a/dev/examples/01_LSWT_CoRh2O4-f725892f.png b/dev/examples/01_LSWT_CoRh2O4-f725892f.png new file mode 100644 index 000000000..320272e0c Binary files /dev/null and b/dev/examples/01_LSWT_CoRh2O4-f725892f.png differ diff --git a/dev/examples/01_LSWT_CoRh2O4.html b/dev/examples/01_LSWT_CoRh2O4.html index 9cc62a660..e7d8263f0 100644 --- a/dev/examples/01_LSWT_CoRh2O4.html +++ b/dev/examples/01_LSWT_CoRh2O4.html @@ -24,11 +24,11 @@ set_exchange!(sys, J, Bond(1, 3, [0, 0, 0])) view_crystal(sys)
To search for the ground state, call randomize_spins!
and minimize_energy!
in sequence. For this problem, optimization converges rapidly to the expected Néel order. See this with plot_spins
, where spins are colored according to their global $z$-component.
randomize_spins!(sys)
minimize_energy!(sys)
-plot_spins(sys; color=[S[3] for S in sys.dipoles])
The diamond lattice is bipartite, allowing each spin to perfectly anti-align with its 4 nearest-neighbors. Each of these 4 bonds contribute $-J s^2$ to the total energy. Two sites participate in each bond, so the energy per site is $-2 J s^2$. Check this by calling energy_per_site
.
@assert energy_per_site(sys) ≈ -2J*(3/2)^2
The most compact magnetic cell for this Néel order is a primitive unit cell. Reduce the magnetic cell size using reshape_supercell
, where columns of the shape
matrix are primitive lattice vectors as multiples of the conventional cubic lattice vectors $(𝐚_1, 𝐚_2, 𝐚_3)$. One could alternatively use shape = cryst.latvecs \ cryst.prim_latvecs
. Verify that the energy per site is unchanged after the reshaping the supercell.
shape = [0 1 1;
+plot_spins(sys; color=[S[3] for S in sys.dipoles])
The diamond lattice is bipartite, allowing each spin to perfectly anti-align with its 4 nearest-neighbors. Each of these 4 bonds contribute $-J s^2$ to the total energy. Two sites participate in each bond, so the energy per site is $-2 J s^2$. Check this by calling energy_per_site
.
@assert energy_per_site(sys) ≈ -2J*(3/2)^2
The most compact magnetic cell for this Néel order is a primitive unit cell. Reduce the magnetic cell size using reshape_supercell
, where columns of the shape
matrix are primitive lattice vectors as multiples of the conventional cubic lattice vectors $(𝐚_1, 𝐚_2, 𝐚_3)$. One could alternatively use shape = cryst.latvecs \ cryst.prim_latvecs
. Verify that the energy per site is unchanged after the reshaping the supercell.
shape = [0 1 1;
1 0 1;
1 1 0] / 2
sys_prim = reshape_supercell(sys, shape)
-@assert energy_per_site(sys_prim) ≈ -2J*(3/2)^2
Plotting sys_prim
shows the two spins within the primitive cell, as well as the larger conventional cubic cell for context.
plot_spins(sys_prim; color=[S[3] for S in sys_prim.dipoles])
With this primitive cell, we will perform a SpinWaveTheory
calculation of the structure factor $\mathcal{S}(𝐪,ω)$. The measurement ssf_perp
indicates projection of the spin structure factor $\mathcal{S}(𝐪,ω)$ perpendicular to the direction of momentum transfer, as appropriate for unpolarized neutron scattering. The isotropic FormFactor
for Co²⁺ dampens intensities at large $𝐪$.
formfactors = [1 => FormFactor("Co2")]
+@assert energy_per_site(sys_prim) ≈ -2J*(3/2)^2
Plotting sys_prim
shows the two spins within the primitive cell, as well as the larger conventional cubic cell for context.
plot_spins(sys_prim; color=[S[3] for S in sys_prim.dipoles])
With this primitive cell, we will perform a SpinWaveTheory
calculation of the structure factor $\mathcal{S}(𝐪,ω)$. The measurement ssf_perp
indicates projection of the spin structure factor $\mathcal{S}(𝐪,ω)$ perpendicular to the direction of momentum transfer, as appropriate for unpolarized neutron scattering. The isotropic FormFactor
for Co²⁺ dampens intensities at large $𝐪$.
formfactors = [1 => FormFactor("Co2")]
measure = ssf_perp(sys_prim; formfactors)
swt = SpinWaveTheory(sys_prim; measure)
SpinWaveTheory [Dipole mode]
2 atoms
@@ -37,8 +37,8 @@
[0, 0, 0] → [1/2, 0, 0] → [1/2, 1/2, 0] → [0, 0, 0]
Calculate single-crystal scattering intensities
along this path, for energies between 0 and 6 meV. Use plot_intensities
to visualize the result.
energies = range(0, 6, 300)
res = intensities(swt, path; energies, kernel)
-plot_intensities(res; units, title="CoRh₂O₄ LSWT")
Sometimes experimental data is only available as a powder average, i.e., as an average over all possible crystal orientations. Use powder_average
to simulate these intensities. Each $𝐪$-magnitude defines a spherical shell in reciprocal space. Consider 200 radii from 0 to 3 inverse angstroms, and collect 2000
random samples per spherical shell. As configured, this calculation completes in about two seconds. Had we used the conventional cubic cell, the calculation would be an order of magnitude slower.
radii = range(0, 3, 200) # (1/Å)
+plot_intensities(res; units, title="CoRh₂O₄ LSWT")
Sometimes experimental data is only available as a powder average, i.e., as an average over all possible crystal orientations. Use powder_average
to simulate these intensities. Each $𝐪$-magnitude defines a spherical shell in reciprocal space. Consider 200 radii from 0 to 3 inverse angstroms, and collect 2000
random samples per spherical shell. As configured, this calculation completes in about two seconds. Had we used the conventional cubic cell, the calculation would be an order of magnitude slower.
radii = range(0, 3, 200) # (1/Å)
res = powder_average(cryst, radii, 2000) do qs
intensities(swt, qs; energies, kernel)
end
-plot_intensities(res; units, saturation=1.0, title="CoRh₂O₄ Powder Average")
This result can be compared to experimental neutron scattering data from Fig. 5 of Ge et al.
Settings
This document was generated with Documenter.jl version 1.7.0 on Friday 20 September 2024. Using Julia version 1.10.5.