From 9cc988a09b7780f6831524a00566b1abf305624d Mon Sep 17 00:00:00 2001 From: Shuhei Ohno Date: Fri, 14 Aug 2026 11:27:12 +0900 Subject: [PATCH 1/2] Add charmonium example --- docs/src/Rayleigh-Ritz.md | 43 +++++++++++++++++++++++++++++++++++++++ test/Rayleigh-Ritz.jl | 29 ++++++++++++++++++++++++++ 2 files changed, 72 insertions(+) diff --git a/docs/src/Rayleigh-Ritz.md b/docs/src/Rayleigh-Ritz.md index dd70dbb..d8f2d1f 100644 --- a/docs/src/Rayleigh-Ritz.md +++ b/docs/src/Rayleigh-Ritz.md @@ -254,6 +254,49 @@ save("assets/RR_SO.svg", fig) # hide ``` ![](assets/RR_SO.svg) +## Example of Charmonium + +This ``\eta_c`` calculation uses the Cornell potential and parameters of [Meng, Wang, and Oka (2024)](https://doi.org/10.48550/arXiv.2404.01238). Natural units are used, so the result is in GeV. + +```@example charmonium +using TwoBody + +masses = (1.836, 1.836) +spin = -3 +Λ = 0.8321 +λ = 0.1653 +κ = 0.5069 +κ′ = 1.8609 +A = 1.6553 +B = 0.2204 +μ = inv(inv(masses[1]) + inv(masses[2])) +r₀ = A * (2masses[1] * masses[2] / sum(masses))^(-B) + +H = Hamiltonian( + RestEnergy(m=masses[1]), + RestEnergy(m=masses[2]), + Kinetic(hbar=1, m=μ), + Coulomb(coefficient=-κ), + Linear(coefficient=λ), + Constant(constant=-Λ), + Gaussian( + coefficient=2π * κ′ * spin / + (3masses[1] * masses[2] * (sqrt(π) * r₀)^3), + exponent=inv(r₀^2), + ), +) + +BS = BasisSet( + SimpleGaussianBasis(13.00773), + SimpleGaussianBasis(1.962079), + SimpleGaussianBasis(0.444529), + SimpleGaussianBasis(0.1219492), +) + +result = solve(H, BS; info=0) +round(result.E[1]; digits=6) +``` + ## STO-3G This example reproduces the STO-3G calculation for hydrogen reported by [Pérez-Torres (2019)](https://doi.org/10.1021/acs.jchemed.8b00959). In the contracted calculation, the published coefficients are held fixed, and the resulting contracted function is supplied to the solver. In the uncontracted calculation, the three primitive functions are supplied separately, allowing the Rayleigh–Ritz solver to optimize their linear coefficients. diff --git a/test/Rayleigh-Ritz.jl b/test/Rayleigh-Ritz.jl index 6839826..9212d12 100644 --- a/test/Rayleigh-Ritz.jl +++ b/test/Rayleigh-Ritz.jl @@ -57,6 +57,35 @@ @printf("%3d\t%.9f\t%.9f\t%s\n", 1, numerical, analytical, acceptance ? "✔" : "✗") @test acceptance + @testset "charmonium" begin + masses = (1.836, 1.836) + spin = -3 + Λ = 0.8321 + λ = 0.1653 + κ = 0.5069 + κ′ = 1.8609 + A = 1.6553 + B = 0.2204 + μ = inv(inv(masses[1]) + inv(masses[2])) + r₀ = A * (2masses[1] * masses[2] / sum(masses))^(-B) + charmonium = Hamiltonian( + RestEnergy(m=masses[1]), + RestEnergy(m=masses[2]), + Kinetic(hbar=1, m=μ), + Coulomb(coefficient=-κ), + Linear(coefficient=λ), + Constant(constant=-Λ), + Gaussian( + coefficient=2π * κ′ * spin / + (3masses[1] * masses[2] * (sqrt(π) * r₀)^3), + exponent=inv(r₀^2), + ), + ) + + result = solve(charmonium, BS; info=0) + @test result.E[1] ≈ 3.006976036203 atol=1e-12 + end + @testset "Pérez-Torres STO-3G contraction" begin exponents = (0.109818, 0.405771, 2.227660) contraction = (0.444635, 0.535328, 0.154329) From bae293aa4946165a0e48209e105ce7567a0a2cba Mon Sep 17 00:00:00 2001 From: Shuhei Ohno Date: Thu, 20 Aug 2026 08:44:38 +0900 Subject: [PATCH 2/2] Update hadron spectroscopy examples --- docs/src/Rayleigh-Ritz.md | 98 +++++++++++++++++++++++++++++---------- test/Rayleigh-Ritz.jl | 67 +++++++++++++++++++------- 2 files changed, 123 insertions(+), 42 deletions(-) diff --git a/docs/src/Rayleigh-Ritz.md b/docs/src/Rayleigh-Ritz.md index d8f2d1f..500c41c 100644 --- a/docs/src/Rayleigh-Ritz.md +++ b/docs/src/Rayleigh-Ritz.md @@ -254,47 +254,97 @@ save("assets/RR_SO.svg", fig) # hide ``` ![](assets/RR_SO.svg) -## Example of Charmonium +## Examples of Hadron Spectroscopy -This ``\eta_c`` calculation uses the Cornell potential and parameters of [Meng, Wang, and Oka (2024)](https://doi.org/10.48550/arXiv.2404.01238). Natural units are used, so the result is in GeV. +Natural units are used below; masses are displayed in MeV. -```@example charmonium +### ``\Lambda_c(1/2^+)`` + +Parameters follow [Kim, Hiyama, Oka, and Suzuki (2020)](https://doi.org/10.1103/PhysRevD.102.014004). + +```@example lambda_c using TwoBody -masses = (1.836, 1.836) -spin = -3 -Λ = 0.8321 -λ = 0.1653 +Mqq = 0.725 +Mc = 1.750 +μ = inv(inv(Mqq) + inv(Mc)) +α = 0.06 / μ + +H = Hamiltonian( + RestEnergy(m=Mqq), + RestEnergy(m=Mc), + Kinetic(hbar=1, m=μ), + Coulomb(coefficient=-α), + Linear(coefficient=0.165), + Constant(constant=-0.83116597), +) +BS = GeometricBasisSet(GaussianBasis, 0.01, 9.0, 40) + +round(1000 * solve(H, BS; info=0).E[1]; digits=3) +``` + +### ``\eta_c(1S)``: Meng, Wang, and Oka + +Parameters follow [Meng, Wang, and Oka (2024)](https://doi.org/10.48550/arXiv.2404.01238). + +```@example meng_charmonium +using TwoBody + +m₁ = 1.836 +m₂ = 1.836 κ = 0.5069 κ′ = 1.8609 -A = 1.6553 -B = 0.2204 -μ = inv(inv(masses[1]) + inv(masses[2])) -r₀ = A * (2masses[1] * masses[2] / sum(masses))^(-B) +spin = -3 +μ = inv(inv(m₁) + inv(m₂)) +r₀ = 1.6553 * (2m₁ * m₂ / (m₁ + m₂))^(-0.2204) H = Hamiltonian( - RestEnergy(m=masses[1]), - RestEnergy(m=masses[2]), + RestEnergy(m=m₁), + RestEnergy(m=m₂), Kinetic(hbar=1, m=μ), Coulomb(coefficient=-κ), - Linear(coefficient=λ), - Constant(constant=-Λ), + Linear(coefficient=0.1653), + Constant(constant=-0.8321), Gaussian( - coefficient=2π * κ′ * spin / - (3masses[1] * masses[2] * (sqrt(π) * r₀)^3), + coefficient=2π * κ′ * spin / (3m₁ * m₂ * (sqrt(π) * r₀)^3), exponent=inv(r₀^2), ), ) +BS = GeometricBasisSet(GaussianBasis, 0.1, 80.0, 20) -BS = BasisSet( - SimpleGaussianBasis(13.00773), - SimpleGaussianBasis(1.962079), - SimpleGaussianBasis(0.444529), - SimpleGaussianBasis(0.1219492), +round(1000 * solve(H, BS; info=0).E[1]; digits=3) +``` + +### ``\eta_c(1S)``: Arifi, Happ, Ohno, and Oka + +Parameters follow [Arifi, Happ, Ohno, and Oka (2024)](https://arxiv.org/abs/2401.07933). + +```@example arifi_charmonium +using TwoBody + +m₁ = 1.515 +m₂ = 1.515 +αs = 0.285 +spin = -3/4 +μ = inv(inv(m₁) + inv(m₂)) +λ = 1.437 * sqrt(μ) + +H = Hamiltonian( + RestEnergy(m=m₁), + RestEnergy(m=m₂), + RelativisticKinetic(m=m₁), + RelativisticKinetic(m=m₂), + Constant(constant=-0.189), + Linear(coefficient=0.092), + Coulomb(coefficient=-4αs/3), + Gaussian( + coefficient=32π * αs * (λ / sqrt(π))^3 * spin / (9m₁ * m₂), + exponent=λ^2, + ), ) +BS = GeometricBasisSet(GaussianBasis, 0.358, 2.720, 10) -result = solve(H, BS; info=0) -round(result.E[1]; digits=6) +round(1000 * solve(H, BS; info=0).E[1]; digits=3) ``` ## STO-3G diff --git a/test/Rayleigh-Ritz.jl b/test/Rayleigh-Ritz.jl index 9212d12..c59f08e 100644 --- a/test/Rayleigh-Ritz.jl +++ b/test/Rayleigh-Ritz.jl @@ -57,33 +57,64 @@ @printf("%3d\t%.9f\t%.9f\t%s\n", 1, numerical, analytical, acceptance ? "✔" : "✗") @test acceptance - @testset "charmonium" begin - masses = (1.836, 1.836) - spin = -3 - Λ = 0.8321 - λ = 0.1653 + @testset "hadron spectroscopy" begin + Mqq = 0.725 + Mc = 1.750 + μ = inv(inv(Mqq) + inv(Mc)) + lambda_c = Hamiltonian( + RestEnergy(m=Mqq), + RestEnergy(m=Mc), + Kinetic(hbar=1, m=μ), + Coulomb(coefficient=-0.06 / μ), + Linear(coefficient=0.165), + Constant(constant=-0.83116597), + ) + lambda_c_basis = GeometricBasisSet(GaussianBasis, 0.01, 9.0, 40) + @test solve(lambda_c, lambda_c_basis; info=0).E[1] ≈ 2.286 atol=1e-6 + + m₁ = 1.836 + m₂ = 1.836 κ = 0.5069 κ′ = 1.8609 - A = 1.6553 - B = 0.2204 - μ = inv(inv(masses[1]) + inv(masses[2])) - r₀ = A * (2masses[1] * masses[2] / sum(masses))^(-B) - charmonium = Hamiltonian( - RestEnergy(m=masses[1]), - RestEnergy(m=masses[2]), + spin = -3 + μ = inv(inv(m₁) + inv(m₂)) + r₀ = 1.6553 * (2m₁ * m₂ / (m₁ + m₂))^(-0.2204) + meng = Hamiltonian( + RestEnergy(m=m₁), + RestEnergy(m=m₂), Kinetic(hbar=1, m=μ), Coulomb(coefficient=-κ), - Linear(coefficient=λ), - Constant(constant=-Λ), + Linear(coefficient=0.1653), + Constant(constant=-0.8321), Gaussian( - coefficient=2π * κ′ * spin / - (3masses[1] * masses[2] * (sqrt(π) * r₀)^3), + coefficient=2π * κ′ * spin / (3m₁ * m₂ * (sqrt(π) * r₀)^3), exponent=inv(r₀^2), ), ) + meng_basis = GeometricBasisSet(GaussianBasis, 0.1, 80.0, 20) + @test solve(meng, meng_basis; info=0).E[1] ≈ 3.005 atol=1e-3 - result = solve(charmonium, BS; info=0) - @test result.E[1] ≈ 3.006976036203 atol=1e-12 + m₁ = 1.515 + m₂ = 1.515 + αs = 0.285 + spin = -3/4 + μ = inv(inv(m₁) + inv(m₂)) + λ = 1.437 * sqrt(μ) + arifi = Hamiltonian( + RestEnergy(m=m₁), + RestEnergy(m=m₂), + RelativisticKinetic(m=m₁), + RelativisticKinetic(m=m₂), + Constant(constant=-0.189), + Linear(coefficient=0.092), + Coulomb(coefficient=-4αs/3), + Gaussian( + coefficient=32π * αs * (λ / sqrt(π))^3 * spin / (9m₁ * m₂), + exponent=λ^2, + ), + ) + arifi_basis = GeometricBasisSet(GaussianBasis, 0.358, 2.720, 10) + @test solve(arifi, arifi_basis; info=0).E[1] ≈ 3.019 atol=2e-3 end @testset "Pérez-Torres STO-3G contraction" begin