.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "examples_gallery/advanced_pdes/pde_1d_class.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code. .. rst-class:: sphx-glr-example-title .. _sphx_glr_examples_gallery_advanced_pdes_pde_1d_class.py: 1D problem - Using custom class =============================== This example implements a PDE that is only defined in one dimension. Here, we chose the `Korteweg-de Vries equation `_, given by .. math:: \partial_t \phi = 6 \phi \partial_x \phi - \partial_x^3 \phi which we implement using a custom PDE class below. .. GENERATED FROM PYTHON SOURCE LINES 14-41 .. image-sg:: /examples_gallery/advanced_pdes/images/sphx_glr_pde_1d_class_001.png :alt: pde 1d class :srcset: /examples_gallery/advanced_pdes/images/sphx_glr_pde_1d_class_001.png :class: sphx-glr-single-img .. code-block:: Python from math import pi from pde import CartesianGrid, MemoryStorage, PDEBase, ScalarField, plot_kymograph class KortewegDeVriesPDE(PDEBase): """Korteweg-de Vries equation.""" def evolution_rate(self, state, t=0): """Implement the python version of the evolution equation.""" assert state.grid.dim == 1 # ensure the state is one-dimensional grad_x = state.gradient("auto_periodic_neumann")[0] return 6 * state * grad_x - grad_x.laplace("auto_periodic_neumann") # initialize the equation and the space grid = CartesianGrid([[0, 2 * pi]], [32], periodic=True) state = ScalarField.from_expression(grid, "sin(x)") # solve the equation and store the trajectory storage = MemoryStorage() eq = KortewegDeVriesPDE() eq.solve(state, t_range=3, solver="scipy", tracker=storage.tracker(0.1)) # plot the trajectory as a space-time plot plot_kymograph(storage) .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 1.928 seconds) .. _sphx_glr_download_examples_gallery_advanced_pdes_pde_1d_class.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: pde_1d_class.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: pde_1d_class.py ` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: pde_1d_class.zip `