diff --git a/docs/examples/solver_showcase_2d.ipynb b/docs/examples/solver_showcase_2d.ipynb
index 47f6533..26a7fed 100644
--- a/docs/examples/solver_showcase_2d.ipynb
+++ b/docs/examples/solver_showcase_2d.ipynb
@@ -60,14 +60,14 @@
"name": "stderr",
"output_type": "stream",
"text": [
- "2024-04-08 15:33:37.695864: W external/xla/xla/service/gpu/nvptx_compiler.cc:679] The NVIDIA driver's CUDA version is 12.2 which is older than the ptxas CUDA version (12.3.52). Because the driver is older than the ptxas version, XLA is disabling parallel compilation, which may slow down compilation. You should update your NVIDIA driver or use the NVIDIA-provided CUDA forward compatibility packages.\n"
+ "2024-10-22 17:37:14.817038: W external/xla/xla/service/gpu/nvptx_compiler.cc:836] The NVIDIA driver's CUDA version is 12.2 which is older than the PTX compiler version (12.6.68). Because the driver is older than the PTX compiler version, XLA is disabling parallel compilation, which may slow down compilation. You should update your NVIDIA driver or use the NVIDIA-provided CUDA forward compatibility packages.\n"
]
},
{
"data": {
"text/html": [
""
@@ -1553,7 +1637,7 @@
"data": {
"text/html": [
""
@@ -2462,7 +2633,7 @@
"data": {
"text/html": [
""
@@ -3386,7 +3631,7 @@
"data": {
"text/html": [
""
@@ -4618,7 +4955,7 @@
"data": {
"text/html": [
""
@@ -8799,7 +9194,7 @@
"data": {
"text/html": [
""
@@ -9700,7 +10152,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "### Burgers"
+ "### Burgers (non-conservative)"
]
},
{
@@ -9708,20 +10160,20 @@
"metadata": {},
"source": [
"$$\n",
- "\\frac{\\partial u}{\\partial t} + \\frac{1}{2} \\nabla \\cdot \\left( u \\otimes u \\right) = \\nu \\Delta u\n",
+ "\\frac{\\partial u}{\\partial t} + (u \\cdot \\nabla) u = \\nu \\Delta u\n",
"$$"
]
},
{
"cell_type": "code",
- "execution_count": 10,
+ "execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
@@ -10563,7 +11028,7 @@
""
]
},
- "execution_count": 10,
+ "execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
@@ -10572,7 +11037,7 @@
"DOMAIN_EXTENT = 1.0\n",
"NUM_POINTS = 100\n",
"DT = 0.01\n",
- "NU = 0.01\n",
+ "NU = 0.02\n",
"\n",
"burgers_stepper = ex.stepper.Burgers(2, DOMAIN_EXTENT, NUM_POINTS, DT, diffusivity=NU)\n",
"\n",
@@ -10599,6 +11064,911 @@
"HTML(burgers_ani.to_html5_video())"
]
},
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Burgers (conservative)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "$$\n",
+ "\\frac{\\partial u}{\\partial t} + \\frac{1}{2} \\nabla \\cdot \\left( u \\otimes u \\right) = \\nu \\Delta u\n",
+ "$$"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ ""
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 10,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "DOMAIN_EXTENT = 1.0\n",
+ "NUM_POINTS = 100\n",
+ "DT = 0.01\n",
+ "NU = 0.02\n",
+ "\n",
+ "burgers_stepper_conservative = ex.stepper.Burgers(\n",
+ " 2, DOMAIN_EXTENT, NUM_POINTS, DT, diffusivity=NU, conservative=True\n",
+ ")\n",
+ "\n",
+ "grid = ex.make_grid(2, DOMAIN_EXTENT, NUM_POINTS)\n",
+ "\n",
+ "# Burgers has two channels!\n",
+ "u_0 = jnp.concatenate(\n",
+ " [\n",
+ " jnp.sin(2 * jnp.pi * grid[0:1] / DOMAIN_EXTENT)\n",
+ " * jnp.cos(2 * 2 * jnp.pi * grid[1:2] / DOMAIN_EXTENT),\n",
+ " jnp.cos(2 * jnp.pi * grid[0:1] / DOMAIN_EXTENT)\n",
+ " * jnp.sin(2 * 2 * jnp.pi * grid[1:2] / DOMAIN_EXTENT),\n",
+ " ]\n",
+ ")\n",
+ "\n",
+ "burgers_trj_conservative = ex.rollout(\n",
+ " burgers_stepper_conservative, 40, include_init=True\n",
+ ")(u_0)\n",
+ "\n",
+ "burgers_ani_conservative = ex.viz.animate_state_2d_facet(\n",
+ " burgers_trj_conservative,\n",
+ " grid=(1, 2),\n",
+ " figsize=(7, 3),\n",
+ ")\n",
+ "\n",
+ "HTML(burgers_ani_conservative.to_html5_video())"
+ ]
+ },
{
"cell_type": "markdown",
"metadata": {},
@@ -10626,7 +11996,7 @@
"data": {
"text/html": [
""
@@ -11728,14 +13170,14 @@
},
{
"cell_type": "code",
- "execution_count": 13,
+ "execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
@@ -15501,7 +16951,7 @@
""
]
},
- "execution_count": 13,
+ "execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
@@ -15548,14 +16998,14 @@
},
{
"cell_type": "code",
- "execution_count": 22,
+ "execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
@@ -19025,7 +19409,7 @@
""
]
},
- "execution_count": 22,
+ "execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
@@ -19034,6 +19418,7 @@
"DOMAIN_EXTENT = 20.0\n",
"NUM_POINTS = 100\n",
"DT = 0.05\n",
+ "HYPER_NU = 0.03\n",
"\n",
"kdv_stepper = ex.stepper.KortewegDeVries(\n",
" 2,\n",
@@ -19041,6 +19426,7 @@
" NUM_POINTS,\n",
" DT,\n",
" single_channel=True,\n",
+ " hyper_diffusivity=HYPER_NU,\n",
")\n",
"\n",
"grid = ex.make_grid(2, DOMAIN_EXTENT, NUM_POINTS)\n",
@@ -19075,14 +19461,14 @@
},
{
"cell_type": "code",
- "execution_count": 35,
+ "execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
@@ -20167,7 +20620,7 @@
""
]
},
- "execution_count": 35,
+ "execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
@@ -20218,14 +20671,14 @@
},
{
"cell_type": "code",
- "execution_count": 33,
+ "execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
@@ -24435,7 +26421,7 @@
""
]
},
- "execution_count": 33,
+ "execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
@@ -24444,7 +26430,7 @@
"DOMAIN_EXTENT = 2 * jnp.pi\n",
"NUM_POINTS = 100\n",
"DT = 0.5\n",
- "NU = 0.001\n",
+ "NU = 0.01\n",
"DRAG = -0.1\n",
"INJECTION_MODE = 4\n",
"INJECTION_SCALE = 1.0\n",
@@ -24505,14 +26491,14 @@
},
{
"cell_type": "code",
- "execution_count": 41,
+ "execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
@@ -25792,7 +27849,7 @@
""
]
},
- "execution_count": 41,
+ "execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
@@ -25804,7 +27861,7 @@
"DIFFUSIVITY = 0.01\n",
"REACTIVITY = 10.0\n",
"\n",
- "fisher_kpp_stepper = ex.reaction.FisherKPP(\n",
+ "fisher_kpp_stepper = ex.stepper.reaction.FisherKPP(\n",
" 2, DOMAIN_EXTENT, NUM_POINTS, DT, diffusivity=DIFFUSIVITY, reactivity=REACTIVITY\n",
")\n",
"\n",
@@ -25839,14 +27896,14 @@
},
{
"cell_type": "code",
- "execution_count": 44,
+ "execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
@@ -26522,7 +28655,7 @@
""
]
},
- "execution_count": 44,
+ "execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
@@ -26537,7 +28670,7 @@
"KILL_RATE = 0.06\n",
"\n",
"gray_scott_stepper = ex.RepeatedStepper(\n",
- " ex.reaction.GrayScott(\n",
+ " ex.stepper.reaction.GrayScott(\n",
" 2,\n",
" DOMAIN_EXTENT,\n",
" NUM_POINTS,\n",
@@ -26586,14 +28719,14 @@
},
{
"cell_type": "code",
- "execution_count": 46,
+ "execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
@@ -32161,7 +34378,7 @@
""
]
},
- "execution_count": 46,
+ "execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
@@ -32172,7 +34389,7 @@
"DT = 1.0\n",
"\n",
"swift_hohenberg_stepper = ex.RepeatedStepper(\n",
- " ex.reaction.SwiftHohenberg(2, DOMAIN_EXTENT, NUM_POINTS, DT / 10),\n",
+ " ex.stepper.reaction.SwiftHohenberg(2, DOMAIN_EXTENT, NUM_POINTS, DT / 10),\n",
" 10,\n",
")\n",
"\n",
@@ -32196,14 +34413,14 @@
},
{
"cell_type": "code",
- "execution_count": 48,
+ "execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
@@ -46380,7 +47616,7 @@
""
]
},
- "execution_count": 48,
+ "execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
@@ -46395,6 +47631,7 @@
" dispersion_trj,\n",
" hyper_diffusion_trj,\n",
" burgers_trj,\n",
+ " burgers_trj_conservative,\n",
" single_channel_burgers_trj,\n",
" kdv_trj,\n",
" ks_trj,\n",
@@ -46418,6 +47655,8 @@
" \"Hyper-Diffusion\",\n",
" \"Burgers channel 1\",\n",
" \"Burgers channel 2\",\n",
+ " \"Burgers (Conservative)\\nchannel 1\",\n",
+ " \"Burgers (Conservative)\\nchannel 2\",\n",
" \"Burgers single channel\",\n",
" \"KdV\",\n",
" \"KS\",\n",
@@ -46428,8 +47667,9 @@
" \"Gray-Scott 2\",\n",
" \"Swift-Hohenberg\",\n",
" \"\",\n",
+ " \"\",\n",
" ],\n",
- " grid=(3, 6),\n",
+ " grid=(3, 7),\n",
" figsize=(17, 10),\n",
")\n",
"\n",
@@ -46460,7 +47700,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.10.13"
+ "version": "3.10.14"
}
},
"nbformat": 4,