diff --git a/previews/PR315/.documenter-siteinfo.json b/previews/PR315/.documenter-siteinfo.json index 7dfbc69cc..957a4d961 100644 --- a/previews/PR315/.documenter-siteinfo.json +++ b/previews/PR315/.documenter-siteinfo.json @@ -1 +1 @@ -{"documenter":{"julia_version":"1.10.5","generation_timestamp":"2024-09-08T13:36:12","documenter_version":"1.7.0"}} \ No newline at end of file +{"documenter":{"julia_version":"1.10.5","generation_timestamp":"2024-09-08T13:40:07","documenter_version":"1.7.0"}} \ No newline at end of file diff --git a/previews/PR315/examples/01_LSWT_CoRh2O4-0ba0a46c.png b/previews/PR315/examples/01_LSWT_CoRh2O4-0ba0a46c.png new file mode 100644 index 000000000..22ded7e88 Binary files /dev/null and b/previews/PR315/examples/01_LSWT_CoRh2O4-0ba0a46c.png differ diff --git a/previews/PR315/examples/01_LSWT_CoRh2O4-0c58c500.png b/previews/PR315/examples/01_LSWT_CoRh2O4-0c58c500.png deleted file mode 100644 index 2564308da..000000000 Binary files a/previews/PR315/examples/01_LSWT_CoRh2O4-0c58c500.png and /dev/null differ diff --git a/previews/PR315/examples/01_LSWT_CoRh2O4-3b01a6da.png b/previews/PR315/examples/01_LSWT_CoRh2O4-3b01a6da.png deleted file mode 100644 index 54b24a5cb..000000000 Binary files a/previews/PR315/examples/01_LSWT_CoRh2O4-3b01a6da.png and /dev/null differ diff --git a/previews/PR315/examples/01_LSWT_CoRh2O4-4e6b4be5.png b/previews/PR315/examples/01_LSWT_CoRh2O4-4e6b4be5.png new file mode 100644 index 000000000..9ea45f78c Binary files /dev/null and b/previews/PR315/examples/01_LSWT_CoRh2O4-4e6b4be5.png differ diff --git a/previews/PR315/examples/01_LSWT_CoRh2O4-57408c88.png b/previews/PR315/examples/01_LSWT_CoRh2O4-57408c88.png new file mode 100644 index 000000000..18a224c51 Binary files /dev/null and b/previews/PR315/examples/01_LSWT_CoRh2O4-57408c88.png differ diff --git a/previews/PR315/examples/01_LSWT_CoRh2O4-85309a85.png b/previews/PR315/examples/01_LSWT_CoRh2O4-85309a85.png deleted file mode 100644 index fa407ad01..000000000 Binary files a/previews/PR315/examples/01_LSWT_CoRh2O4-85309a85.png and /dev/null differ diff --git a/previews/PR315/examples/01_LSWT_CoRh2O4-967efe09.png b/previews/PR315/examples/01_LSWT_CoRh2O4-967efe09.png deleted file mode 100644 index bd4d43a32..000000000 Binary files a/previews/PR315/examples/01_LSWT_CoRh2O4-967efe09.png and /dev/null differ diff --git a/previews/PR315/examples/01_LSWT_CoRh2O4-e77085e0.png b/previews/PR315/examples/01_LSWT_CoRh2O4-e77085e0.png new file mode 100644 index 000000000..faeff5a62 Binary files /dev/null and b/previews/PR315/examples/01_LSWT_CoRh2O4-e77085e0.png differ diff --git a/previews/PR315/examples/01_LSWT_CoRh2O4.html b/previews/PR315/examples/01_LSWT_CoRh2O4.html index 359ca17ac..9d2f44482 100644 --- a/previews/PR315/examples/01_LSWT_CoRh2O4.html +++ b/previews/PR315/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 Sunday 8 September 2024. Using Julia version 1.10.5.