AstroChem Work-Precision Diagrams
using Catalyst
using SciMLLogging
using OrdinaryDiffEq
using OrdinaryDiffEqBDF, OrdinaryDiffEqExtrapolation, OrdinaryDiffEqFIRK, OrdinaryDiffEqRosenbrock, OrdinaryDiffEqSDIRK
using Plots
using Symbolics
using DiffEqDevTools
using Sundials, ODEInterface, ODEInterfaceDiffEq, LSODA
using RecursiveFactorizationWithout Temperature Dynamics
# Some basic astrochemistry constants:
# u_vec = [H2 O C O⁺ OH⁺ H H2O⁺ H3O⁺ E H2O OH C⁺ CO CO⁺ H⁺ HCO⁺ T]
# println(u_vec)
# @species
kboltzmann = 1.38064852e-16 # erg / K
pmass = 1.6726219e-24 # g
# dust2gas = 1e-2 # ratio
mu = 2.34
seconds_per_year = 3600 * 24 * 365
gamma_ad = 1.4
gnot = 1e1
# Simulation parameters:
number_density = 1e5
# dust2gas = 0.01
minimum_fractional_density = 1e-30 * number_density
# @register_symbolic get_heating(H, H2, E, tgas, ntot, dust2gas)
function get_heating(H, H2, E, tgas, ntot, dust2gas)
"""
get_heating(x, tgas, cr_rate, gnot)
Calculate the total heating rate based on various processes.
## Arguments
- `x`: Dict{String, Float64} — A dictionary containing the abundances of different species:
- `"H"`: Abundance of hydrogen
- `"H2"`: Abundance of molecular hydrogen
- `"E"`: Abundance of electrons
- `"dust2gas"`: Dust-to-gas ratio
- `tgas`: Float64 — Gas temperature
- `cr_rate`: Float64 — Cosmic ray ionization rate
- `gnot`: Float64 — Scaling factor for cosmic ray ionization rate
## Returns
- Float64 — Total heating rate considering cosmic ray ionization and photoelectric heating processes.
"""
rate_H2 = 5.68e-11 * gnot
heats = [
cosmic_ionisation_rate * (5.5e-12 * H + 2.5e-11 * H2),
get_photoelectric_heating(H, E, tgas, gnot, ntot, dust2gas),
6.4e-13 * rate_H2 * H2
]
return sum(heats)
end
# @register_symbolic get_photoelectric_heating(H, E, tgas, gnot, ntot, dust2gas)
function get_photoelectric_heating(H, E, tgas, gnot, ntot, dust2gas)
"""
get_photoelectric_heating(x, tgas, gnot)
Calculate the photoelectric heating rate due to dust grains.
## Arguments
- `x`: Dict{String, Float64} — A dictionary containing the abundances of different species:
- `"H"`: Abundance of hydrogen
- `"H2"`: Abundance of molecular hydrogen
- `"E"`: Abundance of electrons
- `tgas`: Float64 — Gas temperature
- `gnot`: Float64 — Scaling factor for cosmic ray ionization rate
## Returns
- Float64 — Photoelectric heating rate based on dust recombination and ionization processes.
"""
# ntot = sum(x)
bet = 0.735 * tgas^(-0.068)
psi = (E>0) * gnot * sqrt(tgas) / E
# grains recombination cooling
recomb_cool = 4.65e-30 * tgas^0.94 * psi^bet * E * H
eps = 4.9e-2 / (1 + 4e-3 * psi^0.73) + 3.7e-2 * (tgas * 1e-4)^0.7 / (1 + 2e-4 * psi)
# net photoelectric heating
return (1.3e-24 * eps * gnot * ntot - recomb_cool) * dust2gas
end
# @register_symbolic get_cooling(H, H2, O, E, tgas)
function get_cooling(H, H2, O, E, tgas)
"""
get_cooling(x, tgas)
Calculate the total cooling rate based on various processes.
## Arguments
- `x`: Dict{String, Float64} — A dictionary containing the abundances of different species:
- `"H"`: Abundance of hydrogen
- `"E"`: Abundance of electrons
- `"O"`: Abundance of oxygen
- `"H2"`: Abundance of molecular hydrogen
- `tgas`: Float64 — Gas temperature
## Returns
- Float64 — Total cooling rate considering Lyman-alpha, OI 630nm, and H2 cooling processes.
"""
cool = 7.3e-19 * H * E * exp(-118400.0 / tgas) # Ly-alpha
cool += 1.8e-24 * O * E * exp(-22800 / tgas) # OI 630nm
cool += cooling_H2(H, H2, tgas) # H2 cooling by dissacoiation and recombination
return cool
end
@register_symbolic cooling_H2(H, H2, temp)
function cooling_H2(H, H2, temp)
"""
cooling_H2(x, temp)
Calculate the cooling rate for molecular hydrogen (H2) at a given temperature.
## Arguments
- `x`: Dict{String, Float64} — A dictionary containing the abundances of different species:
- `"H"`: Abundance of hydrogen
- `"H2"`: Abundance of molecular hydrogen
- `temp`: Float64 — Gas temperature
## Returns
- Float64 — Cooling rate due to molecular hydrogen (H2) dissociation and recombination processes.
"""
t3 = temp * 1e-3 # (T/1000)
logt3 = log10(t3)
logt32 = logt3 * logt3
logt33 = logt32 * logt3
logt34 = logt33 * logt3
logt35 = logt34 * logt3
logt36 = logt35 * logt3
logt37 = logt36 * logt3
logt38 = logt37 * logt3
if temp < 2e3
HDLR = (9.5e-22 * t3^3.76) / (1.0 + 0.12 * t3^2.1) * exp(-((0.13 / t3)^3)) +
3.0e-24 * exp(-0.51 / t3)
HDLV = 6.7e-19 * exp(-5.86 / t3) + 1.6e-18 * exp(-11.7 / t3)
HDL = HDLR + HDLV
elseif 2e3 <= temp <= 1e4
HDL = 1e1^(
-2.0584225e1
+
5.0194035 * logt3
-
1.5738805 * logt32
-
4.7155769 * logt33
+ 2.4714161 * logt34
+ 5.4710750 * logt35
-
3.9467356 * logt36
-
2.2148338 * logt37
+
1.8161874 * logt38
)
else
HDL = 5.531333679406485e-19
end
if temp <= 1e2
f = 1e1^(
-16.818342e0
+ 3.7383713e1 * logt3
+ 5.8145166e1 * logt32
+ 4.8656103e1 * logt33
+ 2.0159831e1 * logt34
+ 3.8479610e0 * logt35
)
elseif 1e2 < temp <= 1e3
f = 1e1^(
-2.4311209e1
+
3.5692468e0 * logt3
-
1.1332860e1 * logt32
-
2.7850082e1 * logt33
-
2.1328264e1 * logt34
-
4.2519023e0 * logt35
)
elseif 1e3 < temp <= 6e3
f = 1e1^(
-2.4311209e1
+
4.6450521e0 * logt3
-
3.7209846e0 * logt32
+
5.9369081e0 * logt33
-
5.5108049e0 * logt34
+
1.5538288e0 * logt35
)
else
f = 1.862314467912518e-22
end
LDL = f * H
if LDL * HDL == 0.0
return 0.0
end
cool = H2 / (1.0 / HDL + 1.0 / LDL)
return cool
end
function get_heating_cooling(
T, H2, O, C, O⁺, OH⁺, H, H2O⁺, H3O⁺, E, H2O, OH, C⁺, CO, CO⁺, H⁺, HCO⁺, dust2gas)
ntot = get_ntot(H2, O, C, O⁺, OH⁺, H, H2O⁺, H3O⁺, E, H2O, OH, C⁺, CO, CO⁺, H⁺, HCO⁺)
return (gamma_ad - 1e0) *
(get_heating(H, H2, E, T, ntot, dust2gas) - get_cooling(H, H2, O, E, T)) /
kboltzmann / ntot
end
function get_ntot(H2, O, C, O⁺, OH⁺, H, H2O⁺, H3O⁺, E, H2O, OH, C⁺, CO, CO⁺, H⁺, HCO⁺)
return sum([H2 O C O⁺ OH⁺ H H2O⁺ H3O⁺ E H2O OH C⁺ CO CO⁺ H⁺ HCO⁺])
end
ka_reaction(Tgas, α = 1.0, β = 1.0, γ = 0.0) = α*(Tgas/300)^β*exp(−γ / Tgas)
# CONTINUE HERE
# Try this: https://docs.sciml.ai/Catalyst/stable/catalyst_functionality/constraint_equations/#Coupling-ODE-constraints-via-directly-building-a-ReactionSystem
@independent_variables t
@variables T(t) = 100.0 # Define the variables before the species!
@species H2(t) O(t) C(t) O⁺(t) OH⁺(t) H(t) H2O⁺(t) H3O⁺(t) E(t) H2O(t) OH(t) C⁺(t) CO(t) CO⁺(t) H⁺(t) HCO⁺(t)
@parameters cosmic_ionisation_rate radiation_field dust2gas
D = Differential(t)
reaction_equations = [
(@reaction 1.6e-9, $O⁺ + $H2 --> $OH⁺ + $H),
(@reaction 1e-9, $OH⁺ + $H2 --> $H2O⁺ + $H),
(@reaction 6.1e-10, $H2O⁺ + $H2 --> $H3O⁺ + $H),
(@reaction ka_reaction(T, 1.1e-7, -1/2), $H3O⁺ + $E --> $H2O + $H),
(@reaction ka_reaction(T, 8.6e-8, -1/2), $H2O⁺ + $E --> $OH + $H),
(@reaction ka_reaction(T, 3.9e-8, -1/2), $H2O⁺ + $E --> $O + $H2),
(@reaction ka_reaction(T, 6.3e-9, -0.48), $OH⁺ + $E --> $O + $H),
(@reaction ka_reaction(T, 3.4e-12, -0.63), $O⁺ + $E --> $O),
(@reaction 2.8 * cosmic_ionisation_rate, $O --> $O⁺ + $E),
(@reaction 2.62 * cosmic_ionisation_rate, $C --> $C⁺ + $E),
(@reaction 5.0 * cosmic_ionisation_rate, $CO --> $C + $O),
(@reaction ka_reaction(T, 4.4e-12, -0.61), $C⁺ + $E --> $C),
(@reaction ka_reaction(T, 1.15e-10, -0.339), $C⁺ + $OH --> CO + $H),
(@reaction 9.15e-10 * (0.62 + 0.4767 * 5.5 * sqrt(300 / T)), $C⁺ + $OH --> $CO⁺ + $H),
(@reaction 4e-10, $CO⁺ + $H --> $CO + $H⁺),
(@reaction 7.28e-10, $CO⁺ + $H2 --> $HCO⁺ + $H),
(@reaction ka_reaction(T, 2.8e-7, -0.69), $HCO⁺ + $E --> $CO + $H),
(@reaction ka_reaction(T, 3.5e-12, -0.7), $H⁺ + $E --> $H),
(@reaction 2.121e-17 * dust2gas / 1e-2, $H + $H --> $H2),
(@reaction 1e-1 * cosmic_ionisation_rate, $H2 --> $H + $H),
(@reaction 3.39e-10 * radiation_field, $C --> $C⁺ + $E),
(@reaction 2.43e-10 * radiation_field, $CO --> $C + $O),
(@reaction 7.72e-10 * radiation_field, $H2O --> $OH + $H) # (D(T) ~ get_heating_cooling(T, H2, O, C, O⁺, OH⁺, H, H2O⁺, H3O⁺, E, H2O, OH, C⁺, CO, CO⁺, H⁺, HCO⁺, dust2gas))
]
@named system = ReactionSystem(reaction_equations, t)
u0 = [:H2 => number_density, :O => number_density*2e-4, :C => number_density*1e-4,
:O⁺=>minimum_fractional_density, :OH⁺=>minimum_fractional_density,
:H => minimum_fractional_density, :H2O⁺ => minimum_fractional_density,
:H3O⁺=>minimum_fractional_density, :E=>minimum_fractional_density,
:H2O=>minimum_fractional_density, :OH=>minimum_fractional_density,
:C⁺=>minimum_fractional_density, :CO=>minimum_fractional_density,
:CO⁺=>minimum_fractional_density, :H⁺=>minimum_fractional_density,
:HCO⁺ => minimum_fractional_density, :T => 100.0]
tspan = (0.0, 1e6*seconds_per_year)
params = [dust2gas => 0.01, radiation_field => 1e-1, cosmic_ionisation_rate => 1e-17]
println("Attempting to solve the ODE...")
sys = ode_model(complete(system))
# oprob = ODEProblemExpr(sys, [], tspan, params)
ssys = structural_simplify(sys)Attempting to solve the ODE...
Model system:
Equations (16):
16 standard: see equations(system)
Unknowns (16): see unknowns(system)
O⁺(t)
H2(t)
OH⁺(t)
H(t)
⋮
Parameters (4): see parameters(system)
T
cosmic_ionisation_rate
dust2gas
radiation_fieldoprob = ODEProblem(ssys, merge(Dict{Any, Any}(u0), Dict{Any, Any}(params)), tspan)
println("ODEProblem created successfully.")
sol = solve(oprob, Rodas5()) # Rodas5()) # Tsit5()
# Generate a tight-tolerance reference solution
refsol = solve(oprob, Rodas5P(), abstol = 1e-14, reltol = 1e-14)ODEProblem created successfully.
retcode: Success
Interpolation: specialized 4th (Rodas6P = 5th) order "free" stiffness-aware
interpolation
t: 971-element Vector{Float64}:
0.0
0.06082607907396814
1.2538157290785135
13.183712229123966
101.77765841511946
619.6337095951175
2664.0285003231884
5808.753793560587
9647.368391925425
14759.542849063164
⋮
2.059154919876833e13
2.197302558540446e13
2.338634685332286e13
2.482460181094649e13
2.628657428251865e13
2.776259583903611e13
2.928620279608695e13
3.0823373989821812e13
3.1536e13
u: 971-element Vector{Vector{Float64}}:
[1.0e-25, 100000.0, 1.0e-25, 1.0e-25, 1.0e-25, 1.0e-25, 1.0e-25, 1.0e-25,
1.0e-25, 20.0, 10.0, 1.0e-25, 1.0e-25, 1.0e-25, 1.0e-25, 1.0e-25]
[3.4062438630386017e-17, 100000.0, 1.658506995116365e-22, 1.21652159806449
98e-14, 1.0033630285797331e-25, 1.0000037135125647e-25, 2.0620090805091067e
-11, 9.999999999953043e-26, 1.0000000000046958e-25, 20.0, 9.99999999997938,
2.06200567424868e-11, 9.99999999998522e-26, 9.999955718712477e-26, 1.0e-25
, 1.0000044281287524e-25]
[7.020663850793171e-16, 100000.0, 7.04204614270862e-20, 2.5076321624205177
e-13, 3.0431671276365665e-24, 1.0006392488780413e-25, 4.25044562785115e-10,
9.999999999032054e-26, 1.0000000000967951e-25, 19.999999999999996, 9.99999
9999574957, 4.250438606483079e-10, 9.999999999695323e-26, 9.999087263806135
e-26, 1.0e-25, 1.0000912736193864e-25]
[7.375097620583222e-15, 100000.0, 7.777808936615606e-18, 2.636750230472412
6e-12, 3.418402205901515e-21, 7.874810324164259e-25, 4.469289281685813e-9,
9.999999989822363e-26, 1.0000000010777992e-25, 19.999999999999993, 9.999999
995530718, 4.46928189880694e-9, 9.999999996796526e-26, 9.990406861857091e-2
6, 1.0e-25, 1.0009593138142733e-25]
[5.653392813455609e-14, 100000.0, 4.599965551264545e-16, 2.035599481005278
e-11, 1.5615953555166292e-18, 2.4278289793467666e-21, 3.450270980443913e-8,
9.99999994909976e-26, 1.0000016435105337e-25, 19.999999999999943, 9.999999
965497347, 3.450265280895059e-8, 9.999999975278522e-26, 9.926179685018278e-
26, 1.0e-25, 1.0073820314971262e-25]
[3.303487218020619e-13, 99999.99999999996, 1.6304846374485057e-14, 1.23943
7326103723e-10, 3.380826178467006e-16, 3.2265792626927646e-18, 2.1005633468
547995e-7, 1.0001360346171529e-25, 1.0132098046345741e-25, 19.9999999999996
55, 9.999999789944013, 2.100559876906013e-7, 9.999999849829182e-26, 9.55892
9644625345e-26, 9.999999999999997e-26, 1.0441070354977355e-25]
[1.2146517696565777e-12, 99999.99999999975, 2.5338086335458003e-13, 5.3310
76964453534e-10, 2.2854464151033873e-14, 9.688630148951168e-16, 9.031078106
609437e-7, 1.762272047407728e-25, 1.7948919363190303e-24, 19.99999999999850
8, 9.999999096893683, 9.031063188049707e-7, 9.999999360702743e-26, 8.237062
751827235e-26, 9.999999999999913e-26, 1.1762937240391702e-25]
[2.1182339774625214e-12, 99999.99999999943, 9.308764089516043e-13, 1.16310
72618961456e-9, 1.8574843881518786e-13, 1.804329902717451e-14, 1.9691721169
312786e-6, 7.002539774039498e-24, 6.84106716421878e-23, 19.999999999996742,
9.99999803083114, 1.9691688640291505e-6, 9.99999863281453e-26, 6.551590370
964002e-26, 9.999999999999579e-26, 1.3448409640491016e-25]
[2.7523466012418333e-12, 99999.99999999905, 1.9028958136631572e-12, 1.9329
803921166704e-9, 6.380337354201996e-13, 1.0925014785757614e-13, 3.270465280
203764e-6, 1.1914941477293897e-22, 6.79982795788086e-22, 19.999999999994593
, 9.999996729540127, 3.2704598776774505e-6, 9.999997839354608e-26, 4.954305
331498963e-26, 9.999999999998833e-26, 1.5045696096013292e-25]
[3.170033084457648e-12, 99999.99999999854, 3.0667412783230837e-12, 2.95947
98950146132e-9, 1.581124972930939e-12, 4.4744465170487116e-13, 5.0034959064
307415e-6, 1.1888933895022125e-21, 4.20060301390201e-21, 19.99999999999173,
9.999994996512365, 5.003487641086763e-6, 9.999997571270549e-26, 3.41472291
77517583e-26, 9.999999999997257e-26, 1.658530018238108e-25]
⋮
[3.5000676667239367e-12, 99997.89674703019, 5.5973538097688176e-12, 4.2064
91642296905, 9.028269677430033e-12, 6.270274613491162e-10, 4.60983466683249
25, 7.133586368321887e-6, 2.4710709791921323e-8, 19.99996992270233, 5.39053
3612401937, 4.609443469242402, 2.2918152759396397e-5, 7.388755787056146e-12
, 3.5662154501122506e-10, 1.9527044265344143e-10]
[3.500072598934487e-12, 99997.75583252158, 5.597361683353563e-12, 4.488320
6594919, 9.028281634335875e-12, 6.270250871646567e-10, 4.6098517307567946,
7.133585763454087e-6, 2.4710758409772803e-8, 19.99996992270353, 5.390542809
977416, 4.609434271667534, 2.2918152119992858e-5, 7.388754551175432e-12, 3.
805466797116966e-10, 1.9526941200534634e-10]
[3.5000776435034164e-12, 99997.61170831628, 5.597369736299911e-12, 4.77656
9070052071, 9.028293863471739e-12, 6.270226582707733e-10, 4.609869188051617
, 7.133585144686613e-6, 2.4710808148447213e-8, 19.999969922704757, 5.390552
219544414, 4.609424862101198, 2.291815146589588e-5, 7.388753287102977e-12,
4.050165885470557e-10, 1.952683576895658e-10]
[3.500082775592372e-12, 99997.46508407507, 5.59737792895656e-12, 5.0698175
52455804, 9.028306304604625e-12, 6.270201865462538e-10, 4.6098869533515865,
7.133584515050911e-6, 2.4710858764731163e-8, 19.999969922706004, 5.3905617
95088247, 4.609415286558033, 2.2918150800309963e-5, 7.388752001057815e-12,
4.299107717359551e-10, 1.9526728487270744e-10]
[3.500087990692575e-12, 99997.31608863549, 5.5973862541255275e-12, 5.36780
8431601343, 9.028318946785162e-12, 6.270176740824488e-10, 4.609905011635832
, 7.133583875085017e-6, 2.4710910215833924e-8, 19.99996992270727, 5.3905715
28510615, 4.609405553136359, 2.2918150123803874e-5, 7.388750694164807e-12,
4.552073452714002e-10, 1.952661944727692e-10]
[3.5000932541549914e-12, 99997.16571193741, 5.5973946564942e-12, 5.6685618
27741237, 9.028331706000715e-12, 6.2701513749607e-10, 4.609923243480929, 7.
1335832290265424e-6, 2.4710962161504162e-8, 19.99996992270855, 5.3905813554
40626, 4.609395726207004, 2.2918149440857156e-5, 7.388749375102192e-12, 4.8
07382287022925e-10, 1.9526509371105965e-10]
[3.500098685354161e-12, 99997.01054348784, 5.5974033266265916e-12, 5.97889
8726815079, 9.028344871603852e-12, 6.270125191556455e-10, 4.609942063129705
, 7.133582562203706e-6, 2.4711015781998846e-8, 19.99996992270987, 5.3905914
99151794, 4.609385582496578, 2.2918148735960332e-5, 7.388748013947487e-12,
5.070824411865289e-10, 1.9526395759125532e-10]
[3.5001041627876112e-12, 99996.85405462037, 5.597412070560911e-12, 6.29187
6461710598, 9.028358149038246e-12, 6.270098775287304e-10, 4.609961050353303
, 7.133581889513791e-6, 2.4711069880020696e-8, 19.999969922711198, 5.390601
733139812, 4.609375348509258, 2.291814802486121e-5, 7.388746641144655e-12,
5.336506133281341e-10, 1.9526281149672742e-10]
[3.500106701349823e-12, 99996.78152871577, 5.597416123008599e-12, 6.436928
270871345, 9.028364302489354e-12, 6.2700865288998e-10, 4.609969852758991, 7
.1335815776823225e-6, 2.4711094959688186e-8, 19.999969922711816, 5.39060647
7562884, 4.6093706040865206, 2.291814769522478e-5, 7.388746004886005e-12, 5
.459637516310586e-10, 1.9526228022173735e-10]abstols = 1.0 ./ 10.0 .^ (7:13)
reltols = 1.0 ./ 10.0 .^ (4:10)
setups = [
Dict(:alg=>FBDF()),
Dict(:alg=>QNDF()),
Dict(:alg=>NordsieckBDF()),
Dict(:alg=>Rodas4P()),
Dict(:alg=>CVODE_BDF()),
#Dict(:alg=>ddebdf()),
Dict(:alg=>Rodas4()),
Dict(:alg=>Rodas5P()),
#Dict(:alg=>rodas()),
#Dict(:alg=>radau()),
Dict(:alg=>lsoda()),
#Dict(:alg=>ImplicitEulerExtrapolation(min_order = 5, init_order = 3,threading = OrdinaryDiffEqCore.PolyesterThreads())),
Dict(:alg=>ImplicitEulerExtrapolation(min_order = 5, init_order = 3, threading = false)),
#Dict(:alg=>ImplicitEulerBarycentricExtrapolation(min_order = 5, threading = OrdinaryDiffEqCore.PolyesterThreads())),
Dict(:alg=>ImplicitEulerBarycentricExtrapolation(min_order = 5, threading = false))
]
wp = WorkPrecisionSet(oprob, abstols, reltols, setups; verbose = SciMLLogging.None(),
save_everystep = false, appxsol = refsol, maxiters = Int(1e5), numruns = 10)
plot(wp)
With Temperature Dynamics
@variables T(t) = 100.0
D = Differential(t)
# Interpolate T-dependent rates so @reaction does not also treat T as a parameter.
k_H3O_E = ka_reaction(T, 1.1e-7, -1/2)
k_H2O_E_OH = ka_reaction(T, 8.6e-8, -1/2)
k_H2O_E_O = ka_reaction(T, 3.9e-8, -1/2)
k_OH_E = ka_reaction(T, 6.3e-9, -0.48)
k_O_E = ka_reaction(T, 3.4e-12, -0.63)
k_Cp_E = ka_reaction(T, 4.4e-12, -0.61)
k_Cp_OH_CO = ka_reaction(T, 1.15e-10, -0.339)
k_Cp_OH_COp = 9.15e-10 * (0.62 + 0.4767 * 5.5 * sqrt(300 / T))
k_HCO_E = ka_reaction(T, 2.8e-7, -0.69)
k_Hp_E = ka_reaction(T, 3.5e-12, -0.7)
reaction_equations = [
(@reaction 1.6e-9, $O⁺ + $H2 --> $OH⁺ + $H),
(@reaction 1e-9, $OH⁺ + $H2 --> $H2O⁺ + $H),
(@reaction 6.1e-10, $H2O⁺ + $H2 --> $H3O⁺ + $H),
(@reaction $k_H3O_E, $H3O⁺ + $E --> $H2O + $H),
(@reaction $k_H2O_E_OH, $H2O⁺ + $E --> $OH + $H),
(@reaction $k_H2O_E_O, $H2O⁺ + $E --> $O + $H2),
(@reaction $k_OH_E, $OH⁺ + $E --> $O + $H),
(@reaction $k_O_E, $O⁺ + $E --> $O),
(@reaction 2.8 * cosmic_ionisation_rate, $O --> $O⁺ + $E),
(@reaction 2.62 * cosmic_ionisation_rate, $C --> $C⁺ + $E),
(@reaction 5.0 * cosmic_ionisation_rate, $CO --> $C + $O),
(@reaction $k_Cp_E, $C⁺ + $E --> $C),
(@reaction $k_Cp_OH_CO, $C⁺ + $OH --> CO + $H),
(@reaction $k_Cp_OH_COp, $C⁺ + $OH --> $CO⁺ + $H),
(@reaction 4e-10, $CO⁺ + $H --> $CO + $H⁺),
(@reaction 7.28e-10, $CO⁺ + $H2 --> $HCO⁺ + $H),
(@reaction $k_HCO_E, $HCO⁺ + $E --> $CO + $H),
(@reaction $k_Hp_E, $H⁺ + $E --> $H),
(@reaction 2.121e-17 * dust2gas / 1e-2, $H + $H --> $H2),
(@reaction 1e-1 * cosmic_ionisation_rate, $H2 --> $H + $H),
(@reaction 3.39e-10 * radiation_field, $C --> $C⁺ + $E),
(@reaction 2.43e-10 * radiation_field, $CO --> $C + $O),
(@reaction 7.72e-10 * radiation_field, $H2O --> $OH + $H),
(D(T) ~ get_heating_cooling(
T, H2, O, C, O⁺, OH⁺, H, H2O⁺, H3O⁺, E, H2O, OH, C⁺, CO, CO⁺, H⁺, HCO⁺, dust2gas))
]
@named system = ReactionSystem(reaction_equations, t)
u0 = [:H2 => number_density, :O => number_density*2e-4, :C => number_density*1e-4,
:O⁺=>minimum_fractional_density, :OH⁺=>minimum_fractional_density,
:H => minimum_fractional_density, :H2O⁺ => minimum_fractional_density,
:H3O⁺=>minimum_fractional_density, :E=>minimum_fractional_density,
:H2O=>minimum_fractional_density, :OH=>minimum_fractional_density,
:C⁺=>minimum_fractional_density, :CO=>minimum_fractional_density,
:CO⁺=>minimum_fractional_density, :H⁺=>minimum_fractional_density,
:HCO⁺ => minimum_fractional_density, :T => 100.0]
tspan = (0.0, 1e6*seconds_per_year)
params = [dust2gas => 0.01, radiation_field => 1e-1, cosmic_ionisation_rate => 1e-17]
println("Attempting to solve the ODE...")
sys = ode_model(complete(system))
# oprob = ODEProblemExpr(sys, [], tspan, params)
ssys = structural_simplify(sys)
oprob = ODEProblem(ssys, merge(Dict{Any, Any}(u0), Dict{Any, Any}(params)), tspan)
println("ODEProblem created successfully.")
refsol = solve(oprob, Rodas5P(), abstol = 1e-14, reltol = 1e-14)Attempting to solve the ODE...
ODEProblem created successfully.
retcode: Success
Interpolation: specialized 4th (Rodas6P = 5th) order "free" stiffness-aware
interpolation
t: 11443-element Vector{Float64}:
0.0
0.03306297961107439
0.12617696833110145
1.057316855531372
6.261684286437627
27.12310916585646
92.49675787026007
261.8080467303634
637.9018095644433
1380.0703865287887
⋮
3.1504248482970582e13
3.1508305215753473e13
3.151239691045535e13
3.151648860515723e13
3.152058029985911e13
3.152467199456099e13
3.1528763689262867e13
3.1532855383964746e13
3.1536e13
u: 11443-element Vector{Vector{Float64}}:
[1.0e-25, 100000.0, 1.0e-25, 1.0e-25, 1.0e-25, 1.0e-25, 1.0e-25, 1.0e-25,
1.0e-25, 20.0, 10.0, 1.0e-25, 1.0e-25, 1.0e-25, 1.0e-25, 1.0e-25, 100.0]
[1.851521970869167e-17, 100000.0, 4.907345567696514e-23, 6.612595971288364
e-15, 1.000541025692682e-25, 1.0000020171151974e-25, 1.1208377265917242e-11
, 9.999999999974476e-26, 1.0000000000025525e-25, 20.0, 9.999999999988791, 1
.1208358750648657e-11, 9.999999999991965e-26, 9.999975930179811e-26, 1.0e-2
5, 1.000002406982019e-25, 100.00000003481105]
[7.065838912610987e-17, 100000.0, 7.133363059488423e-22, 2.523539437956254
3e-14, 1.0300029434488716e-25, 1.0000077545362807e-25, 4.2774095981620296e-
11, 9.999999999902593e-26, 1.0000000000097408e-25, 20.0, 9.999999999957225,
4.277402532251784e-11, 9.999999999969339e-26, 9.999908143588938e-26, 1.0e-
25, 1.0000091856411062e-25, 100.00000013284807]
[5.920473592534176e-16, 100000.0, 5.007827915430398e-20, 2.114634211880853
1e-13, 1.864966194504059e-24, 1.0003490864197849e-25, 3.5843128313317186e-1
0, 9.999999999183754e-26, 1.0000000000816249e-25, 19.999999999999996, 9.999
999999641568, 3.5843069103572943e-10, 9.999999999743072e-26, 9.999230302952
371e-26, 1.0e-25, 1.0000769697047627e-25, 100.00000111321835]
[3.5047872376525073e-15, 100000.0, 1.75559646977386e-18, 1.252338613616998
3e-12, 3.6654775145865423e-22, 1.3503406241598935e-25, 2.1227161199815662e-
9, 9.999999995165996e-26, 1.0000000004848539e-25, 19.999999999999993, 9.999
999997877286, 2.122712613438354e-9, 9.999999998478448e-26, 9.99544253268053
6e-26, 1.0e-25, 1.0004557467319423e-25, 100.00000659274633]
[1.515603105211205e-14, 99999.99999999999, 3.2880336262561937e-17, 5.42465
4773009296e-12, 2.9732501359388754e-20, 1.2403656421266851e-23, 9.194756298
19387e-9, 9.999999979071044e-26, 1.0000000043036972e-25, 19.999999999999982
, 9.999999990805255, 9.194741109252858e-9, 9.999999993409817e-26, 9.9802738
58184886e-26, 1.0e-25, 1.0019726141814371e-25, 100.0000285571374]
[5.141677514901082e-14, 99999.99999999997, 3.8023455865732993e-16, 1.84997
34159667694e-11, 1.1730428539496879e-18, 1.6572239120191287e-21, 3.13564769
0119196e-8, 9.999999943962854e-26, 1.0000010219333931e-25, 19.9999999999999
4, 9.99999996864357, 3.135642510300773e-8, 9.999999977531948e-26, 9.9328885
70124022e-26, 1.0e-25, 1.006711142986734e-25, 100.00009738716193]
[1.4358419130298245e-13, 99999.99999999994, 3.0019679965250954e-15, 5.2364
6641130216e-11, 2.6241657088870724e-17, 1.052128076226066e-19, 8.8753142653
9529e-8, 1.0000007606320548e-25, 1.0001823004442765e-25, 19.999999999999844
, 9.999999911246999, 8.875299604144766e-8, 9.999999936450832e-26, 9.8112086
03806373e-26, 1.0e-25, 1.0188791396123873e-25, 100.00027565012263]
[3.39599756337528e-13, 99999.99999999991, 1.725329949524435e-14, 1.2759836
274745423e-10, 3.683375016676652e-16, 3.6200220378694835e-18, 2.16249235459
45608e-7, 1.0001597350361576e-25, 1.0152653710177612e-25, 19.99999999999963
4, 9.999999783751116, 2.1624887823444366e-7, 9.999999845414343e-26, 9.54622
5504713191e-26, 9.999999999999996e-26, 1.045377449486539e-25, 100.000671628
37175]
[6.934619681491842e-13, 99999.99999999985, 7.578584953696604e-14, 2.760971
220030451e-10, 3.5159485634072655e-15, 7.565020671723035e-17, 4.67844984507
2105e-7, 1.0157196001561606e-25, 1.6887795642296987e-25, 19.999999999999222
, 9.999999532155783, 4.678442116677915e-7, 9.999999666696365e-26, 9.0441303
65143869e-26, 9.999999999999977e-26, 1.095586963282079e-25, 100.00145303620
957]
⋮
[3.5001071335816346e-12, 99996.78419812382, 5.599316445728371e-12, 6.43158
9268142687, 9.136069385417852e-12, 2.1987562538415533e-9, 8.15410885637787,
7.218684901401538e-6, 5.299018538366613e-8, 19.999969716852767, 1.84631105
32348892, 8.15366593751001, 2.3007899292304617e-5, 7.390103259012662e-12, 3
.888266760510342e-9, 1.3479549795831586e-9, 3757.1910510206253]
[3.5001071480301676e-12, 99996.78378526038, 5.599316454348794e-12, 6.43241
4995043451, 9.136068633719348e-12, 2.1987168580347038e-9, 8.15407477736374,
7.218684277367957e-6, 5.2989765054886744e-8, 19.99996971685455, 1.84634521
78135642, 8.153631772932028, 2.300789863046597e-5, 7.390102223968614e-12, 3
.888664881060739e-9, 1.3479194759649278e-9, 3757.0256597987177]
[3.5001071626032062e-12, 99996.78336883923, 5.5993164630454735e-12, 6.4332
47837330915, 9.136067875650104e-12, 2.1986771294928224e-9, 8.15404040940097
9, 7.218683648041424e-6, 5.2989341167557866e-8, 19.99996971685635, 1.846379
6720785255, 8.153597318667765, 2.3007897963014084e-5, 7.390101180188535e-12
, 3.889066423613894e-9, 1.3478836727536955e-9, 3756.858875480283]
[3.5001071771762287e-12, 99996.78295241854, 5.599316471744125e-12, 6.43408
0678683837, 9.136067117688874e-12, 2.198637407765606e-9, 8.15400604620997,
7.218683018800355e-6, 5.298891734443134e-8, 19.999969716858143, 1.846414121
5719792, 8.153562869175015, 2.3007897295653207e-5, 7.390100136593416e-12, 3
.8894679570314095e-9, 1.3478478759536751e-9, 3756.6921235749874]
[3.500107191749234e-12, 99996.78253599833, 5.5993164804447435e-12, 6.43491
3519102097, 9.136066359835621e-12, 2.1985976928509322e-9, 8.153971687789387
, 7.21868238964473e-6, 5.298849358548873e-8, 19.999969716859937, 1.84644856
62952526, 8.153528424452444, 2.300789662838331e-5, 7.39009909318319e-12, 3.
889869481314561e-9, 1.3478120855628162e-9, 3756.525404071954]
[3.5001072063222243e-12, 99996.78211957858, 5.599316489147335e-12, 6.43574
6358585577, 9.136065602090323e-12, 2.1985579847466515e-9, 8.153937334137899
, 7.218681760574521e-6, 5.298806989071125e-8, 19.999969716861727, 1.8464830
062496718, 8.153493984498729, 2.3007895961204376e-5, 7.390098049957817e-12,
3.89027099646462e-9, 1.3477763015790486e-9, 3756.358716960206]
[3.500107220895197e-12, 99996.78170315931, 5.599316497851892e-12, 6.436579
197134155, 9.136064844452945e-12, 2.198518283450634e-9, 8.153902985254186,
7.2186811315897055e-6, 5.298764626008021e-8, 19.999969716863518, 1.84651744
14365615, 8.153459549312544, 2.3007895294116375e-5, 7.390097006917215e-12,
3.890672502482865e-9, 1.3477405240003151e-9, 3756.192062228849]
[3.5001072354681554e-12, 99996.7812867405, 5.599316506558421e-12, 6.437412
034747715, 9.136064086923463e-12, 2.1984785889607106e-9, 8.15386864113692,
7.218680502690257e-6, 5.2987222693576585e-8, 19.99996971686531, 1.846551871
8572471, 8.153425118892564, 2.3007894627119278e-5, 7.390095964061345e-12, 3
.891073999370569e-9, 1.3477047528245276e-9, 3756.0254398668376]
[3.5001072466679922e-12, 99996.78096670784, 5.599316513251044e-12, 6.43805
2100076359, 9.136063504807844e-12, 2.1984480869271075e-9, 8.153842249673444
, 7.218680019416185e-6, 5.2986897210898935e-8, 19.999969716866687, 1.846578
3296482037, 8.153398661102148, 2.300789411456954e-5, 7.39009516271422e-12,
3.891382558111454e-9, 1.3476772657264428e-9, 3755.897406519221]refsol = solve(oprob, Rodas5P(), abstol = 1e-13, reltol = 1e-13)
# Run Benchmark
abstols = 1.0 ./ 10.0 .^ (9:10)
reltols = 1.0 ./ 10.0 .^ (9:10)
setups = [
Dict(:alg=>FBDF()),
Dict(:alg=>QNDF()),
Dict(:alg=>NordsieckBDF()),
Dict(:alg=>CVODE_BDF()),
#Dict(:alg=>ddebdf()),
Dict(:alg=>Rodas5P()),
Dict(:alg=>KenCarp4()),
Dict(:alg=>KenCarp47()),
#Dict(:alg=>RadauIIA9()),
#Dict(:alg=>rodas()),
#Dict(:alg=>radau()),
Dict(:alg=>lsoda())
#Dict(:alg=>ImplicitEulerExtrapolation(min_order = 5, init_order = 3,threading = OrdinaryDiffEqCore.PolyesterThreads())),
#Dict(:alg=>ImplicitEulerExtrapolation(min_order = 5, init_order = 3,threading = false)),
#Dict(:alg=>ImplicitEulerBarycentricExtrapolation(min_order = 5, threading = OrdinaryDiffEqCore.PolyesterThreads())),
#Dict(:alg=>ImplicitEulerBarycentricExtrapolation(min_order = 5, threading = false)),
]
wp = WorkPrecisionSet(oprob, abstols, reltols, setups; verbose = SciMLLogging.None(),
save_everystep = false, appxsol = refsol, maxiters = Int(1e5), numruns = 10,
print_names = true)
plot(wp)FBDF
QNDF
NordsieckBDF
CVODE_BDF
Rodas5P
KenCarp4
KenCarp47
lsoda
Appendix
These benchmarks are a part of the SciMLBenchmarks.jl repository, found at: https://github.com/SciML/SciMLBenchmarks.jl. For more information on high-performance scientific machine learning, check out the SciML Open Source Software Organization https://sciml.ai.
To locally run this benchmark, do the following commands:
using SciMLBenchmarks
SciMLBenchmarks.weave_file("benchmarks/AstroChem","astrochem.jmd")Computer Information:
Julia Version 1.12.7
Commit 6d172b025e4 (2026-08-15 08:05 UTC)
Build Info:
Official https://julialang.org release
Platform Info:
OS: Linux (x86_64-linux-gnu)
CPU: 128 × AMD EPYC 7502 32-Core Processor
WORD_SIZE: 64
LLVM: libLLVM-18.1.7 (ORCJIT, znver2)
GC: Built with stock GC
Threads: 128 default, 1 interactive, 128 GC (on 128 virtual cores)
Environment:
JULIA_NUM_THREADS = auto
Package Information:
Status `/julia/github-runners/amdci1-1/_work/SciMLBenchmarks.jl/SciMLBenchmarks.jl/benchmarks/AstroChem/Project.toml`
[6e4b80f9] BenchmarkTools v1.8.0
[479239e8] Catalyst v16.4.3
[f3b72e0c] DiffEqDevTools v3.6.3
[7f56f5a3] LSODA v1.2.0
⌃ [7ed4a6bd] LinearSolve v5.17.3
[77ba4419] NaNMath v1.1.4
[54ca160b] ODEInterface v0.5.2
⌅ [09606e27] ODEInterfaceDiffEq v4.1.0
[1dea7af3] OrdinaryDiffEq v7.8.1
⌃ [6ad6398a] OrdinaryDiffEqBDF v2.4.9
⌃ [bbf590c4] OrdinaryDiffEqCore v4.17.2
[becaefa8] OrdinaryDiffEqExtrapolation v2.6.3
[5960d6e9] OrdinaryDiffEqFIRK v2.8.7
[43230ef6] OrdinaryDiffEqRosenbrock v2.7.3
⌃ [2d112036] OrdinaryDiffEqSDIRK v2.9.3
[91a5bcdd] Plots v1.41.7
[f2c3362d] RecursiveFactorization v0.2.30
[31c91b34] SciMLBenchmarks v0.2.1 [loaded: `/julia/github-runners/amdci1-1/_work/SciMLBenchmarks.jl/SciMLBenchmarks.jl/src/SciMLBenchmarks.jl` (v0.2.1) expected `/home/crackauc/.julia/packages/SciMLBenchmarks/ceJyd/src/SciMLBenchmarks.jl` (v0.2.1)]
[a6db7da4] SciMLLogging v2.1.0
[c3572dad] Sundials v6.7.1
[0c5d862f] Symbolics v7.39.2
Info Packages marked with ⌃ and ⌅ have new versions available. Those with ⌃ may be upgradable, but those with ⌅ are restricted by compatibility constraints from upgrading. To see why use `status --outdated`And the full manifest:
Status `/julia/github-runners/amdci1-1/_work/SciMLBenchmarks.jl/SciMLBenchmarks.jl/benchmarks/AstroChem/Manifest.toml`
[47edcb42] ADTypes v1.24.0
[14f7f29c] AMD v0.5.4
[6e696c72] AbstractPlutoDingetjes v1.4.1
[1520ce14] AbstractTrees v0.4.5
[7d9f7c33] Accessors v0.1.45
[79e6a3ab] Adapt v4.7.0
[66dad0bd] AliasTables v1.1.3
[ec485272] ArnoldiMethod v0.4.0
⌃ [4fba245c] ArrayInterface v7.30.1
[4c555306] ArrayLayouts v1.12.2
[aae01518] BandedMatrices v1.12.0
[6e4b80f9] BenchmarkTools v1.8.0
[e2ed5e7c] Bijections v0.2.2
[b2a6c25c] BinaryHeaps v1.1.0
[caf10ac8] BipartiteGraphs v0.1.14
[62783981] BitTwiddlingConvenienceFunctions v0.1.6
[8e7c35d0] BlockArrays v1.10.0
[70df07ce] BracketingNonlinearSolve v1.12.7
[fa961155] CEnum v0.5.0
[2a0fbf3d] CPUSummary v0.2.7
[479239e8] Catalyst v16.4.3
[fb6a15b2] CloseOpenIntervals v0.1.13
[35d6a980] ColorSchemes v3.31.0
[3da002f7] ColorTypes v0.12.1
[c3611d14] ColorVectorSpace v0.11.0
[5ae59095] Colors v0.13.1
⌅ [861a8166] Combinatorics v1.0.2
[38540f10] CommonSolve v0.2.14
[bbf7d656] CommonSubexpressions v0.3.1
[f70d9fcc] CommonWorldInvalidations v1.2.2
[34da2185] Compat v4.18.1
[b152e2b5] CompositeTypes v0.1.4
[a33af91c] CompositionsBase v0.1.2
[2569d6c7] ConcreteStructs v0.2.8
[187b0558] ConstructionBase v1.6.0
[d38c429a] Contour v0.6.3
[adafc99b] CpuId v0.3.1
[a8cc5b0e] Crayons v4.2.0
[9a962f9c] DataAPI v1.16.0
[864edb3b] DataStructures v0.19.6
[e2d170a0] DataValueInterfaces v1.0.0
[8bb1440f] DelimitedFiles v1.9.1
[2b5f629d] DiffEqBase v7.21.1
[459566f4] DiffEqCallbacks v4.19.4
[f3b72e0c] DiffEqDevTools v3.6.3
[77a26b50] DiffEqNoiseProcess v5.36.3
[163ba53b] DiffResults v1.1.0
[b552c78f] DiffRules v1.16.0
[a0c0ee7d] DifferentiationInterface v0.7.21
[8d63f2c5] DispatchDoctor v0.4.28
[31c24e10] Distributions v0.25.131
[ffbed154] DocStringExtensions v0.9.5
[5b8099bc] DomainSets v0.8.1
[7c1d4256] DynamicPolynomials v0.6.8
[06fc5a27] DynamicQuantities v1.13.0
[4e289a0a] EnumX v1.0.7
[f151be2c] EnzymeCore v0.8.21
[e2ba6199] ExprTools v0.1.11
[55351af7] ExproniconLite v0.10.14
[c87230d0] FFMPEG v0.4.5
[7034ab61] FastBroadcast v1.4.0
[9aa1b823] FastClosures v0.3.2
[442a2c76] FastGaussQuadrature v1.3.0
[a4df4552] FastPower v1.5.0
[1a297f60] FillArrays v1.17.0
[64ca27bc] FindFirstFunctions v3.2.1
[6a86dc24] FiniteDiff v2.33.0
⌅ [53c48c17] FixedPointNumbers v0.8.6
[1fa38f19] Format v1.3.7
[f6369f11] ForwardDiff v1.4.6
[a85aefff] FunctionMaps v0.1.2
[069b7b12] FunctionWrappers v1.1.3
[77dc65aa] FunctionWrappersWrappers v1.13.0
[46192b85] GPUArraysCore v0.2.0
[28b8d3ca] GR v0.73.27
[a0844989] Gamma v1.2.0
[86223c79] Graphs v1.15.0
⌅ [eafb193a] Highlights v0.5.3
[3e5b6fbb] HostCPUFeatures v0.1.18
[34004b35] HypergeometricFunctions v0.3.30
[615f187c] IfElse v0.1.1
[3263718b] ImplicitDiscreteSolve v2.3.0
[d25df0c9] Inflate v0.1.5
[18e54dd8] IntegerMathUtils v0.1.4
[8197267c] IntervalSets v0.7.14
[3587e190] InverseFunctions v0.1.17
[92d709cd] IrrationalConstants v0.2.6
[82899510] IteratorInterfaceExtensions v1.0.0
[1019f520] JLFzf v0.1.11
[692b3bcd] JLLWrappers v1.8.0
⌅ [682c06a0] JSON v0.21.4
[ae98c720] Jieko v0.2.1
⌃ [ccbc3e58] JumpProcesses v9.32.3
[ba0b0d4f] Krylov v0.10.10
[2faa5264] LHLFactorization v2.2.2
[7f56f5a3] LSODA v1.2.0
[b964fa9f] LaTeXStrings v1.4.1
[23fbe1c1] Latexify v0.16.12
[10f19ff3] LayoutPointers v0.1.17
[87fe0de2] LineSearch v0.1.18
⌃ [7ed4a6bd] LinearSolve v5.17.3
[2ab3a3ac] LogExpFunctions v1.0.1
[e6f89c97] LoggingExtras v1.2.0
[bdcacae8] LoopVectorization v0.12.174
[1914dd2f] MacroTools v0.5.16
[d125e4d3] ManualMemory v0.1.8
[bb5d69b7] MaybeInplace v0.1.8
[442fdcdd] Measures v0.3.3
[e1d29d7a] Missings v1.2.0
⌃ [7771a370] ModelingToolkitBase v1.71.1
⌅ [2e0e35c7] Moshi v0.3.9
[46d2c3a1] MuladdMacro v0.2.7
[102ac46a] MultivariatePolynomials v0.5.19
[ffc61752] Mustache v1.0.21
[d8a4904e] MutableArithmetics v1.8.0
[77ba4419] NaNMath v1.1.4
⌃ [8913a72c] NonlinearSolve v4.30.0
⌃ [be0214bd] NonlinearSolveBase v2.49.5
⌃ [5959db7a] NonlinearSolveFirstOrder v2.6.1
[9a2c21bd] NonlinearSolveQuasiNewton v1.15.3
[26075421] NonlinearSolveSpectralMethods v1.8.3
[54ca160b] ODEInterface v0.5.2
⌅ [09606e27] ODEInterfaceDiffEq v4.1.0
[6fe1bfb0] OffsetArrays v1.17.0
⌅ [bac558e1] OrderedCollections v1.8.2 [loaded: v2.0.1]
[1dea7af3] OrdinaryDiffEq v7.8.1
⌃ [6ad6398a] OrdinaryDiffEqBDF v2.4.9
⌃ [bbf590c4] OrdinaryDiffEqCore v4.17.2
[50262376] OrdinaryDiffEqDefault v2.6.2
⌃ [4302a76b] OrdinaryDiffEqDifferentiation v3.11.6
[becaefa8] OrdinaryDiffEqExtrapolation v2.6.3
[5960d6e9] OrdinaryDiffEqFIRK v2.8.7
⌃ [127b3ac7] OrdinaryDiffEqNonlinearSolve v2.9.7
[43230ef6] OrdinaryDiffEqRosenbrock v2.7.3
[b4bd8bb3] OrdinaryDiffEqRosenbrockTableaus v2.4.2
⌃ [2d112036] OrdinaryDiffEqSDIRK v2.9.3
[b1df2697] OrdinaryDiffEqTsit5 v2.1.4
[79d7bb75] OrdinaryDiffEqVerner v2.4.1
[90014a1f] PDMats v0.11.41
⌅ [d96e819e] Parameters v0.12.3
⌅ [69de0a69] Parsers v2.8.8
[ccf2f8ad] PlotThemes v3.3.0
[995b91a9] PlotUtils v1.4.4
[91a5bcdd] Plots v1.41.7
[e409e4f3] PoissonRandom v0.4.13
[f517fe37] Polyester v0.7.19
[1d0040c9] PolyesterWeave v0.2.2
[d236fae5] PreallocationTools v1.7.1
[aea7be01] PrecompileTools v1.3.4
[21216c6a] Preferences v1.6.0
[08abe8d2] PrettyTables v3.4.8
[27ebfcd6] Primes v0.5.7
[43287f4e] PtrArrays v1.4.0
[0c0d3e7f] PureKLU v1.5.0
[1fd47b50] QuadGK v2.11.3
[988b38a3] ReadOnlyArrays v0.2.0
[795d4caa] ReadOnlyDicts v1.0.1
[3cdcf5f2] RecipesBase v1.3.4
[01d81517] RecipesPipeline v0.6.12
[731186ca] RecursiveArrayTools v4.5.1
[f2c3362d] RecursiveFactorization v0.2.30
[189a3867] Reexport v1.2.2
[05181044] RelocatableFolders v1.0.1
[ae029012] Requires v1.3.1
[ae5879a3] ResettableStacks v1.4.0
[9fe22ead] RespecializeParams v1.3.0
[79098fc4] Rmath v0.9.0
[47965b36] RootedTrees v2.27.0
[f2b01f46] Roots v3.0.8
[7e49a35a] RuntimeGeneratedFunctions v0.5.26
[9dfe8606] SCCNonlinearSolve v1.15.3
[94e857df] SIMDTypes v0.1.0
[476501e8] SLEEFPirates v0.6.46
[0bca4576] SciMLBase v3.54.0
[31c91b34] SciMLBenchmarks v0.2.1 [loaded: `/julia/github-runners/amdci1-1/_work/SciMLBenchmarks.jl/SciMLBenchmarks.jl/src/SciMLBenchmarks.jl` (v0.2.1) expected `/home/crackauc/.julia/packages/SciMLBenchmarks/ceJyd/src/SciMLBenchmarks.jl` (v0.2.1)]
[19f34311] SciMLJacobianOperators v0.1.19
[a6db7da4] SciMLLogging v2.1.0
⌃ [c0aeaf25] SciMLOperators v1.30.0
[431bcebd] SciMLPublic v1.3.0
[53ae85a6] SciMLStructures v1.10.5
[6c6a2e73] Scratch v1.3.0
[efcf1570] Setfield v1.1.2
[992d4aef] Showoff v1.1.1
⌃ [727e6d20] SimpleNonlinearSolve v2.14.4
[699a6c99] SimpleTraits v0.9.6
[a2af1166] SortingAlgorithms v1.2.3
[bd59d7e1] SparseBandedMatrices v1.4.0
[a57abbd0] SparseColumnPivotedQR v2.1.8
[0a514795] SparseMatrixColorings v0.4.28
[276daf66] SpecialFunctions v2.9.0
[860ef19b] StableRNGs v1.0.4
[0c0c59c1] StarAlgebras v0.3.0
[aedffcd0] Static v1.4.6
[0d7ed370] StaticArrayInterface v1.10.0
[90137ffa] StaticArrays v1.9.20
[1e83bf80] StaticArraysCore v1.4.4
[10745b16] Statistics v1.11.5
[82ae8749] StatsAPI v1.8.0
[2913bbd2] StatsBase v0.34.13
[4c63d2b9] StatsFuns v2.2.1
[7792a7ef] StrideArraysCore v0.5.9
[69024149] StringEncodings v0.3.7
⌅ [892a3eda] StringManipulation v0.5.0
[09ab397b] StructArrays v0.7.3
[c3572dad] Sundials v6.7.1
[2efcf032] SymbolicIndexingInterface v0.3.55
[19f23fe9] SymbolicLimits v1.2.1
[d1185830] SymbolicUtils v4.46.6
[0c5d862f] Symbolics v7.39.2
[3783bdb8] TableTraits v1.0.1
[bd369af6] Tables v1.14.0
[ed4db957] TaskLocalValues v0.1.3
[62fd8b95] TensorCore v0.1.1
[8ea1fca8] TermInterface v2.0.0
[1c621080] TestItems v1.1.0
[8290d209] ThreadingUtilities v0.5.6
[a759f4b9] TimerOutputs v1.2.1
[d5829a12] TriangularSolve v0.2.6
[410a4b4d] Tricks v0.1.13
[781d530d] TruncatedStacktraces v1.4.0
[3a884ed6] UnPack v1.0.2
[1cfade01] UnicodeFun v0.4.1
[41fe7b60] Unzip v0.2.0
[3d5dd08c] VectorizationBase v0.21.74
[33b4df10] VectorizedRNG v0.2.26
[d30d5f5c] WeakCacheSets v0.1.0
[44d3d7a6] Weave v0.10.12
[ddb6d928] YAML v0.4.16
[6e34b625] Bzip2_jll v1.0.9+0
[83423d85] Cairo_jll v1.18.7+0
[ee1fde0b] Dbus_jll v1.16.2+0
[2702e6a9] EpollShim_jll v0.0.20230411+1
[2e619515] Expat_jll v2.8.4+0
⌅ [b22a6f82] FFMPEG_jll v8.1.2+0
[a3f928ae] Fontconfig_jll v2.17.1+0
[d7e528f0] FreeType2_jll v2.14.3+1
[559328eb] FriBidi_jll v1.0.17+0
[0656b61e] GLFW_jll v3.5.1+0
[d2c73de3] GR_jll v0.73.27+0
⌅ [b0724c58] GettextRuntime_jll v0.22.4+0
[61579ee1] Ghostscript_jll v9.55.1+0
[7746bdde] Glib_jll v2.88.3+0
[3b182d85] Graphite2_jll v1.3.16+0
[2e76f6c2] HarfBuzz_jll v100.14004.0+0
[1d5cc7b8] IntelOpenMP_jll v2025.2.0+0
[aacddb02] JpegTurbo_jll v3.2.0+1
[c1c5ebd0] LAME_jll v3.100.3+0
[88015f11] LERC_jll v4.2.0+0
[1d63c593] LLVMOpenMP_jll v23.1.1+0
[aae0fff6] LSODA_jll v0.1.2+0
⌅ [e9f186c6] Libffi_jll v3.4.7+0
[7e76a0d4] Libglvnd_jll v1.7.1+1
[94ce4f54] Libiconv_jll v1.18.0+0
[4b2f31a3] Libmount_jll v2.42.0+0
[89763e89] Libtiff_jll v4.7.3+0
[38a345b3] Libuuid_jll v2.42.0+0
[856f044c] MKL_jll v2025.2.0+0
[c771fb93] ODEInterface_jll v0.0.2+0
[e7412a2a] Ogg_jll v1.3.6+0
[656ef2d0] OpenBLAS32_jll v0.3.34+0
[efe28fd5] OpenSpecFun_jll v0.5.6+0
[91d4177d] Opus_jll v1.6.1+0
[36c8627f] Pango_jll v1.58.2+0
[30392449] Pixman_jll v0.46.4+0
[c0090381] Qt6Base_jll v6.10.2+2
[629bc702] Qt6Declarative_jll v6.10.2+2
[ce943373] Qt6ShaderTools_jll v6.10.2+1
[6de9746b] Qt6Svg_jll v6.10.2+0
[e99dba38] Qt6Wayland_jll v6.10.2+1
[f50d1b31] Rmath_jll v0.5.2+0
[ca45d3f4] SuiteSparse32_jll v7.12.1+1
[fb77eaff] Sundials_jll v7.5.0+0
[a44049a8] Vulkan_Loader_jll v1.3.243+0
[a2964d1f] Wayland_jll v1.24.0+0
[ffd25f8a] XZ_jll v5.8.4+0
[f67eecfb] Xorg_libICE_jll v1.1.2+0
[c834827a] Xorg_libSM_jll v1.2.6+0
[4f6342f7] Xorg_libX11_jll v1.8.13+0
[0c0b7dd1] Xorg_libXau_jll v1.0.13+0
[935fb764] Xorg_libXcursor_jll v1.2.4+0
[a3789734] Xorg_libXdmcp_jll v1.1.6+0
[1082639a] Xorg_libXext_jll v1.3.8+0
[d091e8ba] Xorg_libXfixes_jll v6.0.2+0
[a51aa0fd] Xorg_libXi_jll v1.8.4+0
[d1454406] Xorg_libXinerama_jll v1.1.7+0
[ec84b674] Xorg_libXrandr_jll v1.5.6+0
[ea2f1a96] Xorg_libXrender_jll v0.9.12+0
[a65dc6b1] Xorg_libpciaccess_jll v0.19.0+0
[c7cfdc94] Xorg_libxcb_jll v1.17.1+0
[cc61e674] Xorg_libxkbfile_jll v1.2.0+0
[e920d4aa] Xorg_xcb_util_cursor_jll v0.1.6+0
[12413925] Xorg_xcb_util_image_jll v0.4.1+0
[2def613f] Xorg_xcb_util_jll v0.4.1+0
[975044d2] Xorg_xcb_util_keysyms_jll v0.4.1+0
[0d47668e] Xorg_xcb_util_renderutil_jll v0.3.10+0
[c22f9ab0] Xorg_xcb_util_wm_jll v0.4.2+0
[35661453] Xorg_xkbcomp_jll v1.4.7+0
[33bec58e] Xorg_xkeyboard_config_jll v2.47.0+2
[c5fb5394] Xorg_xtrans_jll v1.6.0+0
[3161d3a3] Zstd_jll v1.5.7+1
[35ca27e7] eudev_jll v3.2.14+0
⌅ [214eeab7] fzf_jll v0.61.1+0
[a4ae2306] libaom_jll v3.14.1+0
[0ac62f75] libass_jll v0.17.5+0
[1183f4f0] libdecor_jll v0.2.2+0
[8e53e030] libdrm_jll v2.4.134+0
[2db6ffa8] libevdev_jll v1.13.4+0
[f638f0a6] libfdk_aac_jll v2.0.4+0
[36db933b] libinput_jll v1.28.1+0
[b53b4c65] libpng_jll v1.6.58+0
[9a156e7d] libva_jll v2.23.0+0
[f27f6e37] libvorbis_jll v1.3.8+0
[009596ad] mtdev_jll v1.1.7+0
[1317d2d5] oneTBB_jll v2022.3.0+0
⌅ [1270edf5] x264_jll v10164.0.1+0
[dfaa095f] x265_jll v4.1.0+0
[d8fb68d0] xkbcommon_jll v1.13.0+0
[0dad84c5] ArgTools v1.1.2
[56f22d72] Artifacts v1.11.0
[2a0f44e3] Base64 v1.11.0
[ade2ca70] Dates v1.11.0
[8ba89e20] Distributed v1.11.0
[f43a241f] Downloads v1.7.0
[7b1f6079] FileWatching v1.11.0
[9fa8497b] Future v1.11.0
[b77e0a4c] InteractiveUtils v1.11.0
[ac6e5ff7] JuliaSyntaxHighlighting v1.12.0
[4af54fe1] LazyArtifacts v1.11.0
[b27032c2] LibCURL v0.6.4
[76f85450] LibGit2 v1.11.0
[8f399da3] Libdl v1.11.0
[37e2e46d] LinearAlgebra v1.12.0
[56ddb016] Logging v1.11.0
[d6f4376e] Markdown v1.11.0
[a63ad114] Mmap v1.11.0
[ca575930] NetworkOptions v1.3.0
[44cfe95a] Pkg v1.12.1
[de0858da] Printf v1.11.0
[9abbd945] Profile v1.11.0
[3fa0cd96] REPL v1.11.0
[9a3f8284] Random v1.11.0
[ea8e919c] SHA v0.7.0
[9e88b42a] Serialization v1.11.0
[6462fe0b] Sockets v1.11.0
[2f01184e] SparseArrays v1.12.0
[f489334b] StyledStrings v1.11.0
[4607b0f0] SuiteSparse
[fa267f1f] TOML v1.0.3
[a4e569a6] Tar v1.10.0
[8dfed614] Test v1.11.0
[cf7118a7] UUIDs v1.11.0
[4ec0a83e] Unicode v1.11.0
[e66e0078] CompilerSupportLibraries_jll v1.3.1+2
[deac9b47] LibCURL_jll v8.15.0+0
[e37daf67] LibGit2_jll v1.9.0+0
[29816b5a] LibSSH2_jll v1.11.3+1
[14a3606d] MozillaCACerts_jll v2025.11.4
[4536629a] OpenBLAS_jll v0.3.29+0
[05823500] OpenLibm_jll v0.8.7+0
[458c3c95] OpenSSL_jll v3.5.6+0
[efcefdf7] PCRE2_jll v10.44.0+1
[bea87d4a] SuiteSparse_jll v7.8.3+2
[83775a58] Zlib_jll v1.3.1+2
[8e850b90] libblastrampoline_jll v5.15.0+0
[8e850ede] nghttp2_jll v1.64.0+1
[3f19e933] p7zip_jll v17.7.0+0
Info Packages marked with ⌃ and ⌅ have new versions available. Those with ⌃ may be upgradable, but those with ⌅ are restricted by compatibility constraints from upgrading. To see why use `status --outdated -m`