diff --git a/.gitignore b/.gitignore index b4b4978..c74b015 100644 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,5 @@ ghost-upload/target/ posts/*/\.jupyter_cache/ /.quarto/* !/.quarto/_freeze/ -!/.quarto/_freeze/* \ No newline at end of file +!/.quarto/_freeze/* +/.quarto/ diff --git a/.quarto/_freeze/posts/2024-09-25-moon-cannon-prelude/index/execute-results/html.json b/.quarto/_freeze/posts/2024-09-25-moon-cannon-prelude/index/execute-results/html.json index 140a6ce..6f76a25 100644 --- a/.quarto/_freeze/posts/2024-09-25-moon-cannon-prelude/index/execute-results/html.json +++ b/.quarto/_freeze/posts/2024-09-25-moon-cannon-prelude/index/execute-results/html.json @@ -1,8 +1,8 @@ { - "hash": "c3001131c385cdd6fdfc61bba979570e", + "hash": "4df261e0210af68101da963102246f78", "result": { "engine": "jupyter", - "markdown": "---\ntitle: \"Moon Cannon: Prelude\"\ndescription: |\n Can you shoot Earth from the Moon? Simulate lunar ballistic launches with Julia. Explore orbital mechanics, gravity, and drag in a simplified Moon-to-Earth cannon model.\ndate: 2024-09-25\ncategories:\n - Julia\n - Astrodynamics\n - Code\n - Aerospace\n - Space\n - Math\ndraft: false\nfreeze: auto\nimage: moon_spirograph.png\n---\n\n\n:::{.callout-caution}\n## Important Note\n\nThis post ended up being more elementary than I initially thought it would be, but the last post on this blog was from 2 years ago so I'm going to send it. Getting to a satisfying MVP for this project was a larger undertaking than I thought, so I'm shipping from a less satisfying place.\n\nTreat this blog as a soft introduction to using the Julia `DifferentialEquations` package, and hopefully in a follow on I'll get deeper into simulating space mechanics like I originally planned. \n:::\n\n# Moon Cannon: Can You Shoot Earth from the Moon?\n\nWith technological advancements and decreasing launch costs, establishing permanent manufacturing and production facilities in Low Earth Orbit and on the lunar surface is becoming inevitable. As we move closer to this reality, innovative methods for transporting cargo between the Moon and Earth are worth exploring. One such method of transportation, though it may sound far-fetched, is launching a payload from the Moon to Earth using a cannon. The low gravity and lack of atmosphere on the Moon present a unique environment that enables this possiblity. The cannon is really a mathematical simplification, there are real solutions like a [Railgun](https://en.wikipedia.org/wiki/Railgun) or [SpinLaunch](https://en.wikipedia.org/wiki/SpinLaunch) are realistic way to impart a massive, instantaneous, initial velocity to something without any sort of combustive propulsion. \n\n### Setting Up the Problem\n\nWe’ll be using Julia to simulate the trajectory of a payload shot from the Moon towards Earth. I'll explain the math and code we are setting up after the environment is setup. Here are the packages we need:\n\n::: {#ca194f98 .cell code-annotations='hover' execution_count=1}\n``` {.julia .cell-code code-summary=\"Imports\"}\nusing DifferentialEquations\nusing LinearAlgebra\nusing Plots\nplotlyjs() # <1>\n```\n:::\n\n\n1. To get pretty, interactive plots\n\nHere are some fundamental constants we'll use throughout the simulation:\n\n::: {#5cec579e .cell execution_count=2}\n``` {.julia .cell-code}\nconst G = 6.67430e-11 # Gravitational constant (m³/kg·s²)\nconst M_Earth = 5.97e24 # Mass of Earth (kg)\nconst M_Moon = 7.34767309e22 # Mass of Moon (kg)\nconst R_Earth = 6.371e6 # Radius of Earth (m)\nconst R_Moon = 1.737e6 # Radius of Moon (m)\nconst d_Earth_Moon = 384400e3 # Average distance between Earth and Moon (m)\nconst payload_mass = 1000.0 # Mass of payload (kg)\n```\n:::\n\n\n::: {.column-margin}\nI tried using `Unitful` for tracking the units, but ran into issues and upon searching the Julia forums for an answer I found an open thread explaining why `DifferentialEquations.jl` doesn't play nice with `Unitful` that was opened by ME! It's crazy how I never learn from my mistakes...\n:::\n\n## Differential Equations Setup\n\nThe core of this problem lies in setting up and solving the equations of motion. We'll start with a basic [restricted three-body problem](https://en.wikipedia.org/wiki/Three-body_problem#Restricted_three-body_problem), meaining only accounting for the Moon's and Earth's gravity. This is a **gross** oversimplification for a few reasons. The first being that in this simulation the Moon and the Earth will remain static, introducing their movement is more complicated than I want to cover in this introduction to the problem. The other oversimplification is ignoring the gravitational pull from the Sun and Jupiter, and evenutally maybe the rest of the planets in the solar system. Over the time period of this simulation we could get away with combining these into one static force vector that gets applied every step, but I would rather wait until I can properly build out the simulation. \n\nThe equations of motion are:\n\n$$\n\\begin{aligned}\n\\frac{d\\vec{r}}{dt} &= \\vec{v}, \\\\[10pt]\n\\frac{d\\vec{v}}{dt} &= \\vec{a}_{\\text{Moon}} + \\vec{a}_{\\text{Earth}} + \\vec{a}_{\\text{drag}}.\n\\end{aligned}\n$$\n\nOk so it is a *little* crazy to simulate such a simple environment, and then throw atmospheric drag into the equation. But hear me out, defining success criteria for this kind of problem can be difficult, since a lot of solutions get so close that they should be counted as wins, in this case drag creates a larger target that also accounts for velocity. If our spacecraft gets close enough that drag pulls it to the surface of Earth then we can call the simulation a success. \n\n::: {#5cf59d15 .cell execution_count=3}\n``` {.julia .cell-code}\nconst payload_area = 10.0 # Cross-sectional area of payload (m²)\nconst rho_0 = 1.225 # Sea-level atmospheric density (kg/m³)\nconst H = 7000 # Scale height of atmosphere (m)\nconst Cd = 0.47 # Drag coefficient (dimensionless)\n\nfunction atmospheric_drag(position, velocity)\n\n altitude = norm(position) - R_Earth\n if altitude > 100000\n return [0.0, 0.0]\n end\n\n rho = rho_0 * exp(-altitude / H)\n v_mag = norm(velocity)\n drag_magnitude = 0.5 * rho * v_mag^2 * Cd * payload_area\n drag_force = -drag_magnitude * velocity / v_mag\n\n return drag_force\nend\n```\n:::\n\n\nNext, we define the differential equation function in Julia:\n\n::: {#6e87c071 .cell execution_count=4}\n``` {.julia .cell-code}\nfunction f(du, u, p, t)\n # du: derivative of state vector\n # u: state vector (position and velocity)\n # p: parameters (unused in this function)\n # t: time (unused in this function)\n\n # Extract position and velocity from state vector\n r = u[1:2] # Position vector (x, y)\n v = u[3:4] # Velocity vector (vx, vy)\n\n # Define positions of Moon and Earth\n r_Moon = [0.0, 0.0] # Moon at origin\n r_Earth = [d_Earth_Moon, 0.0] # Earth along x-axis\n\n # Calculate relative positions\n r_rel_Moon = r - r_Moon # Spacecraft position relative to Moon\n r_rel_Earth = r - r_Earth # Spacecraft position relative to Earth\n\n # Calculate gravitational accelerations\n # Using Newton's law of gravitation: F = G * M1 * M2 / r^2\n # Acceleration = Force / Mass = G * M / r^2\n a_Moon = -G * M_Moon * r_rel_Moon / norm(r_rel_Moon)^3\n a_Earth = -G * M_Earth * r_rel_Earth / norm(r_rel_Earth)^3\n\n # Calculate atmospheric drag\n drag_force = atmospheric_drag(r_rel_Earth, v)\n a_drag = drag_force / payload_mass # Convert force to acceleration\n\n # Set up differential equations\n du[1:2] = v # dr/dt = v\n du[3:4] = a_Moon + a_Earth + a_drag # dv/dt = sum of accelerations\nend\n```\n:::\n\n\n::: {.column-margin}\nI tried to comment the code as much as possible to help this make sense to someone who has never seen `DifferentialEquations.jl`. The state vector can be weird at first sight but should be similar to what you see in Matlab. \n:::\n\n### Detecting Collisions\n\n[Julia is pretty fast](https://julialang.org/benchmarks/), but this is at minimum a multiple day simulation so it is important to define end conditions so that we don't go on forever for really bad solutions (we crash back into the Moon) or really great solutions (we nail Earth head on). To handle this we just set callbacks that check our position and see if we are inside of either bodies radius. \n\n::: {#966a6373 .cell execution_count=5}\n``` {.julia .cell-code}\nfunction Earth_collision(u, t, integrator)\n r = u[1:2]\n r_Earth = [d_Earth_Moon, 0.0]\n return norm(r - r_Earth) - R_Earth\nend\n\nfunction Moon_collision(u, t, integrator)\n r = u[1:2]\n r_Moon = [0.0, 0.0]\n return norm(r - r_Moon) - R_Moon\nend\n\nEarth_cb = ContinuousCallback(Earth_collision, terminate!)\nMoon_cb = ContinuousCallback(Moon_collision, terminate!)\ncb = CallbackSet(Earth_cb, Moon_cb)\n```\n:::\n\n\n## Run the Simulation\n\nNow like any good optimistic software engineer, I'm going to assume that I'll get things right first time and not invest any time into a helper function to allow me to quickly iterate on the initial conditions.\n\n::: {#7096a344 .cell code-annotations='below' execution_count=6}\n``` {.julia .cell-code}\nv0 = [1500, 1500] # <1>\nr0 = v0 / norm(v0) * (R_Moon + 10) # <2>\ntspan = (0.0, 10.0 * 24 * 3600) # <3>\nprob = ODEProblem(f, [r0; v0], tspan) # <4>\nsol = solve(prob, Tsit5(), callback=Earth_cb, reltol=1e-8, abstol=1e-8) # <4>\n\nx = [u[1] for u in sol.u] # <5>\ny = [u[2] for u in sol.u] # <5>\n```\n:::\n\n\n1. Guesstimate initial velocity\n2. Make the initial position the same direction as the initial velocity, and 10 meters above the Lunar surface\n3. Guesstimate timespan. 10 days should be more than plenty\n4. Setup the Differential Equation\n5. Grab the x and y positions from the solution. \n\nNow lets plot the results:\n\n::: {#0a123477 .cell execution_count=7}\n``` {.julia .cell-code}\nplot(x, y, aspect_ratio=:equal, label=\"cannonball\", xlabel=\"x (m)\", ylabel=\"y (m)\")\nscatter!([0], [0], label=\"Moon\", markersize=5, color=\"grey\")\nscatter!([d_Earth_Moon], [0], label=\"Earth\", markersize=10, color=\"cornflowerblue\")\n\ntitle!(\"First Simulation!\")\n```\n\n::: {.cell-output .cell-output-display execution_count=8}\n```{=html}\n
\n \n```\n:::\n:::\n\n\nWell we clearly didn't make it far, lets try again without the Earth included in the plot so we can see what happened. (Or you could use plotly to zoom in)\n\n::: {#46685fd6 .cell execution_count=8}\n``` {.julia .cell-code}\nplot(x, y, aspect_ratio=:equal, label=\"cannonball\", xlabel=\"x (m)\", ylabel=\"y (m)\")\nscatter!([0], [0], label=\"Moon\", markersize=5, color=\"grey\")\n\ntitle!(\"First Simulation! (But Zoomed in!)\")\n```\n\n::: {.cell-output .cell-output-display execution_count=9}\n```{=html}\n
\n \n```\n:::\n:::\n\n\nSpirographs are cool, but not really what we are looking for. Lets turn all of this code into a function so that we can iterate on the initial conditions faster. \n\n::: {#a0db329f .cell execution_count=9}\n``` {.julia .cell-code}\nfunction plot_trajectory(v0, title)\n r0 = v0 / norm(v0) * (R_Moon + 10)\n tspan = (0.0, 20.0 * 24 * 3600)\n prob = ODEProblem(f, [r0; v0], tspan)\n sol = solve(prob, Tsit5(), callback=Earth_cb, reltol=1e-8, abstol=1e-8)\n\n x = [u[1] for u in sol.u]\n y = [u[2] for u in sol.u]\n\n flight_time_days = sol.t[end] / (24 * 3600)\n\n final_pos = sol.u[end][1:2]\n r_Earth = [d_Earth_Moon, 0.0]\n\n distance_to_Earth = norm(final_pos - r_Earth) - R_Earth\n\n plot(x, y, aspect_ratio=:equal, label=\"cannonball\", xlabel=\"x (m)\", ylabel=\"y (m)\")\n scatter!([0], [0], label=\"Moon\", markersize=5, color=\"grey\")\n scatter!([d_Earth_Moon], [0], label=\"Earth\", markersize=10, color=\"cornflowerblue\")\n title!(title)\nend\n```\n:::\n\n\nTry the same initial condition to make sure we wrapped everything up correctly:\n\n::: {#46183fc9 .cell execution_count=10}\n``` {.julia .cell-code}\nplot_trajectory([1500, 1500], \"First Simulation, plotted from a function\")\n```\n\n::: {.cell-output .cell-output-display execution_count=11}\n```{=html}\n
\n \n```\n:::\n:::\n\n\nLooks exactly the same. Now what if we go faster:\n\n::: {#9386f6e4 .cell execution_count=11}\n``` {.julia .cell-code}\nplot_trajectory([2000, 2000], \"First Simulation, plotted from a function\")\n```\n\n::: {.cell-output .cell-output-display execution_count=12}\n```{=html}\n
\n \n```\n:::\n:::\n\n\nOk, medium speed?\n\n::: {#ed3fefaf .cell execution_count=12}\n``` {.julia .cell-code}\nplot_trajectory([1700, 1700], \"First Simulation, plotted from a function\")\n```\n\n::: {.cell-output .cell-output-display execution_count=13}\n```{=html}\n
\n \n```\n:::\n:::\n\n\nOn the bright side the simulation passes the smell test for what we expect an orbital simulation to look like. The last attempt seems to be about the right magnitude, but what if we pointed the cannon right at the Earth? \n\n::: {#a3dd7f54 .cell execution_count=13}\n``` {.julia .cell-code}\nplot_trajectory([2400, 0], \"First Simulation, plotted from a function\")\n```\n\n::: {.cell-output .cell-output-display execution_count=14}\n```{=html}\n
\n \n```\n:::\n:::\n\n\nWell this problem is certainly easier than I had originally envisioned. What if I wanted to shoot from the dark side of the Moon.\n\n::: {#644cb44d .cell execution_count=14}\n``` {.julia .cell-code}\nplot_trajectory([-2300, 800], \"First Simulation, plotted from a function\")\n```\n\n::: {.cell-output .cell-output-display execution_count=15}\n```{=html}\n
\n \n```\n:::\n:::\n\n\nAlso super easy... \n\n## Conclusion\n\nSo I think we learned two things here, the Julia Differential Equations library makes getting problems like this going really really easy, and when you make massive oversimplifications for a problem it makes it look really easy. I think from this I have the confidence that I needed to invest time into a far more realistic simulation of the problem. For now this was a great way to dust off my Julia and diff eq part of my brain. \n\n### Next Steps\n\nFrom here I think the next logical step is fully simulating all of the bodies in the solar system. Whether I do that with differential equations like this example, or use something like [Horizons](https://en.wikipedia.org/wiki/JPL_Horizons_On-Line_Ephemeris_System) is an exercise for the next post. I think another cool element of this problem would be giving the cannonball/payload some small amount of thrust it can use to see if it can circularize itself in LEO, but I just really want an excuse to turn this into an optimization problem. There is also the question of sending payloads from the Moon to Mars which opens up a ton of options for different things to optimize for like transfer time or minimum initial velocity by doing something crazy like a Venus flyby. Another cool end condition for this series would be trying to impact a landing site on another planet, but I really don't want to deal with that much aerodynamics so I doubt I'll get that crazy with it. \n\n", + "markdown": "---\ntitle: \"Moon Cannon: Prelude\"\ndescription: |\n Can you shoot Earth from the Moon? Simulate lunar ballistic launches with Julia. Explore orbital mechanics, gravity, and drag in a simplified Moon-to-Earth cannon model.\ndate: 2024-09-25\ncategories:\n - Julia\n - Astrodynamics\n - Code\n - Aerospace\n - Space\n - Math\ndraft: false\nfreeze: true\nimage: moon_spirograph.png\n---\n\n\n:::{.callout-caution}\n## Important Note\n\nThis post ended up being more elementary than I initially thought it would be, but the last post on this blog was from 2 years ago so I'm going to send it. Getting to a satisfying MVP for this project was a larger undertaking than I thought, so I'm shipping from a less satisfying place.\n\nTreat this blog as a soft introduction to using the Julia `DifferentialEquations` package, and hopefully in a follow on I'll get deeper into simulating space mechanics like I originally planned. \n:::\n\n# Moon Cannon: Can You Shoot Earth from the Moon?\n\nWith technological advancements and decreasing launch costs, establishing permanent manufacturing and production facilities in Low Earth Orbit and on the lunar surface is becoming inevitable. As we move closer to this reality, innovative methods for transporting cargo between the Moon and Earth are worth exploring. One such method of transportation, though it may sound far-fetched, is launching a payload from the Moon to Earth using a cannon. The low gravity and lack of atmosphere on the Moon present a unique environment that enables this possiblity. The cannon is really a mathematical simplification, there are real solutions like a [Railgun](https://en.wikipedia.org/wiki/Railgun) or [SpinLaunch](https://en.wikipedia.org/wiki/SpinLaunch) are realistic way to impart a massive, instantaneous, initial velocity to something without any sort of combustive propulsion. \n\n### Setting Up the Problem\n\nWe’ll be using Julia to simulate the trajectory of a payload shot from the Moon towards Earth. I'll explain the math and code we are setting up after the environment is setup. Here are the packages we need:\n\n::: {#f84161e0 .cell code-annotations='hover' execution_count=1}\n``` {.julia .cell-code code-summary=\"Imports\"}\nusing DifferentialEquations\nusing LinearAlgebra\nusing Plots\nplotlyjs() # <1>\n```\n:::\n\n\n1. To get pretty, interactive plots\n\nHere are some fundamental constants we'll use throughout the simulation:\n\n::: {#406078a9 .cell execution_count=2}\n``` {.julia .cell-code}\nconst G = 6.67430e-11 # Gravitational constant (m³/kg·s²)\nconst M_Earth = 5.97e24 # Mass of Earth (kg)\nconst M_Moon = 7.34767309e22 # Mass of Moon (kg)\nconst R_Earth = 6.371e6 # Radius of Earth (m)\nconst R_Moon = 1.737e6 # Radius of Moon (m)\nconst d_Earth_Moon = 384400e3 # Average distance between Earth and Moon (m)\nconst payload_mass = 1000.0 # Mass of payload (kg)\n```\n:::\n\n\n::: {.column-margin}\nI tried using `Unitful` for tracking the units, but ran into issues and upon searching the Julia forums for an answer I found an open thread explaining why `DifferentialEquations.jl` doesn't play nice with `Unitful` that was opened by ME! It's crazy how I never learn from my mistakes...\n:::\n\n## Differential Equations Setup\n\nThe core of this problem lies in setting up and solving the equations of motion. We'll start with a basic [restricted three-body problem](https://en.wikipedia.org/wiki/Three-body_problem#Restricted_three-body_problem), meaining only accounting for the Moon's and Earth's gravity. This is a **gross** oversimplification for a few reasons. The first being that in this simulation the Moon and the Earth will remain static, introducing their movement is more complicated than I want to cover in this introduction to the problem. The other oversimplification is ignoring the gravitational pull from the Sun and Jupiter, and evenutally maybe the rest of the planets in the solar system. Over the time period of this simulation we could get away with combining these into one static force vector that gets applied every step, but I would rather wait until I can properly build out the simulation. \n\nThe equations of motion are:\n\n$$\n\\begin{aligned}\n\\frac{d\\vec{r}}{dt} &= \\vec{v}, \\\\[10pt]\n\\frac{d\\vec{v}}{dt} &= \\vec{a}_{\\text{Moon}} + \\vec{a}_{\\text{Earth}} + \\vec{a}_{\\text{drag}}.\n\\end{aligned}\n$$\n\nOk so it is a *little* crazy to simulate such a simple environment, and then throw atmospheric drag into the equation. But hear me out, defining success criteria for this kind of problem can be difficult, since a lot of solutions get so close that they should be counted as wins, in this case drag creates a larger target that also accounts for velocity. If our spacecraft gets close enough that drag pulls it to the surface of Earth then we can call the simulation a success. \n\n::: {#e68e8e37 .cell execution_count=3}\n``` {.julia .cell-code}\nconst payload_area = 10.0 # Cross-sectional area of payload (m²)\nconst rho_0 = 1.225 # Sea-level atmospheric density (kg/m³)\nconst H = 7000 # Scale height of atmosphere (m)\nconst Cd = 0.47 # Drag coefficient (dimensionless)\n\nfunction atmospheric_drag(position, velocity)\n\n altitude = norm(position) - R_Earth\n if altitude >= 100000\n return [0.0, 0.0]\n end\n\n rho = rho_0 * exp(-altitude / H)\n v_mag = norm(velocity)\n drag_magnitude = 0.5 * rho * v_mag^2 * Cd * payload_area\n drag_force = -drag_magnitude * velocity / v_mag\n\n return drag_force\nend\n```\n:::\n\n\nNext, we define the differential equation function in Julia:\n\n::: {#fb245874 .cell execution_count=4}\n``` {.julia .cell-code}\nfunction f(du, u, p, t)\n # du: derivative of state vector\n # u: state vector (position and velocity)\n # p: parameters (unused in this function)\n # t: time (unused in this function)\n\n # Extract position and velocity from state vector\n r = u[1:2] # Position vector (x, y)\n v = u[3:4] # Velocity vector (vx, vy)\n\n # Define positions of Moon and Earth\n r_Moon = [0.0, 0.0] # Moon at origin\n r_Earth = [d_Earth_Moon, 0.0] # Earth along x-axis\n\n # Calculate relative positions\n r_rel_Moon = r - r_Moon # Spacecraft position relative to Moon\n r_rel_Earth = r - r_Earth # Spacecraft position relative to Earth\n\n # Calculate gravitational accelerations\n # Using Newton's law of gravitation: F = G * M1 * M2 / r^2\n # Acceleration = Force / Mass = G * M / r^2\n a_Moon = -G * M_Moon * r_rel_Moon / norm(r_rel_Moon)^3\n a_Earth = -G * M_Earth * r_rel_Earth / norm(r_rel_Earth)^3\n\n # Calculate atmospheric drag\n drag_force = atmospheric_drag(r_rel_Earth, v)\n a_drag = drag_force / payload_mass # Convert force to acceleration\n\n # Set up differential equations\n du[1:2] = v # dr/dt = v\n du[3:4] = a_Moon + a_Earth + a_drag # dv/dt = sum of accelerations\nend\n```\n:::\n\n\n::: {.column-margin}\nI tried to comment the code as much as possible to help this make sense to someone who has never seen `DifferentialEquations.jl`. The state vector can be weird at first sight but should be similar to what you see in Matlab. \n:::\n\n### Detecting Collisions\n\n[Julia is pretty fast](https://julialang.org/benchmarks/), but this is at minimum a multiple day simulation so it is important to define end conditions so that we don't go on forever for really bad solutions (we crash back into the Moon) or really great solutions (we nail Earth head on). To handle this we just set callbacks that check our position and see if we are inside of either bodies radius. \n\n::: {#fd031deb .cell execution_count=5}\n``` {.julia .cell-code}\nfunction Earth_collision(u, t, integrator)\n r = u[1:2]\n r_Earth = [d_Earth_Moon, 0.0]\n return norm(r - r_Earth) - R_Earth\nend\n\nfunction Moon_collision(u, t, integrator)\n r = u[1:2]\n r_Moon = [0.0, 0.0]\n return norm(r - r_Moon) - R_Moon\nend\n\nEarth_cb = ContinuousCallback(Earth_collision, terminate!)\nMoon_cb = ContinuousCallback(Moon_collision, terminate!)\ncb = CallbackSet(Earth_cb, Moon_cb)\n```\n:::\n\n\n## Run the Simulation\n\nNow like any good optimistic software engineer, I'm going to assume that I'll get things right first time and not invest any time into a helper function to allow me to quickly iterate on the initial conditions.\n\n::: {#0de4c7d1 .cell code-annotations='below' execution_count=6}\n``` {.julia .cell-code}\nv0 = [1500, 1500] # <1>\nr0 = v0 / norm(v0) * (R_Moon + 10) # <2>\ntspan = (0.0, 10.0 * 24 * 3600) # <3>\nprob = ODEProblem(f, [r0; v0], tspan) # <4>\nsol = solve(prob, Tsit5(), callback=Earth_cb, reltol=1e-8, abstol=1e-8) # <4>\n\nx = [u[1] for u in sol.u] # <5>\ny = [u[2] for u in sol.u] # <5>\n```\n:::\n\n\n1. Guesstimate initial velocity\n2. Make the initial position the same direction as the initial velocity, and 10 meters above the Lunar surface\n3. Guesstimate timespan. 10 days should be more than plenty\n4. Setup the Differential Equation\n5. Grab the x and y positions from the solution. \n\nNow lets plot the results:\n\n::: {#89bd1b53 .cell execution_count=7}\n``` {.julia .cell-code}\nplot(x, y, aspect_ratio=:equal, label=\"cannonball\", xlabel=\"x (m)\", ylabel=\"y (m)\")\nscatter!([0], [0], label=\"Moon\", markersize=5, color=\"grey\")\nscatter!([d_Earth_Moon], [0], label=\"Earth\", markersize=10, color=\"cornflowerblue\")\n\ntitle!(\"First Simulation!\")\n```\n\n::: {.cell-output .cell-output-display execution_count=8}\n```{=html}\n
\n \n```\n:::\n:::\n\n\nWell we clearly didn't make it far, lets try again without the Earth included in the plot so we can see what happened. (Or you could use plotly to zoom in)\n\n::: {#46dc7d61 .cell execution_count=8}\n``` {.julia .cell-code}\nplot(x, y, aspect_ratio=:equal, label=\"cannonball\", xlabel=\"x (m)\", ylabel=\"y (m)\")\nscatter!([0], [0], label=\"Moon\", markersize=5, color=\"grey\")\n\ntitle!(\"First Simulation! (But Zoomed in!)\")\n```\n\n::: {.cell-output .cell-output-display execution_count=9}\n```{=html}\n
\n \n```\n:::\n:::\n\n\nSpirographs are cool, but not really what we are looking for. Lets turn all of this code into a function so that we can iterate on the initial conditions faster. \n\n::: {#124d007a .cell execution_count=9}\n``` {.julia .cell-code}\nfunction plot_trajectory(v0, title)\n r0 = v0 / norm(v0) * (R_Moon + 10)\n tspan = (0.0, 20.0 * 24 * 3600)\n prob = ODEProblem(f, [r0; v0], tspan)\n sol = solve(prob, Tsit5(), callback=Earth_cb, reltol=1e-8, abstol=1e-8)\n\n x = [u[1] for u in sol.u]\n y = [u[2] for u in sol.u]\n\n flight_time_days = sol.t[end] / (24 * 3600)\n\n final_pos = sol.u[end][1:2]\n r_Earth = [d_Earth_Moon, 0.0]\n\n distance_to_Earth = norm(final_pos - r_Earth) - R_Earth\n\n plot(x, y, aspect_ratio=:equal, label=\"cannonball\", xlabel=\"x (m)\", ylabel=\"y (m)\")\n scatter!([0], [0], label=\"Moon\", markersize=5, color=\"grey\")\n scatter!([d_Earth_Moon], [0], label=\"Earth\", markersize=10, color=\"cornflowerblue\")\n title!(title)\nend\n```\n:::\n\n\nTry the same initial condition to make sure we wrapped everything up correctly:\n\n::: {#b14b2546 .cell execution_count=10}\n``` {.julia .cell-code}\nplot_trajectory([1500, 1500], \"First Simulation, plotted from a function\")\n```\n\n::: {.cell-output .cell-output-display execution_count=11}\n```{=html}\n
\n \n```\n:::\n:::\n\n\nLooks exactly the same. Now what if we go faster:\n\n::: {#1fc02da5 .cell execution_count=11}\n``` {.julia .cell-code}\nplot_trajectory([2000, 2000], \"First Simulation, plotted from a function\")\n```\n\n::: {.cell-output .cell-output-display execution_count=12}\n```{=html}\n
\n \n```\n:::\n:::\n\n\nOk, medium speed?\n\n::: {#baa00fe3 .cell execution_count=12}\n``` {.julia .cell-code}\nplot_trajectory([1700, 1700], \"First Simulation, plotted from a function\")\n```\n\n::: {.cell-output .cell-output-display execution_count=13}\n```{=html}\n
\n \n```\n:::\n:::\n\n\nOn the bright side the simulation passes the smell test for what we expect an orbital simulation to look like. The last attempt seems to be about the right magnitude, but what if we pointed the cannon right at the Earth? \n\n::: {#c1ddb100 .cell execution_count=13}\n``` {.julia .cell-code}\nplot_trajectory([2400, 0], \"First Simulation, plotted from a function\")\n```\n\n::: {.cell-output .cell-output-display execution_count=14}\n```{=html}\n
\n \n```\n:::\n:::\n\n\nWell this problem is certainly easier than I had originally envisioned. What if I wanted to shoot from the dark side of the Moon.\n\n::: {#345952f2 .cell execution_count=14}\n``` {.julia .cell-code}\nplot_trajectory([-2300, 800], \"First Simulation, plotted from a function\")\n```\n\n::: {.cell-output .cell-output-display execution_count=15}\n```{=html}\n
\n \n```\n:::\n:::\n\n\nAlso super easy... \n\n## Conclusion\n\nSo I think we learned two things here, the Julia Differential Equations library makes getting problems like this going really really easy, and when you make massive oversimplifications for a problem it makes it look really easy. I think from this I have the confidence that I needed to invest time into a far more realistic simulation of the problem. For now this was a great way to dust off my Julia and diff eq part of my brain. \n\n### Next Steps\n\nFrom here I think the next logical step is fully simulating all of the bodies in the solar system. Whether I do that with differential equations like this example, or use something like [Horizons](https://en.wikipedia.org/wiki/JPL_Horizons_On-Line_Ephemeris_System) is an exercise for the next post. I think another cool element of this problem would be giving the cannonball/payload some small amount of thrust it can use to see if it can circularize itself in LEO, but I just really want an excuse to turn this into an optimization problem. There is also the question of sending payloads from the Moon to Mars which opens up a ton of options for different things to optimize for like transfer time or minimum initial velocity by doing something crazy like a Venus flyby. Another cool end condition for this series would be trying to impact a landing site on another planet, but I really don't want to deal with that much aerodynamics so I doubt I'll get that crazy with it. \n\n", "supporting": [ "index_files" ], diff --git a/.quarto/_freeze/site_libs/quarto-listing/list.min.js b/.quarto/_freeze/site_libs/quarto-listing/list.min.js index 511346f..43dfd15 100644 --- a/.quarto/_freeze/site_libs/quarto-listing/list.min.js +++ b/.quarto/_freeze/site_libs/quarto-listing/list.min.js @@ -1,2 +1,2 @@ -var List;List=function(){var t={"./src/add-async.js":function(t){t.exports=function(t){return function e(r,n,s){var i=r.splice(0,50);s=(s=s||[]).concat(t.add(i)),r.length>0?setTimeout((function(){e(r,n,s)}),1):(t.update(),n(s))}}},"./src/filter.js":function(t){t.exports=function(t){return t.handlers.filterStart=t.handlers.filterStart||[],t.handlers.filterComplete=t.handlers.filterComplete||[],function(e){if(t.trigger("filterStart"),t.i=1,t.reset.filter(),void 0===e)t.filtered=!1;else{t.filtered=!0;for(var r=t.items,n=0,s=r.length;nv.page,a=new g(t[s],void 0,n),v.items.push(a),r.push(a)}return v.update(),r}m(t.slice(0),e)}},this.show=function(t,e){return this.i=t,this.page=e,v.update(),v},this.remove=function(t,e,r){for(var n=0,s=0,i=v.items.length;s-1&&r.splice(n,1),v},this.trigger=function(t){for(var e=v.handlers[t].length;e--;)v.handlers[t][e](v);return v},this.reset={filter:function(){for(var t=v.items,e=t.length;e--;)t[e].filtered=!1;return v},search:function(){for(var t=v.items,e=t.length;e--;)t[e].found=!1;return v}},this.update=function(){var t=v.items,e=t.length;v.visibleItems=[],v.matchingItems=[],v.templater.clear();for(var r=0;r=v.i&&v.visibleItems.lengthe},innerWindow:function(t,e,r){return t>=e-r&&t<=e+r},dotted:function(t,e,r,n,s,i,a){return this.dottedLeft(t,e,r,n,s,i)||this.dottedRight(t,e,r,n,s,i,a)},dottedLeft:function(t,e,r,n,s,i){return e==r+1&&!this.innerWindow(e,s,i)&&!this.right(e,n)},dottedRight:function(t,e,r,n,s,i,a){return!t.items[a-1].values().dotted&&(e==n&&!this.innerWindow(e,s,i)&&!this.right(e,n))}};return function(e){var n=new i(t.listContainer.id,{listClass:e.paginationClass||"pagination",item:e.item||"
  • ",valueNames:["page","dotted"],searchClass:"pagination-search-that-is-not-supposed-to-exist",sortClass:"pagination-sort-that-is-not-supposed-to-exist"});s.bind(n.listContainer,"click",(function(e){var r=e.target||e.srcElement,n=t.utils.getAttribute(r,"data-page"),s=t.utils.getAttribute(r,"data-i");s&&t.show((s-1)*n+1,n)})),t.on("updated",(function(){r(n,e)})),r(n,e)}}},"./src/parse.js":function(t,e,r){t.exports=function(t){var e=r("./src/item.js")(t),n=function(r,n){for(var s=0,i=r.length;s0?setTimeout((function(){e(r,s)}),1):(t.update(),t.trigger("parseComplete"))};return t.handlers.parseComplete=t.handlers.parseComplete||[],function(){var e=function(t){for(var e=t.childNodes,r=[],n=0,s=e.length;n]/g.exec(t)){var e=document.createElement("tbody");return e.innerHTML=t,e.firstElementChild}if(-1!==t.indexOf("<")){var r=document.createElement("div");return r.innerHTML=t,r.firstElementChild}}},a=function(e,r,n){var s=void 0,i=function(e){for(var r=0,n=t.valueNames.length;r=1;)t.list.removeChild(t.list.firstChild)},function(){var r;if("function"!=typeof t.item){if(!(r="string"==typeof t.item?-1===t.item.indexOf("<")?document.getElementById(t.item):i(t.item):s()))throw new Error("The list needs to have at least one item on init otherwise you'll have to add a template.");r=n(r,t.valueNames),e=function(){return r.cloneNode(!0)}}else e=function(e){var r=t.item(e);return i(r)}}()};t.exports=function(t){return new e(t)}},"./src/utils/classes.js":function(t,e,r){var n=r("./src/utils/index-of.js"),s=/\s+/;Object.prototype.toString;function i(t){if(!t||!t.nodeType)throw new Error("A DOM element reference is required");this.el=t,this.list=t.classList}t.exports=function(t){return new i(t)},i.prototype.add=function(t){if(this.list)return this.list.add(t),this;var e=this.array();return~n(e,t)||e.push(t),this.el.className=e.join(" "),this},i.prototype.remove=function(t){if(this.list)return this.list.remove(t),this;var e=this.array(),r=n(e,t);return~r&&e.splice(r,1),this.el.className=e.join(" "),this},i.prototype.toggle=function(t,e){return this.list?(void 0!==e?e!==this.list.toggle(t,e)&&this.list.toggle(t):this.list.toggle(t),this):(void 0!==e?e?this.add(t):this.remove(t):this.has(t)?this.remove(t):this.add(t),this)},i.prototype.array=function(){var t=(this.el.getAttribute("class")||"").replace(/^\s+|\s+$/g,"").split(s);return""===t[0]&&t.shift(),t},i.prototype.has=i.prototype.contains=function(t){return this.list?this.list.contains(t):!!~n(this.array(),t)}},"./src/utils/events.js":function(t,e,r){var n=window.addEventListener?"addEventListener":"attachEvent",s=window.removeEventListener?"removeEventListener":"detachEvent",i="addEventListener"!==n?"on":"",a=r("./src/utils/to-array.js");e.bind=function(t,e,r,s){for(var o=0,l=(t=a(t)).length;o32)return!1;var a=n,o=function(){var t,r={};for(t=0;t=p;b--){var j=o[t.charAt(b-1)];if(C[b]=0===m?(C[b+1]<<1|1)&j:(C[b+1]<<1|1)&j|(v[b+1]|v[b])<<1|1|v[b+1],C[b]&d){var x=l(m,b-1);if(x<=u){if(u=x,!((c=b-1)>a))break;p=Math.max(1,2*a-c)}}}if(l(m+1,a)>u)break;v=C}return!(c<0)}},"./src/utils/get-attribute.js":function(t){t.exports=function(t,e){var r=t.getAttribute&&t.getAttribute(e)||null;if(!r)for(var n=t.attributes,s=n.length,i=0;i=48&&t<=57}function i(t,e){for(var i=(t+="").length,a=(e+="").length,o=0,l=0;o=i&&l=a?-1:l>=a&&o=i?1:i-a}i.caseInsensitive=i.i=function(t,e){return i((""+t).toLowerCase(),(""+e).toLowerCase())},Object.defineProperties(i,{alphabet:{get:function(){return e},set:function(t){r=[];var s=0;if(e=t)for(;s0?setTimeout((function(){e(r,n,s)}),1):(t.update(),n(s))}}},"./src/filter.js":function(t){t.exports=function(t){return t.handlers.filterStart=t.handlers.filterStart||[],t.handlers.filterComplete=t.handlers.filterComplete||[],function(e){if(t.trigger("filterStart"),t.i=1,t.reset.filter(),void 0===e)t.filtered=!1;else{t.filtered=!0;for(var r=t.items,n=0,s=r.length;nv.page,a=new g(t[s],void 0,n),v.items.push(a),r.push(a)}return v.update(),r}m(t.slice(0),e)}},this.show=function(t,e){return this.i=t,this.page=e,v.update(),v},this.remove=function(t,e,r){for(var n=0,s=0,i=v.items.length;s-1&&r.splice(n,1),v},this.trigger=function(t){for(var e=v.handlers[t].length;e--;)v.handlers[t][e](v);return v},this.reset={filter:function(){for(var t=v.items,e=t.length;e--;)t[e].filtered=!1;return v},search:function(){for(var t=v.items,e=t.length;e--;)t[e].found=!1;return v}},this.update=function(){var t=v.items,e=t.length;v.visibleItems=[],v.matchingItems=[],v.templater.clear();for(var r=0;r=v.i&&v.visibleItems.lengthe},innerWindow:function(t,e,r){return t>=e-r&&t<=e+r},dotted:function(t,e,r,n,s,i,a){return this.dottedLeft(t,e,r,n,s,i)||this.dottedRight(t,e,r,n,s,i,a)},dottedLeft:function(t,e,r,n,s,i){return e==r+1&&!this.innerWindow(e,s,i)&&!this.right(e,n)},dottedRight:function(t,e,r,n,s,i,a){return!t.items[a-1].values().dotted&&(e==n&&!this.innerWindow(e,s,i)&&!this.right(e,n))}};return function(e){var n=new i(t.listContainer.id,{listClass:e.paginationClass||"pagination",item:e.item||"
  • ",valueNames:["page","dotted"],searchClass:"pagination-search-that-is-not-supposed-to-exist",sortClass:"pagination-sort-that-is-not-supposed-to-exist"});s.bind(n.listContainer,"click",(function(e){var r=e.target||e.srcElement,n=t.utils.getAttribute(r,"data-page"),s=t.utils.getAttribute(r,"data-i");s&&t.show((s-1)*n+1,n)})),t.on("updated",(function(){r(n,e)})),r(n,e)}}},"./src/parse.js":function(t,e,r){t.exports=function(t){var e=r("./src/item.js")(t),n=function(r,n){for(var s=0,i=r.length;s0?setTimeout((function(){e(r,s)}),1):(t.update(),t.trigger("parseComplete"))};return t.handlers.parseComplete=t.handlers.parseComplete||[],function(){var e=function(t){for(var e=t.childNodes,r=[],n=0,s=e.length;n]/g.exec(t)){var e=document.createElement("tbody");return e.innerHTML=t,e.firstElementChild}if(-1!==t.indexOf("<")){var r=document.createElement("div");return r.innerHTML=t,r.firstElementChild}}},a=function(e,r,n){var s=void 0,i=function(e){for(var r=0,n=t.valueNames.length;r=1;)t.list.removeChild(t.list.firstChild)},function(){var r;if("function"!=typeof t.item){if(!(r="string"==typeof t.item?-1===t.item.indexOf("<")?document.getElementById(t.item):i(t.item):s()))throw new Error("The list needs to have at least one item on init otherwise you'll have to add a template.");r=n(r,t.valueNames),e=function(){return r.cloneNode(!0)}}else e=function(e){var r=t.item(e);return i(r)}}()};t.exports=function(t){return new e(t)}},"./src/utils/classes.js":function(t,e,r){var n=r("./src/utils/index-of.js"),s=/\s+/;Object.prototype.toString;function i(t){if(!t||!t.nodeType)throw new Error("A DOM element reference is required");this.el=t,this.list=t.classList}t.exports=function(t){return new i(t)},i.prototype.add=function(t){if(this.list)return this.list.add(t),this;var e=this.array();return~n(e,t)||e.push(t),this.el.className=e.join(" "),this},i.prototype.remove=function(t){if(this.list)return this.list.remove(t),this;var e=this.array(),r=n(e,t);return~r&&e.splice(r,1),this.el.className=e.join(" "),this},i.prototype.toggle=function(t,e){return this.list?(void 0!==e?e!==this.list.toggle(t,e)&&this.list.toggle(t):this.list.toggle(t),this):(void 0!==e?e?this.add(t):this.remove(t):this.has(t)?this.remove(t):this.add(t),this)},i.prototype.array=function(){var t=(this.el.getAttribute("class")||"").replace(/^\s+|\s+$/g,"").split(s);return""===t[0]&&t.shift(),t},i.prototype.has=i.prototype.contains=function(t){return this.list?this.list.contains(t):!!~n(this.array(),t)}},"./src/utils/events.js":function(t,e,r){var n=window.addEventListener?"addEventListener":"attachEvent",s=window.removeEventListener?"removeEventListener":"detachEvent",i="addEventListener"!==n?"on":"",a=r("./src/utils/to-array.js");e.bind=function(t,e,r,s){for(var o=0,l=(t=a(t)).length;o32)return!1;var a=n,o=function(){var t,r={};for(t=0;t=p;b--){var j=o[t.charAt(b-1)];if(C[b]=0===m?(C[b+1]<<1|1)&j:(C[b+1]<<1|1)&j|(v[b+1]|v[b])<<1|1|v[b+1],C[b]&d){var x=l(m,b-1);if(x<=u){if(u=x,!((c=b-1)>a))break;p=Math.max(1,2*a-c)}}}if(l(m+1,a)>u)break;v=C}return!(c<0)}},"./src/utils/get-attribute.js":function(t){t.exports=function(t,e){var r=t.getAttribute&&t.getAttribute(e)||null;if(!r)for(var n=t.attributes,s=n.length,i=0;i=48&&t<=57}function i(t,e){for(var i=(t+="").length,a=(e+="").length,o=0,l=0;o=i&&l=a?-1:l>=a&&o=i?1:i-a}i.caseInsensitive=i.i=function(t,e){return i((""+t).toLowerCase(),(""+e).toLowerCase())},Object.defineProperties(i,{alphabet:{get:function(){return e},set:function(t){r=[];var s=0;if(e=t)for(;s { + category = atob(category); if (categoriesLoaded) { activateCategory(category); setCategoryHash(category); @@ -15,7 +16,9 @@ window["quarto-listing-loaded"] = () => { if (hash) { // If there is a category, switch to that if (hash.category) { - activateCategory(hash.category); + // category hash are URI encoded so we need to decode it before processing + // so that we can match it with the category element processed in JS + activateCategory(decodeURIComponent(hash.category)); } // Paginate a specific listing const listingIds = Object.keys(window["quarto-listings"]); @@ -58,7 +61,10 @@ window.document.addEventListener("DOMContentLoaded", function (_event) { ); for (const categoryEl of categoryEls) { - const category = categoryEl.getAttribute("data-category"); + // category needs to support non ASCII characters + const category = decodeURIComponent( + atob(categoryEl.getAttribute("data-category")) + ); categoryEl.onclick = () => { activateCategory(category); setCategoryHash(category); @@ -208,7 +214,9 @@ function activateCategory(category) { // Activate this category const categoryEl = window.document.querySelector( - `.quarto-listing-category .category[data-category='${category}'` + `.quarto-listing-category .category[data-category='${btoa( + encodeURIComponent(category) + )}']` ); if (categoryEl) { categoryEl.classList.add("active"); @@ -231,7 +239,9 @@ function filterListingCategory(category) { list.filter(function (item) { const itemValues = item.values(); if (itemValues.categories !== null) { - const categories = itemValues.categories.split(","); + const categories = decodeURIComponent( + atob(itemValues.categories) + ).split(","); return categories.includes(category); } else { return false; diff --git a/Dockerfile b/Dockerfile index 26c0507..9017905 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,9 +2,10 @@ FROM ubuntu:22.04 ARG DEBIAN_FRONTEND=noninteractive -ENV JULIA_VERSION=1.10.5 \ - JULIA_MAJOR_VERSION=1.10 \ - JULIA_PATH=/usr/local/julia +ENV JULIA_VERSION=1.11.1 \ + JULIA_MAJOR_VERSION=1.11 \ + JULIA_PATH=/usr/local/julia \ + QUARTO_VERSION=1.6.37 RUN apt-get update && apt-get install -y --no-install-recommends \ apt-utils dialog \ @@ -17,12 +18,12 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ && rm -rf /var/lib/apt/lists/* # Use a RUN command for architecture detection and conditional logic -RUN wget https://github.com/quarto-dev/quarto-cli/releases/download/v1.5.57/quarto-1.5.57-linux-$(if [ "$(uname -m)" = "x86_64" ]; then echo "amd64"; else echo "arm64"; fi).tar.gz -O quarto.tar.gz \ +RUN wget https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-$(if [ "$(uname -m)" = "x86_64" ]; then echo "amd64"; else echo "arm64"; fi).tar.gz -O quarto.tar.gz \ && tar -xzf quarto.tar.gz -C /opt \ && mkdir -p /opt/quarto \ - && mv /opt/quarto-1.5.57/* /opt/quarto/ \ + && mv /opt/quarto-${QUARTO_VERSION}/* /opt/quarto/ \ && ln -s /opt/quarto/bin/quarto /usr/local/bin/quarto \ - && rm -rf quarto.tar.gz /opt/quarto-1.5.57 + && rm -rf quarto.tar.gz /opt/quarto-${QUARTO_VERSION} RUN python3 -m pip install jupyter webio_jupyter_extension jupyter-cache diff --git a/Manifest.toml b/Manifest.toml index 16d40d1..d4aa842 100644 --- a/Manifest.toml +++ b/Manifest.toml @@ -1,24 +1,20 @@ # This file is machine-generated - editing it directly is not advised -julia_version = "1.10.5" +julia_version = "1.11.1" manifest_format = "2.0" -project_hash = "6d8292b360ac716b19a122905de8bde0e9333f67" +project_hash = "63aae7aaff5ed28d5856cfdf389c2100b8d7d355" [[deps.ADTypes]] -git-tree-sha1 = "eea5d80188827b35333801ef97a40c2ed653b081" +git-tree-sha1 = "72af59f5b8f09faee36b4ec48e014a79210f2f4f" uuid = "47edcb42-4c32-4615-8424-f2b9edc5f35b" -version = "1.9.0" -weakdeps = ["ChainRulesCore", "EnzymeCore"] +version = "1.11.0" +weakdeps = ["ChainRulesCore", "ConstructionBase", "EnzymeCore"] [deps.ADTypes.extensions] ADTypesChainRulesCoreExt = "ChainRulesCore" + ADTypesConstructionBaseExt = "ConstructionBase" ADTypesEnzymeCoreExt = "EnzymeCore" -[[deps.AbstractTrees]] -git-tree-sha1 = "2d9c9a55f9c93e8887ad391fbae72f8ef55e1177" -uuid = "1520ce14-60c1-5f80-bbc7-55ef81b5835c" -version = "0.4.5" - [[deps.Accessors]] deps = ["CompositionsBase", "ConstructionBase", "InverseFunctions", "LinearAlgebra", "MacroTools", "Markdown"] git-tree-sha1 = "b392ede862e506d451fc1616e79aa6f4c673dab8" @@ -62,7 +58,7 @@ version = "1.1.3" [[deps.ArgTools]] uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" -version = "1.1.1" +version = "1.1.2" [[deps.ArnoldiMethod]] deps = ["LinearAlgebra", "Random", "StaticArrays"] @@ -72,9 +68,9 @@ version = "0.4.0" [[deps.ArrayInterface]] deps = ["Adapt", "LinearAlgebra"] -git-tree-sha1 = "d60a1922358aa203019b7857a2c8c37329b8736c" +git-tree-sha1 = "d5140b60b87473df18cf4fe66382b7c3596df047" uuid = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9" -version = "7.17.0" +version = "7.17.1" [deps.ArrayInterface.extensions] ArrayInterfaceBandedMatricesExt = "BandedMatrices" @@ -114,6 +110,7 @@ weakdeps = ["SparseArrays"] [[deps.Artifacts]] uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" +version = "1.11.0" [[deps.AssetRegistry]] deps = ["Distributed", "JSON", "Pidfile", "SHA", "Test"] @@ -139,11 +136,7 @@ weakdeps = ["SparseArrays"] [[deps.Base64]] uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" - -[[deps.Bijections]] -git-tree-sha1 = "d8b0439d2be438a5f2cd68ec158fe08a7b2595b7" -uuid = "e2ed5e7c-b2de-5872-ae92-c73ca462fb04" -version = "0.1.9" +version = "1.11.0" [[deps.BitFlags]] git-tree-sha1 = "0691e34b3bb8be9307330f88d1a3c3f25466c24d" @@ -175,28 +168,28 @@ version = "5.12.0" ODEInterface = "54ca160b-1b9f-5127-a996-1867f4bc2a2c" [[deps.BoundaryValueDiffEqCore]] -deps = ["ADTypes", "Adapt", "ArrayInterface", "ConcreteStructs", "DiffEqBase", "ForwardDiff", "LineSearch", "LineSearches", "LinearAlgebra", "LinearSolve", "Logging", "NonlinearSolve", "PreallocationTools", "RecursiveArrayTools", "Reexport", "SciMLBase", "Setfield", "SparseArrays", "SparseDiffTools"] -git-tree-sha1 = "b4556571d1e80faa5f62ac8732a07bae0ee24dc6" +deps = ["ADTypes", "Adapt", "ArrayInterface", "ConcreteStructs", "DiffEqBase", "ForwardDiff", "LineSearch", "LinearAlgebra", "LinearSolve", "Logging", "NonlinearSolveFirstOrder", "PreallocationTools", "RecursiveArrayTools", "Reexport", "SciMLBase", "Setfield", "SparseArrays", "SparseDiffTools"] +git-tree-sha1 = "34c7d203f7a5002a7c27e69ae4f70f940cd22890" uuid = "56b672f2-a5fe-4263-ab2d-da677488eb3a" -version = "1.0.2" +version = "1.2.0" [[deps.BoundaryValueDiffEqFIRK]] -deps = ["ADTypes", "Adapt", "ArrayInterface", "BandedMatrices", "BoundaryValueDiffEqCore", "ConcreteStructs", "DiffEqBase", "FastAlmostBandedMatrices", "FastClosures", "ForwardDiff", "LineSearch", "LineSearches", "LinearAlgebra", "LinearSolve", "Logging", "NonlinearSolve", "PreallocationTools", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "SciMLBase", "Setfield", "SparseArrays", "SparseDiffTools"] -git-tree-sha1 = "35e1e7822d1c77d85ecf568606ca64d60fbd39de" +deps = ["ADTypes", "Adapt", "ArrayInterface", "BandedMatrices", "BoundaryValueDiffEqCore", "ConcreteStructs", "DiffEqBase", "FastAlmostBandedMatrices", "FastClosures", "ForwardDiff", "LinearAlgebra", "LinearSolve", "Logging", "PreallocationTools", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "SciMLBase", "Setfield", "SparseArrays", "SparseDiffTools"] +git-tree-sha1 = "6305d58ba2f53faec7bf44dfba5b591b524254b0" uuid = "85d9eb09-370e-4000-bb32-543851f73618" -version = "1.0.2" +version = "1.2.0" [[deps.BoundaryValueDiffEqMIRK]] -deps = ["ADTypes", "Adapt", "ArrayInterface", "BandedMatrices", "BoundaryValueDiffEqCore", "ConcreteStructs", "DiffEqBase", "FastAlmostBandedMatrices", "FastClosures", "ForwardDiff", "LineSearch", "LineSearches", "LinearAlgebra", "LinearSolve", "Logging", "NonlinearSolve", "PreallocationTools", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "SciMLBase", "Setfield", "SparseArrays", "SparseDiffTools"] -git-tree-sha1 = "e1fa0dee3d8eca528ab96e765a52760fd7466ffa" +deps = ["ADTypes", "Adapt", "ArrayInterface", "BandedMatrices", "BoundaryValueDiffEqCore", "ConcreteStructs", "DiffEqBase", "FastAlmostBandedMatrices", "FastClosures", "ForwardDiff", "LinearAlgebra", "LinearSolve", "Logging", "PreallocationTools", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "SciMLBase", "Setfield", "SparseArrays", "SparseDiffTools"] +git-tree-sha1 = "ed6802d8a97a0847060d25261b7561da83a4f044" uuid = "1a22d4ce-7765-49ea-b6f2-13c8438986a6" -version = "1.0.1" +version = "1.2.0" [[deps.BoundaryValueDiffEqShooting]] -deps = ["ADTypes", "Adapt", "ArrayInterface", "BandedMatrices", "BoundaryValueDiffEqCore", "ConcreteStructs", "DiffEqBase", "FastAlmostBandedMatrices", "FastClosures", "ForwardDiff", "LineSearch", "LineSearches", "LinearAlgebra", "LinearSolve", "Logging", "NonlinearSolve", "OrdinaryDiffEq", "PreallocationTools", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "SciMLBase", "Setfield", "SparseArrays", "SparseDiffTools"] -git-tree-sha1 = "fac04445ab0fdfa29b62d84e1af6b21334753a94" +deps = ["ADTypes", "Adapt", "ArrayInterface", "BandedMatrices", "BoundaryValueDiffEqCore", "ConcreteStructs", "DiffEqBase", "FastAlmostBandedMatrices", "FastClosures", "ForwardDiff", "LinearAlgebra", "LinearSolve", "Logging", "OrdinaryDiffEq", "PreallocationTools", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "SciMLBase", "Setfield", "SparseArrays", "SparseDiffTools"] +git-tree-sha1 = "e30c7383ae1bf5564c139a95711b910b0f4f1a3d" uuid = "ed55bfe0-3725-4db6-871e-a1dc9f42a757" -version = "1.0.2" +version = "1.2.0" [[deps.Bzip2_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -233,6 +226,11 @@ git-tree-sha1 = "9cb23bbb1127eefb022b022481466c0f1127d430" uuid = "49dc2e85-a5d0-5ad3-a950-438e2897f1b9" version = "0.5.2" +[[deps.Cassette]] +git-tree-sha1 = "f8764df8d9d2aec2812f009a1ac39e46c33354b8" +uuid = "7057c7e9-c182-5462-911a-8362d720325c" +version = "0.3.14" + [[deps.ChainRulesCore]] deps = ["Compat", "LinearAlgebra"] git-tree-sha1 = "3e4b134270b372f2ed4d4d0e936aabaefc1802bc" @@ -269,15 +267,19 @@ version = "3.27.1" [[deps.ColorTypes]] deps = ["FixedPointNumbers", "Random"] -git-tree-sha1 = "b10d0b65641d57b8b4d5e234446582de5047050d" +git-tree-sha1 = "c7acce7a7e1078a20a285211dd73cd3941a871d6" uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" -version = "0.11.5" +version = "0.12.0" +weakdeps = ["StyledStrings"] + + [deps.ColorTypes.extensions] + StyledStringsExt = "StyledStrings" [[deps.ColorVectorSpace]] deps = ["ColorTypes", "FixedPointNumbers", "LinearAlgebra", "Requires", "Statistics", "TensorCore"] -git-tree-sha1 = "a1f44953f2382ebb937d60dafbe2deea4bd23249" +git-tree-sha1 = "8b3b6f87ce8f65a2b4f857528fd8d70086cd72b1" uuid = "c3611d14-8923-5661-9e6a-0046d554d3a4" -version = "0.10.0" +version = "0.11.0" weakdeps = ["SpecialFunctions"] [deps.ColorVectorSpace.extensions] @@ -285,14 +287,9 @@ weakdeps = ["SpecialFunctions"] [[deps.Colors]] deps = ["ColorTypes", "FixedPointNumbers", "Reexport"] -git-tree-sha1 = "362a287c3aa50601b0bc359053d5c2468f0e7ce0" +git-tree-sha1 = "64e15186f0aa277e174aa81798f7eb8598e0157e" uuid = "5ae59095-9a9b-59fe-a467-6f913c188581" -version = "0.12.11" - -[[deps.Combinatorics]] -git-tree-sha1 = "08c8b6831dc00bfea825826be0bc8336fc369860" -uuid = "861a8166-3701-5b0c-9a16-15d98fcdc6aa" -version = "1.0.2" +version = "0.13.0" [[deps.CommonSolve]] git-tree-sha1 = "0eee5eb66b1cf62cd6ad1b460238e60e4b09400c" @@ -325,11 +322,6 @@ deps = ["Artifacts", "Libdl"] uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" version = "1.1.1+0" -[[deps.CompositeTypes]] -git-tree-sha1 = "bce26c3dab336582805503bed209faab1c279768" -uuid = "b152e2b5-7a66-4b01-a709-34e65c35f657" -version = "0.1.4" - [[deps.CompositionsBase]] git-tree-sha1 = "802bb88cd69dfd1509f6670416bd4434015693ad" uuid = "a33af91c-f02d-484b-be07-31d278c5ca2b" @@ -366,13 +358,17 @@ version = "0.17.6" git-tree-sha1 = "76219f1ed5771adbb096743bff43fb5fdd4c1157" uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9" version = "1.5.8" -weakdeps = ["IntervalSets", "LinearAlgebra", "StaticArrays"] [deps.ConstructionBase.extensions] ConstructionBaseIntervalSetsExt = "IntervalSets" ConstructionBaseLinearAlgebraExt = "LinearAlgebra" ConstructionBaseStaticArraysExt = "StaticArrays" + [deps.ConstructionBase.weakdeps] + IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953" + LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" + StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" + [[deps.Contour]] git-tree-sha1 = "439e35b0b36e2e5881738abc8857bd92ad6ff9a8" uuid = "d38c429a-6771-53c6-b99e-75d170b6e991" @@ -414,6 +410,7 @@ version = "1.0.0" [[deps.Dates]] deps = ["Printf"] uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" +version = "1.11.0" [[deps.Dbus_jll]] deps = ["Artifacts", "Expat_jll", "JLLWrappers", "Libdl"] @@ -435,9 +432,9 @@ version = "1.9.1" [[deps.DiffEqBase]] deps = ["ArrayInterface", "ConcreteStructs", "DataStructures", "DocStringExtensions", "EnumX", "EnzymeCore", "FastBroadcast", "FastClosures", "FastPower", "ForwardDiff", "FunctionWrappers", "FunctionWrappersWrappers", "LinearAlgebra", "Logging", "Markdown", "MuladdMacro", "Parameters", "PreallocationTools", "PrecompileTools", "Printf", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators", "SciMLStructures", "Setfield", "Static", "StaticArraysCore", "Statistics", "TruncatedStacktraces"] -git-tree-sha1 = "697abdf4af0e38199e9eabff6ccdf65255de855d" +git-tree-sha1 = "b7dbeaa770bad0980ddddf606de814cff2acb3bc" uuid = "2b5f629d-d688-5b77-993f-72d75c75574e" -version = "6.159.0" +version = "6.160.0" [deps.DiffEqBase.extensions] DiffEqBaseCUDAExt = "CUDA" @@ -469,9 +466,9 @@ version = "6.159.0" [[deps.DiffEqCallbacks]] deps = ["ConcreteStructs", "DataStructures", "DiffEqBase", "DifferentiationInterface", "Functors", "LinearAlgebra", "Markdown", "RecipesBase", "RecursiveArrayTools", "SciMLBase", "StaticArraysCore"] -git-tree-sha1 = "b1f970a2873a2cf76ce35fb0ed2b755a11b31052" +git-tree-sha1 = "f6bc598f21c7bf2f7885cff9b3c9078e606ab075" uuid = "459566f4-90b8-5000-8ac3-15dfb0a30def" -version = "4.1.0" +version = "4.2.2" [[deps.DiffEqNoiseProcess]] deps = ["DiffEqBase", "Distributions", "GPUArraysCore", "LinearAlgebra", "Markdown", "Optim", "PoissonRandom", "QuadGK", "Random", "Random123", "RandomNumbers", "RecipesBase", "RecursiveArrayTools", "ResettableStacks", "SciMLBase", "StaticArraysCore", "Statistics"] @@ -505,9 +502,9 @@ version = "7.15.0" [[deps.DifferentiationInterface]] deps = ["ADTypes", "LinearAlgebra"] -git-tree-sha1 = "0c99576d0b93df0aff1bed9d9adddef14e4e658f" +git-tree-sha1 = "94e3189f15c2d9011144c094a89fe3f31cc394b0" uuid = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63" -version = "0.6.22" +version = "0.6.23" [deps.DifferentiationInterface.extensions] DifferentiationInterfaceChainRulesCoreExt = "ChainRulesCore" @@ -559,6 +556,7 @@ weakdeps = ["ChainRulesCore", "SparseArrays"] [[deps.Distributed]] deps = ["Random", "Serialization", "Sockets"] uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" +version = "1.11.0" [[deps.Distributions]] deps = ["AliasTables", "FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "SpecialFunctions", "Statistics", "StatsAPI", "StatsBase", "StatsFuns"] @@ -582,29 +580,11 @@ git-tree-sha1 = "2fb1e02f2b635d0845df5d7c167fec4dd739b00d" uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" version = "0.9.3" -[[deps.DomainSets]] -deps = ["CompositeTypes", "IntervalSets", "LinearAlgebra", "Random", "StaticArrays"] -git-tree-sha1 = "490392af2c7d63183bfa2c8aaa6ab981c5ba7561" -uuid = "5b8099bc-c8ec-5219-889f-1d9e522a28bf" -version = "0.7.14" - - [deps.DomainSets.extensions] - DomainSetsMakieExt = "Makie" - - [deps.DomainSets.weakdeps] - Makie = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a" - [[deps.Downloads]] deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" version = "1.6.0" -[[deps.DynamicPolynomials]] -deps = ["Future", "LinearAlgebra", "MultivariatePolynomials", "MutableArithmetics", "Reexport", "Test"] -git-tree-sha1 = "bbf1ace0781d9744cb697fb856bd2c3f6568dadb" -uuid = "7c1d4256-1411-5781-91ec-d7bc3513ac07" -version = "0.6.0" - [[deps.EnumX]] git-tree-sha1 = "bdb1942cd4c45e3c678fd11569d5cccd80976237" uuid = "4e289a0a-7415-4d19-859d-a7e5c4648b56" @@ -627,21 +607,25 @@ version = "0.0.20230411+0" [[deps.ExceptionUnwrapping]] deps = ["Test"] -git-tree-sha1 = "dcb08a0d93ec0b1cdc4af184b26b591e9695423a" +git-tree-sha1 = "d36f682e590a83d63d1c7dbd287573764682d12a" uuid = "460bff9d-24e4-43bc-9d9f-a8973cb893f4" -version = "0.1.10" +version = "0.1.11" [[deps.Expat_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "1c6317308b9dc757616f0b5cb379db10494443a7" +git-tree-sha1 = "cc5231d52eb1771251fbd37171dbc408bcc8a1b6" uuid = "2e619515-83b5-522b-bb60-26c02a35a201" -version = "2.6.2+0" +version = "2.6.4+0" [[deps.ExponentialUtilities]] deps = ["Adapt", "ArrayInterface", "GPUArraysCore", "GenericSchur", "LinearAlgebra", "PrecompileTools", "Printf", "SparseArrays", "libblastrampoline_jll"] -git-tree-sha1 = "8e18940a5ba7f4ddb41fe2b79b6acaac50880a86" +git-tree-sha1 = "cae251c76f353e32d32d76fae2fea655eab652af" uuid = "d4d017d3-3776-5f7e-afef-a10c40355c18" -version = "1.26.1" +version = "1.27.0" +weakdeps = ["StaticArrays"] + + [deps.ExponentialUtilities.extensions] + ExponentialUtilitiesStaticArraysExt = "StaticArrays" [[deps.ExprTools]] git-tree-sha1 = "27415f162e6028e81c72b82ef756bf321213b6ec" @@ -733,6 +717,7 @@ weakdeps = ["Mmap", "Test"] [[deps.FileWatching]] uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" +version = "1.11.0" [[deps.FillArrays]] deps = ["LinearAlgebra"] @@ -748,9 +733,9 @@ weakdeps = ["PDMats", "SparseArrays", "Statistics"] [[deps.FiniteDiff]] deps = ["ArrayInterface", "LinearAlgebra", "Setfield"] -git-tree-sha1 = "b10bdafd1647f57ace3885143936749d61638c3b" +git-tree-sha1 = "84e3a47db33be7248daa6274b287507dd6ff84e8" uuid = "6a86dc24-6348-571c-b903-95158fe2bd41" -version = "2.26.0" +version = "2.26.2" [deps.FiniteDiff.extensions] FiniteDiffBandedMatricesExt = "BandedMatrices" @@ -793,9 +778,9 @@ weakdeps = ["StaticArrays"] [[deps.FreeType2_jll]] deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "Zlib_jll"] -git-tree-sha1 = "5c1d8ae0efc6c2e7b1fc502cbe25def8f661b7bc" +git-tree-sha1 = "fa8e19f44de37e225aa0f1695bc223b05ed51fb4" uuid = "d7e528f0-a631-5988-bf34-fe36492bcfd7" -version = "2.13.2+0" +version = "2.13.3+0" [[deps.FriBidi_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] @@ -803,6 +788,12 @@ git-tree-sha1 = "1ed150b39aebcc805c26b93a8d0122c940f64ce2" uuid = "559328eb-81f9-559d-9380-de523a88c83c" version = "1.0.14+0" +[[deps.FunctionProperties]] +deps = ["Cassette", "DiffRules"] +git-tree-sha1 = "bf7c740307eb0ee80e05d8aafbd0c5a901578398" +uuid = "f62d2435-5019-4c03-9749-2d4c77af0cbc" +version = "0.1.2" + [[deps.FunctionWrappers]] git-tree-sha1 = "d62485945ce5ae9c0c48f124a84998d755bae00e" uuid = "069b7b12-0de2-55c6-9aab-29f3d0a68a2e" @@ -821,14 +812,15 @@ uuid = "de31a74c-ac4f-5751-b3fd-e18cd04993ca" version = "0.5.0" [[deps.Functors]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "64d8e93700c7a3f28f717d265382d52fac9fa1c1" +deps = ["Compat", "ConstructionBase", "LinearAlgebra", "Random"] +git-tree-sha1 = "15e5397dd1cea034c7c772d9748cdee461fb5496" uuid = "d9f16b24-f501-4c13-a1f2-28368ffc5196" -version = "0.4.12" +version = "0.5.1" [[deps.Future]] deps = ["Random"] uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" +version = "1.11.0" [[deps.FuzzyCompletions]] deps = ["REPL"] @@ -860,12 +852,6 @@ git-tree-sha1 = "f31929b9e67066bee48eec8b03c0df47d31a74b3" uuid = "d2c73de3-f751-5644-a686-071e5b155ba9" version = "0.73.8+0" -[[deps.GenericLinearAlgebra]] -deps = ["LinearAlgebra", "Printf", "Random", "libblastrampoline_jll"] -git-tree-sha1 = "c4f9c87b74aedf20920034bd4db81d0bffc527d2" -uuid = "14197337-ba66-59df-a3e3-ca00e7dcff7a" -version = "0.3.14" - [[deps.GenericSchur]] deps = ["LinearAlgebra", "Printf"] git-tree-sha1 = "af49a0851f8113fcfae2ef5027c6d49d0acec39b" @@ -880,15 +866,15 @@ version = "0.21.0+0" [[deps.Glib_jll]] deps = ["Artifacts", "Gettext_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE2_jll", "Zlib_jll"] -git-tree-sha1 = "674ff0db93fffcd11a3573986e550d66cd4fd71f" +git-tree-sha1 = "b36c7e110080ae48fdef61b0c31e6b17ada23b33" uuid = "7746bdde-850d-59dc-9ae8-88ece973131d" -version = "2.80.5+0" +version = "2.82.2+0" [[deps.Graphite2_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "344bf40dcab1073aca04aa0df4fb092f920e4011" +git-tree-sha1 = "01979f9b37367603e2848ea225918a3b3861b606" uuid = "3b182d85-2403-5c21-9c21-1e1f0cc25472" -version = "1.3.14+0" +version = "1.3.14+1" [[deps.Graphs]] deps = ["ArnoldiMethod", "Compat", "DataStructures", "Distributed", "Inflate", "LinearAlgebra", "Random", "SharedArrays", "SimpleTraits", "SparseArrays", "Statistics"] @@ -902,10 +888,10 @@ uuid = "42e2da0e-8278-4e71-bc24-59509adca0fe" version = "1.0.2" [[deps.HTTP]] -deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] -git-tree-sha1 = "1336e07ba2eb75614c99496501a8f4b233e9fafe" +deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "PrecompileTools", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] +git-tree-sha1 = "ae350b8225575cc3ea385d4131c81594f86dfe4f" uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" -version = "1.10.10" +version = "1.10.12" [[deps.HarfBuzz_jll]] deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "Graphite2_jll", "JLLWrappers", "Libdl", "Libffi_jll"] @@ -966,11 +952,6 @@ version = "1.4.2" ArrowTypes = "31f734f8-188a-4ce0-8406-c8a06bd891cd" Parsers = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" -[[deps.IntegerMathUtils]] -git-tree-sha1 = "b8ffb903da9f7b8cf695a8bead8e01814aa24b30" -uuid = "18e54dd8-cb9d-406c-a71d-865a43cbb235" -version = "0.1.2" - [[deps.IntelOpenMP_jll]] deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl"] git-tree-sha1 = "10bd689145d2c3b2a9844005d01087cc1194e79e" @@ -980,6 +961,7 @@ version = "2024.2.1+0" [[deps.InteractiveUtils]] deps = ["Markdown"] uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" +version = "1.11.0" [[deps.Interpolations]] deps = ["Adapt", "AxisAlgorithms", "ChainRulesCore", "LinearAlgebra", "OffsetArrays", "Random", "Ratios", "Requires", "SharedArrays", "SparseArrays", "StaticArrays", "WoodburyMatrices"] @@ -991,17 +973,6 @@ weakdeps = ["Unitful"] [deps.Interpolations.extensions] InterpolationsUnitfulExt = "Unitful" -[[deps.IntervalSets]] -git-tree-sha1 = "dba9ddf07f77f60450fe5d2e2beb9854d9a49bd0" -uuid = "8197267c-284f-5f27-9208-e0e47529a953" -version = "0.7.10" -weakdeps = ["Random", "RecipesBase", "Statistics"] - - [deps.IntervalSets.extensions] - IntervalSetsRandomExt = "Random" - IntervalSetsRecipesBaseExt = "RecipesBase" - IntervalSetsStatisticsExt = "Statistics" - [[deps.InverseFunctions]] git-tree-sha1 = "a779299d77cd080bf77b97535acecd73e1c5e5cb" uuid = "3587e190-3f89-42d0-90ee-14403ec27112" @@ -1029,9 +1000,9 @@ version = "1.0.0" [[deps.JLFzf]] deps = ["Pipe", "REPL", "Random", "fzf_jll"] -git-tree-sha1 = "39d64b09147620f5ffbf6b2d3255be3c901bec63" +git-tree-sha1 = "71b48d857e86bf7a1838c4736545699974ce79a2" uuid = "1019f520-868f-41f5-a6de-eb00f4b6a39c" -version = "0.1.8" +version = "0.1.9" [[deps.JLLWrappers]] deps = ["Artifacts", "Preferences"] @@ -1059,9 +1030,9 @@ version = "3.0.4+0" [[deps.JuliaInterpreter]] deps = ["CodeTracking", "InteractiveUtils", "Random", "UUIDs"] -git-tree-sha1 = "2984284a8abcfcc4784d95a9e2ea4e352dd8ede7" +git-tree-sha1 = "10da5154188682e5c0726823c2b5125957ec3778" uuid = "aa1ae85d-cabe-5617-a682-6adf51b2e16a" -version = "0.9.36" +version = "0.9.38" [[deps.JumpProcesses]] deps = ["ArrayInterface", "DataStructures", "DiffEqBase", "DocStringExtensions", "FunctionWrappers", "Graphs", "LinearAlgebra", "Markdown", "PoissonRandom", "Random", "RandomNumbers", "RecursiveArrayTools", "Reexport", "SciMLBase", "Setfield", "StaticArrays", "SymbolicIndexingInterface", "UnPack"] @@ -1171,6 +1142,7 @@ version = "2.2.2" [[deps.LazyArtifacts]] deps = ["Artifacts", "Pkg"] uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3" +version = "1.11.0" [[deps.LevyArea]] deps = ["LinearAlgebra", "Random", "SpecialFunctions"] @@ -1186,16 +1158,17 @@ version = "0.6.4" [[deps.LibCURL_jll]] deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" -version = "8.4.0+0" +version = "8.6.0+0" [[deps.LibGit2]] deps = ["Base64", "LibGit2_jll", "NetworkOptions", "Printf", "SHA"] uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" +version = "1.11.0" [[deps.LibGit2_jll]] deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll"] uuid = "e37daf67-58a4-590a-8e99-b0245dd2ffc5" -version = "1.6.4+0" +version = "1.7.2+0" [[deps.LibSSH2_jll]] deps = ["Artifacts", "Libdl", "MbedTLS_jll"] @@ -1204,6 +1177,7 @@ version = "1.11.0+1" [[deps.Libdl]] uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" +version = "1.11.0" [[deps.Libffi_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -1237,9 +1211,9 @@ version = "1.17.0+1" [[deps.Libmount_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "0c4f9c4f1a50d8f35048fa0532dabbadf702f81e" +git-tree-sha1 = "84eef7acd508ee5b3e956a2ae51b05024181dee0" uuid = "4b2f31a3-9ecc-558c-b454-b3730dcb73e9" -version = "2.40.1+0" +version = "2.40.2+0" [[deps.Libtiff_jll]] deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "LERC_jll", "Libdl", "XZ_jll", "Zlib_jll", "Zstd_jll"] @@ -1249,9 +1223,9 @@ version = "4.7.0+0" [[deps.Libuuid_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "5ee6203157c120d79034c748a2acba45b82b8807" +git-tree-sha1 = "edbf5309f9ddf1cab25afc344b1e8150b7c832f9" uuid = "38a345b3-de98-5d2b-a5d3-14cd9215e700" -version = "2.40.1+0" +version = "2.40.2+0" [[deps.LineSearch]] deps = ["ADTypes", "CommonSolve", "ConcreteStructs", "FastClosures", "LinearAlgebra", "MaybeInplace", "SciMLBase", "SciMLJacobianOperators", "StaticArraysCore"] @@ -1272,12 +1246,13 @@ version = "7.3.0" [[deps.LinearAlgebra]] deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" +version = "1.11.0" [[deps.LinearSolve]] deps = ["ArrayInterface", "ChainRulesCore", "ConcreteStructs", "DocStringExtensions", "EnumX", "FastLapackInterface", "GPUArraysCore", "InteractiveUtils", "KLU", "Krylov", "LazyArrays", "Libdl", "LinearAlgebra", "MKL_jll", "Markdown", "PrecompileTools", "Preferences", "RecursiveFactorization", "Reexport", "SciMLBase", "SciMLOperators", "Setfield", "SparseArrays", "Sparspak", "StaticArraysCore", "UnPack"] -git-tree-sha1 = "591de175461afd8323aa24b7686062574527aa3a" +git-tree-sha1 = "6b79df6e803fb62b79a364b86c790e7e21bd38ce" uuid = "7ed4a6bd-45f5-4d41-b270-4a48e9bafcae" -version = "2.36.2" +version = "2.37.0" [deps.LinearSolve.extensions] LinearSolveBandedMatricesExt = "BandedMatrices" @@ -1327,6 +1302,7 @@ version = "0.3.28" [[deps.Logging]] uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" +version = "1.11.0" [[deps.LoggingExtras]] deps = ["Dates", "Logging"] @@ -1347,9 +1323,9 @@ weakdeps = ["ChainRulesCore", "ForwardDiff", "SpecialFunctions"] [[deps.LoweredCodeUtils]] deps = ["JuliaInterpreter"] -git-tree-sha1 = "260dc274c1bc2cb839e758588c63d9c8b5e639d1" +git-tree-sha1 = "688d6d9e098109051ae33d126fcfc88c4ce4a021" uuid = "6f1432cf-f94c-5a45-995e-cdbf5db27b0b" -version = "3.0.5" +version = "3.1.0" [[deps.MIMEs]] git-tree-sha1 = "65f28ad4b594aebe22157d6fac869786a255b7eb" @@ -1387,6 +1363,7 @@ version = "0.1.8" [[deps.Markdown]] deps = ["Base64"] uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" +version = "1.11.0" [[deps.MatrixFactorizations]] deps = ["ArrayLayouts", "LinearAlgebra", "Printf", "Random"] @@ -1417,7 +1394,7 @@ version = "1.1.9" [[deps.MbedTLS_jll]] deps = ["Artifacts", "Libdl"] uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" -version = "2.28.2+1" +version = "2.28.6+0" [[deps.Measurements]] deps = ["Calculus", "LinearAlgebra", "Printf", "Requires"] @@ -1452,10 +1429,11 @@ version = "1.2.0" [[deps.Mmap]] uuid = "a63ad114-7e13-5084-954f-fe012c677804" +version = "1.11.0" [[deps.MozillaCACerts_jll]] uuid = "14a3606d-f60d-562e-9121-12d972cd8159" -version = "2023.1.10" +version = "2023.12.12" [[deps.MsgPack]] deps = ["Serialization"] @@ -1468,24 +1446,12 @@ git-tree-sha1 = "cac9cc5499c25554cba55cd3c30543cff5ca4fab" uuid = "46d2c3a1-f734-5fdb-9937-b9b9aeba4221" version = "0.2.4" -[[deps.MultivariatePolynomials]] -deps = ["ChainRulesCore", "DataStructures", "LinearAlgebra", "MutableArithmetics"] -git-tree-sha1 = "8d39779e29f80aa6c071e7ac17101c6e31f075d7" -uuid = "102ac46a-7ee4-5c85-9060-abc95bfdeaa3" -version = "0.5.7" - [[deps.Mustache]] deps = ["Printf", "Tables"] git-tree-sha1 = "3b2db451a872b20519ebb0cec759d3d81a1c6bcb" uuid = "ffc61752-8dc7-55ee-8c37-f3e9cdd09e70" version = "1.0.20" -[[deps.MutableArithmetics]] -deps = ["LinearAlgebra", "SparseArrays", "Test"] -git-tree-sha1 = "90077f1e79de8c9c7c8a90644494411111f4e07b" -uuid = "d8a4904e-b15c-11e9-3269-09a3773c0cb0" -version = "1.5.2" - [[deps.Mux]] deps = ["AssetRegistry", "Base64", "HTTP", "Hiccup", "MbedTLS", "Pkg", "Sockets"] git-tree-sha1 = "7295d849103ac4fcbe3b2e439f229c5cc77b9b69" @@ -1542,6 +1508,28 @@ version = "3.15.1" SIAMFANLEquations = "084e46ad-d928-497d-ad5e-07fa361a48c4" SpeedMapping = "f1835b91-879b-4a3f-a438-e4baacf14412" +[[deps.NonlinearSolveBase]] +deps = ["ADTypes", "Adapt", "ArrayInterface", "CommonSolve", "Compat", "ConcreteStructs", "DifferentiationInterface", "EnzymeCore", "FastClosures", "FunctionProperties", "LinearAlgebra", "Markdown", "MaybeInplace", "Preferences", "Printf", "RecursiveArrayTools", "SciMLBase", "SciMLJacobianOperators", "SciMLOperators", "StaticArraysCore", "SymbolicIndexingInterface", "TimerOutputs"] +git-tree-sha1 = "46772fc296d9f16c3ab78a8ef00008ab075de677" +uuid = "be0214bd-f91f-a760-ac4e-3421ce2b2da0" +version = "1.3.3" +weakdeps = ["BandedMatrices", "DiffEqBase", "ForwardDiff", "LineSearch", "LinearSolve", "SparseArrays", "SparseMatrixColorings"] + + [deps.NonlinearSolveBase.extensions] + NonlinearSolveBaseBandedMatricesExt = "BandedMatrices" + NonlinearSolveBaseDiffEqBaseExt = "DiffEqBase" + NonlinearSolveBaseForwardDiffExt = "ForwardDiff" + NonlinearSolveBaseLineSearchExt = "LineSearch" + NonlinearSolveBaseLinearSolveExt = "LinearSolve" + NonlinearSolveBaseSparseArraysExt = "SparseArrays" + NonlinearSolveBaseSparseMatrixColoringsExt = "SparseMatrixColorings" + +[[deps.NonlinearSolveFirstOrder]] +deps = ["ADTypes", "ArrayInterface", "CommonSolve", "ConcreteStructs", "DiffEqBase", "FiniteDiff", "ForwardDiff", "LineSearch", "LinearAlgebra", "LinearSolve", "MaybeInplace", "NonlinearSolveBase", "PrecompileTools", "Reexport", "SciMLBase", "SciMLJacobianOperators", "Setfield", "StaticArraysCore"] +git-tree-sha1 = "05a42691900f8f14e930478d5638a5f0fc973601" +uuid = "5959db7a-ea39-4486-b5fe-2dd0bf03d60d" +version = "1.1.0" + [[deps.Observables]] git-tree-sha1 = "7438a59546cf62428fc9d1bc94729146d37a7225" uuid = "510215fc-4207-5dde-b226-833fc4488ee2" @@ -1565,7 +1553,7 @@ version = "1.3.5+1" [[deps.OpenBLAS_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" -version = "0.3.23+4" +version = "0.3.27+1" [[deps.OpenLibm_jll]] deps = ["Artifacts", "Libdl"] @@ -1638,9 +1626,9 @@ version = "1.1.2" [[deps.OrdinaryDiffEqCore]] deps = ["ADTypes", "Accessors", "Adapt", "ArrayInterface", "DataStructures", "DiffEqBase", "DocStringExtensions", "EnumX", "FastBroadcast", "FastClosures", "FastPower", "FillArrays", "FunctionWrappersWrappers", "InteractiveUtils", "LinearAlgebra", "Logging", "MacroTools", "MuladdMacro", "Polyester", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators", "SciMLStructures", "SimpleUnPack", "Static", "StaticArrayInterface", "StaticArraysCore", "SymbolicIndexingInterface", "TruncatedStacktraces"] -git-tree-sha1 = "be2c628185fcf94b544fba86b9722be40c3ac305" +git-tree-sha1 = "a458dc1117f289f830ad772a5a02fb36201d1df4" uuid = "bbf590c4-e513-4bbe-9b18-05decba2e5d8" -version = "1.10.1" +version = "1.12.1" weakdeps = ["EnzymeCore"] [deps.OrdinaryDiffEqCore.extensions] @@ -1677,10 +1665,10 @@ uuid = "becaefa8-8ca2-5cf9-886d-c06f3d2bd2c4" version = "1.2.1" [[deps.OrdinaryDiffEqFIRK]] -deps = ["DiffEqBase", "FastBroadcast", "FastPower", "GenericLinearAlgebra", "GenericSchur", "LinearAlgebra", "LinearSolve", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "OrdinaryDiffEqNonlinearSolve", "Polynomials", "RecursiveArrayTools", "Reexport", "RootedTrees", "SciMLOperators", "Symbolics"] -git-tree-sha1 = "1dcf5bebc5179c1c119a7a30f99bbb93eec02d44" +deps = ["DiffEqBase", "FastBroadcast", "FastPower", "LinearAlgebra", "LinearSolve", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "OrdinaryDiffEqNonlinearSolve", "RecursiveArrayTools", "Reexport", "SciMLOperators"] +git-tree-sha1 = "7a6e3996dc0850aee6cdc10c8afa377242fce702" uuid = "5960d6e9-dd7a-4743-88e7-cf307b64f125" -version = "1.3.0" +version = "1.5.0" [[deps.OrdinaryDiffEqFeagin]] deps = ["DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "Polyester", "RecursiveArrayTools", "Reexport", "Static"] @@ -1861,9 +1849,13 @@ uuid = "30392449-352a-5448-841d-b1acce4e97dc" version = "0.43.4+0" [[deps.Pkg]] -deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] +deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "Random", "SHA", "TOML", "Tar", "UUIDs", "p7zip_jll"] uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" -version = "1.10.0" +version = "1.11.0" +weakdeps = ["REPL"] + + [deps.Pkg.extensions] + REPLExt = "REPL" [[deps.PlotThemes]] deps = ["PlotUtils", "Statistics"] @@ -1962,24 +1954,6 @@ git-tree-sha1 = "5f807b5345093487f733e520a1b7395ee9324825" uuid = "3a141323-8675-5d76-9d11-e1df1406c778" version = "1.0.0" -[[deps.Polynomials]] -deps = ["LinearAlgebra", "RecipesBase", "Requires", "Setfield", "SparseArrays"] -git-tree-sha1 = "1a9cfb2dc2c2f1bd63f1906d72af39a79b49b736" -uuid = "f27b6e38-b328-58d1-80ce-0feddd5e7a45" -version = "4.0.11" - - [deps.Polynomials.extensions] - PolynomialsChainRulesCoreExt = "ChainRulesCore" - PolynomialsFFTWExt = "FFTW" - PolynomialsMakieCoreExt = "MakieCore" - PolynomialsMutableArithmeticsExt = "MutableArithmetics" - - [deps.Polynomials.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - FFTW = "7a1cc6ca-52ef-59f5-83cd-3a7055c09341" - MakieCore = "20f20a25-4f0e-4fdf-b5d1-57303727442b" - MutableArithmetics = "d8a4904e-b15c-11e9-3269-09a3773c0cb0" - [[deps.PooledArrays]] deps = ["DataAPI", "Future"] git-tree-sha1 = "36d8b4b899628fb92c2749eb488d884a926614d3" @@ -2027,15 +2001,10 @@ git-tree-sha1 = "1101cd475833706e4d0e7b122218257178f48f34" uuid = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d" version = "2.4.0" -[[deps.Primes]] -deps = ["IntegerMathUtils"] -git-tree-sha1 = "cb420f77dc474d23ee47ca8d14c90810cafe69e7" -uuid = "27ebfcd6-29c5-5fa9-bf4b-fb8fc14df3ae" -version = "0.5.6" - [[deps.Printf]] deps = ["Unicode"] uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" +version = "1.11.0" [[deps.PtrArrays]] git-tree-sha1 = "77a42d78b6a92df47ab37e177b2deac405e1c88f" @@ -2079,12 +2048,14 @@ version = "2.11.1" Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" [[deps.REPL]] -deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] +deps = ["InteractiveUtils", "Markdown", "Sockets", "StyledStrings", "Unicode"] uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" +version = "1.11.0" [[deps.Random]] deps = ["SHA"] uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" +version = "1.11.0" [[deps.Random123]] deps = ["Random", "RandomNumbers"] @@ -2122,9 +2093,9 @@ version = "0.6.12" [[deps.RecursiveArrayTools]] deps = ["Adapt", "ArrayInterface", "DocStringExtensions", "GPUArraysCore", "IteratorInterfaceExtensions", "LinearAlgebra", "RecipesBase", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface", "Tables"] -git-tree-sha1 = "6f4dca5fd8e97087a76b7ab8384d1c3086ace0b7" +git-tree-sha1 = "32f824db4e5bab64e25a12b22483a30a6b813d08" uuid = "731186ca-8d62-57ce-b412-fbd966d074cd" -version = "3.27.3" +version = "3.27.4" [deps.RecursiveArrayTools.extensions] RecursiveArrayToolsFastBroadcastExt = "FastBroadcast" @@ -2133,6 +2104,7 @@ version = "3.27.3" RecursiveArrayToolsMonteCarloMeasurementsExt = "MonteCarloMeasurements" RecursiveArrayToolsReverseDiffExt = ["ReverseDiff", "Zygote"] RecursiveArrayToolsSparseArraysExt = ["SparseArrays"] + RecursiveArrayToolsStructArraysExt = "StructArrays" RecursiveArrayToolsTrackerExt = "Tracker" RecursiveArrayToolsZygoteExt = "Zygote" @@ -2143,6 +2115,7 @@ version = "3.27.3" MonteCarloMeasurements = "0987c9cc-fe09-11e8-30f0-b96dd679fdca" ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + StructArrays = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" @@ -2189,9 +2162,9 @@ version = "1.1.1" [[deps.Revise]] deps = ["CodeTracking", "Distributed", "FileWatching", "JuliaInterpreter", "LibGit2", "LoweredCodeUtils", "OrderedCollections", "REPL", "Requires", "UUIDs", "Unicode"] -git-tree-sha1 = "7f4228017b83c66bd6aa4fddeb170ce487e53bc7" +git-tree-sha1 = "470f48c9c4ea2170fd4d0f8eb5118327aada22f5" uuid = "295af30f-e4ad-537b-8983-00126c2a3abe" -version = "3.6.2" +version = "3.6.4" [[deps.Rmath]] deps = ["Random", "Rmath_jll"] @@ -2205,16 +2178,6 @@ git-tree-sha1 = "58cdd8fb2201a6267e1db87ff148dd6c1dbd8ad8" uuid = "f50d1b31-88e8-58de-be2c-1cc44531875f" version = "0.5.1+0" -[[deps.RootedTrees]] -deps = ["LaTeXStrings", "Latexify", "LinearAlgebra", "Preferences", "RecipesBase", "Requires"] -git-tree-sha1 = "c0c464d3063e46e4128d21fd677ca575ace44fdc" -uuid = "47965b36-3f3e-11e9-0dcf-4570dfd42a8c" -version = "2.23.1" -weakdeps = ["Plots"] - - [deps.RootedTrees.extensions] - PlotsExt = "Plots" - [[deps.RuntimeGeneratedFunctions]] deps = ["ExprTools", "SHA", "Serialization"] git-tree-sha1 = "04c968137612c4a5629fa531334bb81ad5680f00" @@ -2303,9 +2266,9 @@ version = "0.1.8" [[deps.SciMLBase]] deps = ["ADTypes", "Accessors", "ArrayInterface", "CommonSolve", "ConstructionBase", "Distributed", "DocStringExtensions", "EnumX", "Expronicon", "FunctionWrappersWrappers", "IteratorInterfaceExtensions", "LinearAlgebra", "Logging", "Markdown", "PrecompileTools", "Preferences", "Printf", "RecipesBase", "RecursiveArrayTools", "Reexport", "RuntimeGeneratedFunctions", "SciMLOperators", "SciMLStructures", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface"] -git-tree-sha1 = "f9195449e0ae7e8daf9d609c9619ecfc2369f62c" +git-tree-sha1 = "6f156f48d3603e8023e59917547b141218f2656d" uuid = "0bca4576-84f4-4d90-8ffe-ffa030f20462" -version = "2.60.0" +version = "2.64.0" [deps.SciMLBase.extensions] SciMLBaseChainRulesCoreExt = "ChainRulesCore" @@ -2345,9 +2308,9 @@ weakdeps = ["SparseArrays", "StaticArraysCore"] [[deps.SciMLStructures]] deps = ["ArrayInterface"] -git-tree-sha1 = "25514a6f200219cd1073e4ff23a6324e4a7efe64" +git-tree-sha1 = "0444a37a25fab98adbd90baa806ee492a3af133a" uuid = "53ae85a6-f571-4167-b2af-e1d143709226" -version = "1.5.0" +version = "1.6.1" [[deps.Scratch]] deps = ["Dates"] @@ -2363,6 +2326,7 @@ version = "1.4.7" [[deps.Serialization]] uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" +version = "1.11.0" [[deps.Setfield]] deps = ["ConstructionBase", "Future", "MacroTools", "StaticArraysCore"] @@ -2373,6 +2337,7 @@ version = "1.1.1" [[deps.SharedArrays]] deps = ["Distributed", "Mmap", "Random", "Serialization"] uuid = "1a1011a3-84de-559e-8e89-a11a2f7dc383" +version = "1.11.0" [[deps.Showoff]] deps = ["Dates", "Grisu"] @@ -2416,6 +2381,7 @@ version = "1.1.0" [[deps.Sockets]] uuid = "6462fe0b-24de-5631-8697-dd941f90decc" +version = "1.11.0" [[deps.SoftGlobalScope]] deps = ["REPL"] @@ -2438,13 +2404,13 @@ version = "1.2.2" [[deps.SparseArrays]] deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" -version = "1.10.0" +version = "1.11.0" [[deps.SparseConnectivityTracer]] deps = ["ADTypes", "DocStringExtensions", "FillArrays", "LinearAlgebra", "Random", "SparseArrays"] -git-tree-sha1 = "6914df6005bab9940e2a96879a97a43e1fb1ce78" +git-tree-sha1 = "010b3c44301805d1ede9159f449a351d61172aa6" uuid = "9f842d2f-2579-4b1d-911e-f412cf18a3f5" -version = "0.6.8" +version = "0.6.9" [deps.SparseConnectivityTracer.extensions] SparseConnectivityTracerDataInterpolationsExt = "DataInterpolations" @@ -2546,9 +2512,14 @@ uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" version = "1.4.3" [[deps.Statistics]] -deps = ["LinearAlgebra", "SparseArrays"] +deps = ["LinearAlgebra"] +git-tree-sha1 = "ae3bb1eb3bba077cd276bc5cfc337cc65c3075c0" uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" -version = "1.10.0" +version = "1.11.1" +weakdeps = ["SparseArrays"] + + [deps.Statistics.extensions] + SparseArraysExt = ["SparseArrays"] [[deps.StatsAPI]] deps = ["LinearAlgebra"] @@ -2581,9 +2552,9 @@ version = "2.4.1" [[deps.StochasticDiffEq]] deps = ["Adapt", "ArrayInterface", "DataStructures", "DiffEqBase", "DiffEqNoiseProcess", "DocStringExtensions", "FastPower", "FiniteDiff", "ForwardDiff", "JumpProcesses", "LevyArea", "LinearAlgebra", "Logging", "MuladdMacro", "NLsolve", "OrdinaryDiffEq", "Random", "RandomNumbers", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators", "SparseArrays", "SparseDiffTools", "StaticArrays", "UnPack"] -git-tree-sha1 = "b1464027197ae535fd21e0c482ba23f768be72ff" +git-tree-sha1 = "2310e4cca114797f09a4ff0a58a81278e690a584" uuid = "789caeaf-c7a9-5a7d-9973-96adeb23e2a0" -version = "6.71.0" +version = "6.71.1" [[deps.StrideArraysCore]] deps = ["ArrayInterface", "CloseOpenIntervals", "IfElse", "LayoutPointers", "LinearAlgebra", "ManualMemory", "SIMDTypes", "Static", "StaticArrayInterface", "ThreadingUtilities"] @@ -2597,6 +2568,10 @@ git-tree-sha1 = "a6b1675a536c5ad1a60e5a5153e1fee12eb146e3" uuid = "892a3eda-7b42-436c-8928-eab12a02cf0e" version = "0.4.0" +[[deps.StyledStrings]] +uuid = "f489334b-da3d-4c2e-b8f0-e476e12c162b" +version = "1.11.0" + [[deps.SuiteSparse]] deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"] uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" @@ -2604,7 +2579,7 @@ uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" [[deps.SuiteSparse_jll]] deps = ["Artifacts", "Libdl", "libblastrampoline_jll"] uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" -version = "7.2.1+1" +version = "7.7.0+0" [[deps.Sundials]] deps = ["CEnum", "DataStructures", "DiffEqBase", "Libdl", "LinearAlgebra", "Logging", "PrecompileTools", "Reexport", "SciMLBase", "SparseArrays", "Sundials_jll"] @@ -2614,9 +2589,9 @@ version = "4.26.1" [[deps.Sundials_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "SuiteSparse_jll", "libblastrampoline_jll"] -git-tree-sha1 = "ba4d38faeb62de7ef47155ed321dce40a549c305" +git-tree-sha1 = "91db7ed92c66f81435fe880947171f1212936b14" uuid = "fb77eaff-e24c-56d4-86b1-d163f2edb164" -version = "5.2.2+0" +version = "5.2.3+0" [[deps.SymbolicIndexingInterface]] deps = ["Accessors", "ArrayInterface", "RuntimeGeneratedFunctions", "StaticArraysCore"] @@ -2624,48 +2599,6 @@ git-tree-sha1 = "6c6761e08bf5a270905cdd065be633abfa1b155b" uuid = "2efcf032-c050-4f8e-a9bb-153293bab1f5" version = "0.3.35" -[[deps.SymbolicLimits]] -deps = ["SymbolicUtils"] -git-tree-sha1 = "fabf4650afe966a2ba646cabd924c3fd43577fc3" -uuid = "19f23fe9-fdab-4a78-91af-e7b7767979c3" -version = "0.2.2" - -[[deps.SymbolicUtils]] -deps = ["AbstractTrees", "ArrayInterface", "Bijections", "ChainRulesCore", "Combinatorics", "ConstructionBase", "DataStructures", "DocStringExtensions", "DynamicPolynomials", "IfElse", "LinearAlgebra", "MultivariatePolynomials", "NaNMath", "Setfield", "SparseArrays", "SpecialFunctions", "StaticArrays", "SymbolicIndexingInterface", "TermInterface", "TimerOutputs", "Unityper"] -git-tree-sha1 = "04e9157537ba51dad58336976f8d04b9ab7122f0" -uuid = "d1185830-fcd6-423d-90d6-eec64667417b" -version = "3.7.2" - - [deps.SymbolicUtils.extensions] - SymbolicUtilsLabelledArraysExt = "LabelledArrays" - SymbolicUtilsReverseDiffExt = "ReverseDiff" - - [deps.SymbolicUtils.weakdeps] - LabelledArrays = "2ee39098-c373-598a-b85f-a56591580800" - ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" - -[[deps.Symbolics]] -deps = ["ADTypes", "ArrayInterface", "Bijections", "CommonWorldInvalidations", "ConstructionBase", "DataStructures", "DiffRules", "Distributions", "DocStringExtensions", "DomainSets", "DynamicPolynomials", "IfElse", "LaTeXStrings", "Latexify", "Libdl", "LinearAlgebra", "LogExpFunctions", "MacroTools", "Markdown", "NaNMath", "PrecompileTools", "Primes", "RecipesBase", "Reexport", "RuntimeGeneratedFunctions", "SciMLBase", "Setfield", "SparseArrays", "SpecialFunctions", "StaticArraysCore", "SymbolicIndexingInterface", "SymbolicLimits", "SymbolicUtils", "TermInterface"] -git-tree-sha1 = "24e006074ef13894ed23d006f55e6082998c9035" -uuid = "0c5d862f-8b57-4792-8d23-62f2024744c7" -version = "6.19.0" - - [deps.Symbolics.extensions] - SymbolicsForwardDiffExt = "ForwardDiff" - SymbolicsGroebnerExt = "Groebner" - SymbolicsLuxExt = "Lux" - SymbolicsNemoExt = "Nemo" - SymbolicsPreallocationToolsExt = ["PreallocationTools", "ForwardDiff"] - SymbolicsSymPyExt = "SymPy" - - [deps.Symbolics.weakdeps] - ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" - Groebner = "0b43b601-686d-58a3-8a1c-6623616c7cd4" - Lux = "b2108857-7c20-44ae-9111-449ecde12c47" - Nemo = "2edaba10-b0f1-5616-af89-8c11ac63239a" - PreallocationTools = "d236fae5-4411-538c-8e31-a6e3d9e00b46" - SymPy = "24249f21-da20-56a4-8eb1-6a02cf4ae2e6" - [[deps.TOML]] deps = ["Dates"] uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" @@ -2694,14 +2627,10 @@ git-tree-sha1 = "1feb45f88d133a655e001435632f019a9a1bcdb6" uuid = "62fd8b95-f654-4bbd-a8a5-9c27f68ccd50" version = "0.1.1" -[[deps.TermInterface]] -git-tree-sha1 = "d673e0aca9e46a2f63720201f55cc7b3e7169b16" -uuid = "8ea1fca8-c5ef-4a55-8b96-4e9afe9c9a3c" -version = "2.0.0" - [[deps.Test]] deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" +version = "1.11.0" [[deps.ThreadingUtilities]] deps = ["ManualMemory"] @@ -2745,6 +2674,7 @@ version = "1.5.1" [[deps.UUIDs]] deps = ["Random", "SHA"] uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" +version = "1.11.0" [[deps.UnPack]] git-tree-sha1 = "387c1f73762231e86e0c9c5443ce3b4a0a9a0c2b" @@ -2753,6 +2683,7 @@ version = "1.0.2" [[deps.Unicode]] uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" +version = "1.11.0" [[deps.UnicodeFun]] deps = ["REPL"] @@ -2777,12 +2708,6 @@ git-tree-sha1 = "975c354fcd5f7e1ddcc1f1a23e6e091d99e99bc8" uuid = "45397f5d-5981-4c77-b2b3-fc36d6e9b728" version = "1.6.4" -[[deps.Unityper]] -deps = ["ConstructionBase"] -git-tree-sha1 = "25008b734a03736c41e2a7dc314ecb95bd6bbdb0" -uuid = "a7c27f48-0311-42f6-a7f8-2c11e75eb415" -version = "0.1.6" - [[deps.Unzip]] git-tree-sha1 = "ca0969166a028236229f63514992fc073799bb78" uuid = "41fe7b60-77ed-43a1-b4f0-825fd5a5650d" @@ -2843,9 +2768,9 @@ version = "1.6.0" [[deps.Widgets]] deps = ["Colors", "Dates", "Observables", "OrderedCollections"] -git-tree-sha1 = "fcdae142c1cfc7d89de2d11e08721d0f2f86c98a" +git-tree-sha1 = "e9aeb174f95385de31e70bd15fa066a505ea82b9" uuid = "cc8bc4a8-27d6-5769-a93b-9d913e69aa62" -version = "0.6.6" +version = "0.6.7" [[deps.WoodburyMatrices]] deps = ["LinearAlgebra", "SparseArrays"] @@ -2860,15 +2785,15 @@ version = "1.6.1" [[deps.XML2_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Zlib_jll"] -git-tree-sha1 = "6a451c6f33a176150f315726eba8b92fbfdb9ae7" +git-tree-sha1 = "a2fccc6559132927d4c5dc183e3e01048c6dcbd6" uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" -version = "2.13.4+0" +version = "2.13.5+0" [[deps.XSLT_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgcrypt_jll", "Libgpg_error_jll", "Libiconv_jll", "XML2_jll", "Zlib_jll"] -git-tree-sha1 = "a54ee957f4c86b526460a720dbc882fa5edcbefc" +git-tree-sha1 = "7d1671acbe47ac88e981868a078bd6b4e27c5191" uuid = "aed1982a-8fda-507f-9586-7b0439959a61" -version = "1.1.41+0" +version = "1.1.42+0" [[deps.XZ_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] @@ -2896,9 +2821,9 @@ version = "1.8.6+0" [[deps.Xorg_libXau_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "6035850dcc70518ca32f012e46015b9beeda49d8" +git-tree-sha1 = "2b0e27d52ec9d8d483e2ca0b72b3cb1a8df5c27a" uuid = "0c0b7dd1-d40b-584c-a123-a41640f87eec" -version = "1.0.11+0" +version = "1.0.11+1" [[deps.Xorg_libXcursor_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXfixes_jll", "Xorg_libXrender_jll"] @@ -2908,9 +2833,9 @@ version = "1.2.0+4" [[deps.Xorg_libXdmcp_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "34d526d318358a859d7de23da945578e8e8727b7" +git-tree-sha1 = "02054ee01980c90297412e4c809c8694d7323af3" uuid = "a3789734-cfe1-5b06-b2d0-1dd0d9d62d05" -version = "1.1.4+0" +version = "1.1.4+1" [[deps.Xorg_libXext_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] @@ -2950,9 +2875,9 @@ version = "0.9.11+0" [[deps.Xorg_libpthread_stubs_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "8fdda4c692503d44d04a0603d9ac0982054635f9" +git-tree-sha1 = "fee57a273563e273f0f53275101cd41a8153517a" uuid = "14d82f49-176c-5ed1-bb49-ad3f5cbd8c74" -version = "0.1.1+0" +version = "0.1.1+1" [[deps.Xorg_libxcb_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "XSLT_jll", "Xorg_libXau_jll", "Xorg_libXdmcp_jll", "Xorg_libpthread_stubs_jll"] @@ -3016,9 +2941,9 @@ version = "2.39.0+0" [[deps.Xorg_xtrans_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "e92a1a012a10506618f10b7047e478403a046c77" +git-tree-sha1 = "b9ead2d2bdb27330545eb14234a2e300da61232e" uuid = "c5fb5394-a638-5e4d-96e5-b29de1b5cf10" -version = "1.5.0+0" +version = "1.5.0+1" [[deps.ZMQ]] deps = ["FileWatching", "PrecompileTools", "Sockets", "ZeroMQ_jll"] @@ -3051,9 +2976,9 @@ version = "3.2.9+0" [[deps.fzf_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "936081b536ae4aa65415d869287d43ef3cb576b2" +git-tree-sha1 = "6e50f145003024df4f5cb96c7fce79466741d601" uuid = "214eeab7-80f7-51ab-84ad-2988db7cef09" -version = "0.53.0+0" +version = "0.56.3+0" [[deps.gperf_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -3129,7 +3054,7 @@ version = "1.1.6+0" [[deps.nghttp2_jll]] deps = ["Artifacts", "Libdl"] uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" -version = "1.52.0+1" +version = "1.59.0+0" [[deps.oneTBB_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] diff --git a/Project.toml b/Project.toml index 3103999..0882256 100644 --- a/Project.toml +++ b/Project.toml @@ -17,4 +17,4 @@ SatelliteToolbox = "6ac157d9-b43d-51bb-8fab-48bf53814f4a" Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" [compat] -julia = "1.10" +julia = "1.11" diff --git a/_brand.yml b/_brand.yml new file mode 100644 index 0000000..4426625 --- /dev/null +++ b/_brand.yml @@ -0,0 +1,5 @@ +typography: + fonts: + - family: JetBrains Mono + source: google + monospace: JetBrains Mono \ No newline at end of file diff --git a/posts/2021-04-14-iss-eclipse-determination/index.qmd b/posts/2021-04-14-iss-eclipse-determination/index.qmd index 469e000..74f988e 100644 --- a/posts/2021-04-14-iss-eclipse-determination/index.qmd +++ b/posts/2021-04-14-iss-eclipse-determination/index.qmd @@ -19,7 +19,6 @@ format: html: code-tools: true code-fold: false -jupyter: julia-1.10 freeze: true --- diff --git a/styles.css b/styles.css index 2ddf50c..c6ae423 100644 --- a/styles.css +++ b/styles.css @@ -1 +1,4 @@ -/* css styles */ +code { + font-family: "JetBrains Mono", monospace; + font-feature-settings: "liga" 1, "calt" 1; +} \ No newline at end of file