[![binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gl/rubendibattista%2Fjosiepy/master/?filepath=examples%2F001_Getting_Started.ipynb) # Getting started with `josiepy` ## A Python framework to simulate Partial Differential Equations focused on usability ### (without sacrifying performances) Ruben Di Battista
@rdbisme ## Background ---------------------- ### M. Massot Research Team #### Mathematical modeling - Mathematical modeling of two-phase injection in rocket engines - Mathematical modeling of plasma flows for heliophysics and hall thrusters #### Numerical Calculus for High Performance Computing (HPC) - Development of numerical schemes and algorithms adapted to HPC ## `canoP` ### A C++ wrapper on `p4est`, a quad/octo-trees for parallel AMR computation, to simulate PDEs w/ AMR - C++ is notoriously hard to master - `p4est` is an advanced library w/ features not immediately needed when exploring numerical schemes ## Motivations -------------------- An easy to use playground to easily implement numerical schemes on 1D, 2D (and maybe 3D in the future) structured (and maybe unstructured and non-conformal meshes... dreaming is still free 😇) meshes, in Python ## Design Choices -------------------------- - Use Python instead of a Domain Specific Language (DSL), like the one OpenFOAM uses, or another scripting language, like `lua` in `canoP` to describe your case configuration. "You code your case configuration" - Modern Python (Python >= 3.7) features allows static checking (through the usage of type hinting) of the code that predates some advantages of the compiled languages - The `numpy` library and its API allows to write algorithms once while being able to run them on different architectures and different programming paradigms - CPU Shared memory ([numpy](https://numpy.org) + OpenMP-enabled BLAS library) - CPU distributed memory ([Dask](https://dask.org)) - Nvidia GPUs with CUDA ([cupy](https://cupy.chainer.org)) - (Soon) AMD GPUs with HIP ([cupy](https://cupy.chainer.org)) - ... FPGA? Anyone? It's a cool project too... Everything mostly at the same computational speed as C and C++, or faster (GPU for example) ## Numpy for `josiepy` 101 ### Vectorized operations What you would generally do in a C++-like compiled code is: ``` for( cell : mesh.cells() ) { apply_compute_kernel(cell) } ``` What we generally will do in `numpy` is operating on an array containing **all** the cells values at the same time. Let's imagine we have the velocity vector stored in an array of size `$ N_\text{cells} \times \text{dim}$, where $\text{dim} $` is the dimensionality of the problem (e.g. 2D) ```python cell_values = np.random.random((30, 2)) U = cell_values[:, 0] V = cell_values[:, 1] ``` Let's imagine now to have to compute a normal product between all the velocity values in each cell, and a singular normal vector ```python normal = np.array([1, 0]) ``` What we could do is repeating the `normal` array `$ N_\text{cells} $` times and multipliying it by `cell_values`... ... but there's a better way! The operation we want to do is ```math \left\{\mathbf{U}\right\} \cdot \mathbf{n} = U_{ij}n_j ``` ```python normal_velocities = np.einsum("ij,j->i", cell_values, normal) print(normal_velocities.shape) np.array_equal(U, normal_velocities) ``` (30,) True `numpy.einsum` is an implementation of the Einstein's tensor summation on steroids 💪. You specify the input vectors dimensions and the output dimension you want to achieve, and it figures it out automatically. Basically: ```math U_{ij} n_j \rightarrow u_i ``` ``` np.einsum("ij,j->i", cell_values, normal) ``` * Repeated indices on the inputs are summed as a result if they're not present in the result (after the `->`): `cell_values[i][0] * normal[0] + cell_values[i][1] * normal[1]` `np.einsum` avoids memory copies and if we provide the `optimize=True` keyword argument ```python A = np.random.random((1000, 1000)) B = np.random.random((1000, 1000)) %timeit np.einsum("ij,ij->", A, B) ``` 799 µs ± 4.62 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each) ```python A = np.random.random((1000, 1000)) B = np.random.random((1000, 1000)) %timeit np.einsum("ij,ij->", A, B, optimize=True) ``` 531 µs ± 43 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each) it is gonna exploit parallelization of operations like `np.dot` and `np.tensordot` that are parallelized natively with OpenMP if the BLAS library which `numpy` is compiled on allows it (hint: the classical `pip install numpy` pre-compiled wheel, does not) ### Vectorized conditionals Sometimes, for example to initialize the domain at the beginning of a simulation, or for an upwind scheme, you need to apply some conditionals of the type: ``` for (cell : mesh.cells()) { x, y = cell.centroid() if(x > 0.5) right_state(cell) else left_state(cell) } ``` What you would do in vectorized form, is: ```python values = np.zeros(30) x = np.linspace(0, 1, np.size(values)) print(values) ``` [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.] ```python values[np.where(x > 0.5)] = 1 print(values) ``` [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.] ## Basics of `josiepy` ### Problem statement ```math \partial_t \mathbf{q} + \nabla \cdot \left(\underline{\underline{\mathbf{F}}}(\mathbf{q}) + \underline{\underline{\underline{\underline{D(\mathbf{q})}}}} \cdot \nabla \mathbf{q} \right) + \underline{\underline{\underline{\mathbf{B}(\mathbf{q})}}} \cdot \nabla\mathbf{q} = \mathbf{s}(\mathbf{q}) ``` ```math \partial_t q_p + \partial_{x_r} \left(F_{pr}(q_p) + D_{pqrs}(q_p)\partial_{x_s}q_q\right) + B_{pqr}\partial_{x_r}q_q = s_p(q_p) ``` ### The `State` object ```math \partial_t \mathbf{q} + \nabla \cdot \left(\underline{\underline{\mathbf{F}}}(\mathbf{q}) + \underline{\underline{\underline{\underline{D(\mathbf{q})}}}} \cdot \nabla \mathbf{q} \right) + \underline{\underline{\underline{\mathbf{B}(\mathbf{q})}}} \cdot \nabla\mathbf{q} = \mathbf{s}(\mathbf{q}) ``` Represents the `$ \mathbf{q} $` ```python from josie.state import State from josie.fluid.fields import FluidFields ``` ```python class EulerFields(FluidFields): rho = 0 rhoU = 1 rhoV = 2 rhoE = 3 U = 4 V = 5 rhoe = 6 p = 7 c = 8 ``` ```python class EulerState(State): fields = EulerFields rnd_state = np.random.random(len(EulerFields)).view(EulerState) print(rnd_state) ``` [0.78036773 0.8141633 0.48401207 0.4379539 0.55518386 0.39926222 0.59759767 0.93960397 0.64511782] ```python U1 = rnd_state[EulerFields.U] U2 = rnd_state[4] U3 = rnd_state[-5] U4 = rnd_state[rnd_state.fields.U] assert np.array_equal(U1, U2) and np.array_equal(U2, U3) and np.array_equal(U3, U4) ``` `State` can be multidimensional! (e.g. a 2D 100x100 mesh, each cell containing an Euler state) ```python rnd_state = np.random.random((100, 100, len(EulerFields))) ``` ```python U = rnd_state[..., EulerFields.U] print(U.shape) ``` (100, 100) The `Ellipsis` object (`...`) allows to index on the last axis, whatever dimension the array is ```python rnd_state = np.random.random((100, 100, 100, len(EulerFields))) ``` ```python U = rnd_state[..., EulerFields.U] print(U.shape) ``` (100, 100, 100) Let's compute the normal velocity again... ```python UV = rnd_state[..., EulerFields.U : EulerFields.V + 1] print(UV.shape) ``` (100, 100, 100, 2) ```python U_norm = np.einsum("...ij,j->...i", UV, normal) print(U_norm.shape) assert np.array_equal(U_norm, U) ``` (100, 100, 100) ### The `Mesh` object A `mesh` object is used to create an manage a mesh. A `mesh` is built from `BoundaryCurves`: ```python from josie.boundary import Line, CircleArc left = Line([0, 0], [0, 1]) bottom = CircleArc([0, 0], [1, 0], [0.5, 0.5]) right = Line([1, 0], [1, 1]) top = Line([0, 1], [1, 1]) ``` ```python for curve in [left, bottom, right, top]: curve.plot() ``` ![png](data:image/png;base64,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 ) You can (and need to) attach `BoundaryConditions` to each `BoundaryCurve` of a domain ```python from josie.bc import Dirichlet, Neumann Q_zero = np.zeros(len(EulerState.fields)).view(EulerState) dQ_zero = Q_zero left.bc = Dirichlet(Q_zero) top.bc = Neumann(dQ_zero) bottom.bc = Dirichlet(Q_zero) right.bc = Dirichlet(Q_zero) ``` You can also provide mixed Boundary conditions per each field ```python from josie.bc import BoundaryCondition Q_bc = EulerState(rho=Dirichlet(1), rhoU=Neumann(0), rhoV=Dirichlet(1), rhoE=Dirichlet(1), rhoe=Dirichlet(3), U=Neumann(0), V=Neumann(0), p=Dirichlet(1), c=Dirichlet(10), e=Dirichlet(1)) left.bc = BoundaryCondition(Q_bc) ``` Then you can effectively generate the mesh object ```python from josie.mesh import Mesh from josie.mesh.cell import SimpleCell mesh = Mesh(left, bottom, right, top, SimpleCell) points = mesh.interpolate(20, 20) # Gen. internal points mesh.generate() # Generate connectivity ``` ```python mesh.plot() ``` ![png](data:image/png;base64,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 ) PS: You can create 1D meshes, creating a rectangular mesh with just 1 cell in the vertical direction ## The `Problem` object. ```math \partial_t \mathbf{q} + \nabla \cdot \left(\underline{\underline{\mathbf{F}}}(\mathbf{q}) + \underline{\underline{\underline{\underline{D(\mathbf{q})}}}} \cdot \nabla \mathbf{q} \right) + \underline{\underline{\underline{\mathbf{B}(\mathbf{q})}}} \cdot \nabla\mathbf{q} = \mathbf{s}(\mathbf{q}) ``` `Problem` is the "continuous" representation of our problem. It implements the `$ \mathbf{F}, \mathbf{D}, \mathbf{B}, \mathbf{s} $` operators ```python from josie.problem import Problem Problem?? ``` ```python from josie.euler.problem import EulerProblem EulerProblem?? ``` ## The `Scheme` object It represents the discrete representation of our problem, after being discretized with Finite-Volume-Method ```math V_i\partial_t \mathbf{q}_i &+ \sum_{f \in \text{faces}} \left| \mathbf{F} \cdot \hat{\mathbf{n}} \right|_f S_f + \sum_{f \in \text{faces}} \left| \left(\mathbf{D}(\mathbf{q})\cdot\nabla\mathbf{q} \right) \cdot \hat{\mathbf{n}} \right|_f S_f + \\ &+ \left<\mathbf{B}(\mathbf{q})\right>_i \cdot \sum_{f \in \text{faces}} \left| \mathbf{q}\hat{\mathbf{n}} \right|_f S_f - \left< \mathbf{s}(\mathbf{q})\right>_i V_i = \mathbf{0} ``` Schemes are organized in spatial and time schemes. ### Spatial Schemes Spatial schemes implement the different discretizations for each operators _w.r.t._ **a single cell and its neighbour, whatever that neighbour is (no knowledge of left/right, top/bottom, etc...)** ![cell_scheme](data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMS4wcmMxICgwOTk2MGQ2LCAyMDIwLTA0LTA5KSIKICAgc29kaXBvZGk6ZG9jbmFtZT0iY2VsbF9zY2hlbWUuc3ZnIgogICB2aWV3Qm94PSIwIDAgMTk3LjMzMzMzIDE0NCIKICAgaGVpZ2h0PSIxNDQiCiAgIHdpZHRoPSIxOTcuMzMzMzMiCiAgIHhtbDpzcGFjZT0icHJlc2VydmUiCiAgIGlkPSJzdmcxMDQwIgogICB2ZXJzaW9uPSIxLjEiPjxtZXRhZGF0YQogICAgIGlkPSJtZXRhZGF0YTEwNDYiPjxyZGY6UkRGPjxjYzpXb3JrCiAgICAgICAgIHJkZjphYm91dD0iIj48ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD48ZGM6dHlwZQogICAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiIC8+PGRjOnRpdGxlPjwvZGM6dGl0bGU+PC9jYzpXb3JrPjwvcmRmOlJERj48L21ldGFkYXRhPjxkZWZzCiAgICAgaWQ9ImRlZnMxMDQ0IiAvPjxzb2RpcG9kaTpuYW1lZHZpZXcKICAgICBpbmtzY2FwZTpjdXJyZW50LWxheWVyPSJnMTA0OCIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyMyIKICAgICBpbmtzY2FwZTp3aW5kb3cteD0iMCIKICAgICBpbmtzY2FwZTpjeT0iNzIiCiAgICAgaW5rc2NhcGU6Y3g9Ijk4LjY2NjY2NCIKICAgICBpbmtzY2FwZTp6b29tPSIzLjYwODEwODIiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlkPSJuYW1lZHZpZXcxMDQyIgogICAgIGlua3NjYXBlOndpbmRvdy1oZWlnaHQ9Ijk1MyIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjE2ODAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgZ3JpZHRvbGVyYW5jZT0iMTAiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBib3JkZXJvcGFjaXR5PSIxIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIgLz48ZwogICAgIHRyYW5zZm9ybT0ibWF0cml4KDEuMzMzMzMzMywwLDAsLTEuMzMzMzMzMywwLDE0NCkiCiAgICAgaW5rc2NhcGU6bGFiZWw9Imlua19leHRfWFhYWFhYIgogICAgIGlua3NjYXBlOmdyb3VwbW9kZT0ibGF5ZXIiCiAgICAgaWQ9ImcxMDQ4Ij48ZwogICAgICAgdHJhbnNmb3JtPSJzY2FsZSgwLjEpIgogICAgICAgaWQ9ImcxMDUwIj48cGF0aAogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBpZD0icGF0aDEwNTIiCiAgICAgICAgIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgICAgIGQ9Im0gODAzLjk4LDY0NS43MzggaCA2NDAgViA1LjczODI4IGwgLTQ4MCwxNTkuOTk5NzIgLTE2MCw0ODAiIC8+PHBhdGgKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgaWQ9InBhdGgxMDU0IgogICAgICAgICBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDo4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIgogICAgICAgICBkPSJNIDgwMy45OCw2NDQuMDIgSCAzLjk4MDQ3IEwgMTYzLjk4LDQuMDE5NTMgOTYzLjk4LDE2NC4wMiIgLz48cGF0aAogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBpZD0icGF0aDEwNTYiCiAgICAgICAgIHN0eWxlPSJmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOm5vbmUiCiAgICAgICAgIGQ9Im0gNDkwLjU1MSwzNzIuNzcgYyAwLDI0LjAzMSAtMzYuMDIsMjQuMDMxIC0zNi4wMiwwIDAsLTIzLjk4MSAzNi4wMiwtMjMuOTgxIDM2LjAyLDAgeiIgLz48cGF0aAogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBpZD0icGF0aDEwNTgiCiAgICAgICAgIHN0eWxlPSJmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOm5vbmUiCiAgICAgICAgIGQ9Im0gMTIwOS4xNCw0MDQuNDQ5IGMgMCwyMy45OTIgLTM2LjAyLDIzLjk5MiAtMzYuMDIsMCAwLC0yNC4wMTkgMzYuMDIsLTI0LjAxOSAzNi4wMiwwIHoiIC8+PHBhdGgKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgaWQ9InBhdGgxMDYwIgogICAgICAgICBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDo0O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIgogICAgICAgICBkPSJNIDY4MC4xOTksMzM5LjY0OCAxMDg5LjQ5LDQ5Mi4xOTEiIC8+PHBhdGgKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgaWQ9InBhdGgxMDYyIgogICAgICAgICBzdHlsZT0iZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTpub25lIgogICAgICAgICBkPSJtIDEwODkuNDksNDkyLjE5MSAtNzMuNzUsLTIuNjIxIDE2LjI5LC00My42NzIgeiIgLz48cGF0aAogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBpZD0icGF0aDEwNjQiCiAgICAgICAgIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjQ7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgICAgIGQ9Im0gMTA4OS40OSw0OTIuMTkxIC03My43NSwtMi42MjEgMTYuMjksLTQzLjY3MiB6IiAvPjxnCiAgICAgICAgIHRyYW5zZm9ybT0ic2NhbGUoMTApIgogICAgICAgICBpZD0iZzEwNjYiPjx0ZXh0CiAgICAgICAgICAgaWQ9InRleHQxMDcwIgogICAgICAgICAgIHN0eWxlPSJmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtc2l6ZTo5Ljk2MjZweDtmb250LWZhbWlseTpmLTA7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjpmLTAtMDt3cml0aW5nLW1vZGU6bHItdGI7ZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIgogICAgICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KDEsMCwwLC0xLDkyLjk5ODQsNDguNjg1MikiPjx0c3BhbgogICAgICAgICAgICAgaWQ9InRzcGFuMTA2OCIKICAgICAgICAgICAgIHk9IjAiCiAgICAgICAgICAgICB4PSIwIj7LhjwvdHNwYW4+PC90ZXh0Pjx0ZXh0CiAgICAgICAgICAgaWQ9InRleHQxMDc0IgogICAgICAgICAgIHN0eWxlPSJmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtc2l6ZTo5Ljk2MjZweDtmb250LWZhbWlseTpmLTE7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjpmLTEtMDt3cml0aW5nLW1vZGU6bHItdGI7ZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIgogICAgICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KDEsMCwwLC0xLDkyLjMwNjIxMiw0OC41NDY5MTkpIj48dHNwYW4KICAgICAgICAgICAgIGlkPSJ0c3BhbjEwNzIiCiAgICAgICAgICAgICB5PSIwIgogICAgICAgICAgICAgeD0iMCI+bjwvdHNwYW4+PC90ZXh0PjwvZz48cGF0aAogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBpZD0icGF0aDEwNzYiCiAgICAgICAgIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjIwO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIgogICAgICAgICBkPSJtIDgwMy45OCw2NDQuMDIgMTYwLC00ODAiIC8+PGcKICAgICAgICAgdHJhbnNmb3JtPSJzY2FsZSgxMCkiCiAgICAgICAgIGlkPSJnMTA3OCI+PHRleHQKICAgICAgICAgICBpZD0idGV4dDEwODIiCiAgICAgICAgICAgc3R5bGU9ImZvbnQtdmFyaWFudDpub3JtYWw7Zm9udC1zaXplOjkuOTYyNnB4O2ZvbnQtZmFtaWx5OmYtMjstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOmYtMi0wO3dyaXRpbmctbW9kZTpsci10YjtmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOm5vbmUiCiAgICAgICAgICAgdHJhbnNmb3JtPSJtYXRyaXgoMSwwLDAsLTEsOTUuNjY0NSwzMC42ODc5KSI+PHRzcGFuCiAgICAgICAgICAgICBpZD0idHNwYW4xMDgwIgogICAgICAgICAgICAgeT0iMCIKICAgICAgICAgICAgIHg9IjAiPlM8L3RzcGFuPjwvdGV4dD48dGV4dAogICAgICAgICAgIGlkPSJ0ZXh0MTA4NiIKICAgICAgICAgICBzdHlsZT0iZm9udC12YXJpYW50Om5vcm1hbDtmb250LXNpemU6Ni45NzM4cHg7Zm9udC1mYW1pbHk6Zi0zOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246Zi0zLTA7d3JpdGluZy1tb2RlOmxyLXRiO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIKICAgICAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMDEuNzczNDgsMjkuMTkzNzYpIj48dHNwYW4KICAgICAgICAgICAgIGlkPSJ0c3BhbjEwODQiCiAgICAgICAgICAgICB5PSIwIgogICAgICAgICAgICAgeD0iMCI+ZjwvdHNwYW4+PC90ZXh0PjwvZz48cGF0aAogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBpZD0icGF0aDEwODgiCiAgICAgICAgIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjQ7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgICAgIGQ9Ik0gNDc0LjIxOSwzNzIuNzcgMzY1LjM1Miw4OTAuODk4IiAvPjxwYXRoCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgIGlkPSJwYXRoMTA5MCIKICAgICAgICAgc3R5bGU9ImZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6bm9uZSIKICAgICAgICAgZD0ibSA0NzQuMjE5LDM3Mi43NyA4LjQwMiw3My4zMiAtNDUuNjMzLC05LjYxIHoiIC8+PHBhdGgKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgaWQ9InBhdGgxMDkyIgogICAgICAgICBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDo0O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIgogICAgICAgICBkPSJtIDQ3NC4yMTksMzcyLjc3IDguNDAyLDczLjMyIC00NS42MzMsLTkuNjEgeiIgLz48ZwogICAgICAgICB0cmFuc2Zvcm09InNjYWxlKDEwKSIKICAgICAgICAgaWQ9ImcxMDk0Ij48dGV4dAogICAgICAgICAgIGlkPSJ0ZXh0MTA5OCIKICAgICAgICAgICBzdHlsZT0iZm9udC12YXJpYW50Om5vcm1hbDtmb250LXNpemU6OS45NjI2cHg7Zm9udC1mYW1pbHk6Zi00Oy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246Zi00LTA7d3JpdGluZy1tb2RlOmxyLXRiO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIKICAgICAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwyNC4xODc5LDkwLjA3NDYpIj48dHNwYW4KICAgICAgICAgICAgIGlkPSJ0c3BhbjEwOTYiCiAgICAgICAgICAgICBzb2RpcG9kaTpyb2xlPSJsaW5lIgogICAgICAgICAgICAgeT0iMCIKICAgICAgICAgICAgIHg9IjAgNS4yMzAzNjQ4IDEwLjQ2MDczIDE1LjY5MTA5NSAyMC45MjE0NTkiPnZhbHVlPC90c3Bhbj48L3RleHQ+PC9nPjxwYXRoCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgIGlkPSJwYXRoMTEwMCIKICAgICAgICAgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6NDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgICAgZD0ibSAxMTkxLjEzLDQwNC40NDkgLTMyLjY1LDU0MC42NzIiIC8+PHBhdGgKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgaWQ9InBhdGgxMTAyIgogICAgICAgICBzdHlsZT0iZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTpub25lIgogICAgICAgICBkPSJtIDExOTEuMTMsNDA0LjQ0OSAxOS4wNyw3MS4yODkgLTQ2LjU3LC0yLjgwOCB6IiAvPjxwYXRoCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgIGlkPSJwYXRoMTEwNCIKICAgICAgICAgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6NDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgICAgZD0ibSAxMTkxLjEzLDQwNC40NDkgMTkuMDcsNzEuMjg5IC00Ni41NywtMi44MDggeiIgLz48ZwogICAgICAgICB0cmFuc2Zvcm09InNjYWxlKDEwKSIKICAgICAgICAgaWQ9ImcxMTA2Ij48dGV4dAogICAgICAgICAgIGlkPSJ0ZXh0MTExMCIKICAgICAgICAgICBzdHlsZT0iZm9udC12YXJpYW50Om5vcm1hbDtmb250LXNpemU6OS45NjI2cHg7Zm9udC1mYW1pbHk6Zi00Oy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246Zi00LTA7d3JpdGluZy1tb2RlOmxyLXRiO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIKICAgICAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSw5Mi4xNzIzLDEwMC45MTIpIj48dHNwYW4KICAgICAgICAgICAgIGlkPSJ0c3BhbjExMDgiCiAgICAgICAgICAgICBzb2RpcG9kaTpyb2xlPSJsaW5lIgogICAgICAgICAgICAgeT0iMCIKICAgICAgICAgICAgIHg9IjAgNS4yMzAzNjQ4IDEwLjQ2MDczIDE1LjY5MTA5NSAyMC45MjE0NTkiPm5laWdoPC90c3Bhbj48L3RleHQ+PC9nPjxwYXRoCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgIGlkPSJwYXRoMTExMiIKICAgICAgICAgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6My45ODtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgICAgZD0ibSAxMTg5LjUzLDEwMTEuMDkgaCAzMS4zNyIgLz48ZwogICAgICAgICB0cmFuc2Zvcm09InNjYWxlKDEwKSIKICAgICAgICAgaWQ9ImcxMTE0Ij48dGV4dAogICAgICAgICAgIGlkPSJ0ZXh0MTExOCIKICAgICAgICAgICBzdHlsZT0iZm9udC12YXJpYW50Om5vcm1hbDtmb250LXNpemU6OS45NjI2cHg7Zm9udC1mYW1pbHk6Zi00Oy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246Zi00LTA7d3JpdGluZy1tb2RlOmxyLXRiO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIKICAgICAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjIuMDkxLDEwMC45MTIpIj48dHNwYW4KICAgICAgICAgICAgIGlkPSJ0c3BhbjExMTYiCiAgICAgICAgICAgICBzb2RpcG9kaTpyb2xlPSJsaW5lIgogICAgICAgICAgICAgeT0iMCIKICAgICAgICAgICAgIHg9IjAgNS4yMzAzNjQ4IDEwLjQ2MDczIDE1LjY5MTA5NSAyMC45MjE0NTkiPnZhbHVlPC90c3Bhbj48L3RleHQ+PC9nPjwvZz48L2c+PC9zdmc+Cg==) and are organized in specific classes: ```python from josie.scheme.nonconservative import NonConservativeScheme from josie.scheme.convective import ConvectiveScheme from josie.scheme.source import SourceScheme # from josie.scheme.diffusion import DiffusionScheme ``` #### `ConvectiveScheme` ![cell_scheme](data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMS4wcmMxICgwOTk2MGQ2LCAyMDIwLTA0LTA5KSIKICAgc29kaXBvZGk6ZG9jbmFtZT0iY2VsbF9zY2hlbWUuc3ZnIgogICB2aWV3Qm94PSIwIDAgMTk3LjMzMzMzIDE0NCIKICAgaGVpZ2h0PSIxNDQiCiAgIHdpZHRoPSIxOTcuMzMzMzMiCiAgIHhtbDpzcGFjZT0icHJlc2VydmUiCiAgIGlkPSJzdmcxMDQwIgogICB2ZXJzaW9uPSIxLjEiPjxtZXRhZGF0YQogICAgIGlkPSJtZXRhZGF0YTEwNDYiPjxyZGY6UkRGPjxjYzpXb3JrCiAgICAgICAgIHJkZjphYm91dD0iIj48ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD48ZGM6dHlwZQogICAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiIC8+PGRjOnRpdGxlPjwvZGM6dGl0bGU+PC9jYzpXb3JrPjwvcmRmOlJERj48L21ldGFkYXRhPjxkZWZzCiAgICAgaWQ9ImRlZnMxMDQ0IiAvPjxzb2RpcG9kaTpuYW1lZHZpZXcKICAgICBpbmtzY2FwZTpjdXJyZW50LWxheWVyPSJnMTA0OCIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyMyIKICAgICBpbmtzY2FwZTp3aW5kb3cteD0iMCIKICAgICBpbmtzY2FwZTpjeT0iNzIiCiAgICAgaW5rc2NhcGU6Y3g9Ijk4LjY2NjY2NCIKICAgICBpbmtzY2FwZTp6b29tPSIzLjYwODEwODIiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlkPSJuYW1lZHZpZXcxMDQyIgogICAgIGlua3NjYXBlOndpbmRvdy1oZWlnaHQ9Ijk1MyIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjE2ODAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgZ3JpZHRvbGVyYW5jZT0iMTAiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBib3JkZXJvcGFjaXR5PSIxIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIgLz48ZwogICAgIHRyYW5zZm9ybT0ibWF0cml4KDEuMzMzMzMzMywwLDAsLTEuMzMzMzMzMywwLDE0NCkiCiAgICAgaW5rc2NhcGU6bGFiZWw9Imlua19leHRfWFhYWFhYIgogICAgIGlua3NjYXBlOmdyb3VwbW9kZT0ibGF5ZXIiCiAgICAgaWQ9ImcxMDQ4Ij48ZwogICAgICAgdHJhbnNmb3JtPSJzY2FsZSgwLjEpIgogICAgICAgaWQ9ImcxMDUwIj48cGF0aAogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBpZD0icGF0aDEwNTIiCiAgICAgICAgIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgICAgIGQ9Im0gODAzLjk4LDY0NS43MzggaCA2NDAgViA1LjczODI4IGwgLTQ4MCwxNTkuOTk5NzIgLTE2MCw0ODAiIC8+PHBhdGgKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgaWQ9InBhdGgxMDU0IgogICAgICAgICBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDo4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIgogICAgICAgICBkPSJNIDgwMy45OCw2NDQuMDIgSCAzLjk4MDQ3IEwgMTYzLjk4LDQuMDE5NTMgOTYzLjk4LDE2NC4wMiIgLz48cGF0aAogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBpZD0icGF0aDEwNTYiCiAgICAgICAgIHN0eWxlPSJmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOm5vbmUiCiAgICAgICAgIGQ9Im0gNDkwLjU1MSwzNzIuNzcgYyAwLDI0LjAzMSAtMzYuMDIsMjQuMDMxIC0zNi4wMiwwIDAsLTIzLjk4MSAzNi4wMiwtMjMuOTgxIDM2LjAyLDAgeiIgLz48cGF0aAogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBpZD0icGF0aDEwNTgiCiAgICAgICAgIHN0eWxlPSJmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOm5vbmUiCiAgICAgICAgIGQ9Im0gMTIwOS4xNCw0MDQuNDQ5IGMgMCwyMy45OTIgLTM2LjAyLDIzLjk5MiAtMzYuMDIsMCAwLC0yNC4wMTkgMzYuMDIsLTI0LjAxOSAzNi4wMiwwIHoiIC8+PHBhdGgKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgaWQ9InBhdGgxMDYwIgogICAgICAgICBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDo0O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIgogICAgICAgICBkPSJNIDY4MC4xOTksMzM5LjY0OCAxMDg5LjQ5LDQ5Mi4xOTEiIC8+PHBhdGgKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgaWQ9InBhdGgxMDYyIgogICAgICAgICBzdHlsZT0iZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTpub25lIgogICAgICAgICBkPSJtIDEwODkuNDksNDkyLjE5MSAtNzMuNzUsLTIuNjIxIDE2LjI5LC00My42NzIgeiIgLz48cGF0aAogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBpZD0icGF0aDEwNjQiCiAgICAgICAgIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjQ7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgICAgIGQ9Im0gMTA4OS40OSw0OTIuMTkxIC03My43NSwtMi42MjEgMTYuMjksLTQzLjY3MiB6IiAvPjxnCiAgICAgICAgIHRyYW5zZm9ybT0ic2NhbGUoMTApIgogICAgICAgICBpZD0iZzEwNjYiPjx0ZXh0CiAgICAgICAgICAgaWQ9InRleHQxMDcwIgogICAgICAgICAgIHN0eWxlPSJmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtc2l6ZTo5Ljk2MjZweDtmb250LWZhbWlseTpmLTA7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjpmLTAtMDt3cml0aW5nLW1vZGU6bHItdGI7ZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIgogICAgICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KDEsMCwwLC0xLDkyLjk5ODQsNDguNjg1MikiPjx0c3BhbgogICAgICAgICAgICAgaWQ9InRzcGFuMTA2OCIKICAgICAgICAgICAgIHk9IjAiCiAgICAgICAgICAgICB4PSIwIj7LhjwvdHNwYW4+PC90ZXh0Pjx0ZXh0CiAgICAgICAgICAgaWQ9InRleHQxMDc0IgogICAgICAgICAgIHN0eWxlPSJmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtc2l6ZTo5Ljk2MjZweDtmb250LWZhbWlseTpmLTE7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjpmLTEtMDt3cml0aW5nLW1vZGU6bHItdGI7ZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIgogICAgICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KDEsMCwwLC0xLDkyLjMwNjIxMiw0OC41NDY5MTkpIj48dHNwYW4KICAgICAgICAgICAgIGlkPSJ0c3BhbjEwNzIiCiAgICAgICAgICAgICB5PSIwIgogICAgICAgICAgICAgeD0iMCI+bjwvdHNwYW4+PC90ZXh0PjwvZz48cGF0aAogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBpZD0icGF0aDEwNzYiCiAgICAgICAgIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjIwO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIgogICAgICAgICBkPSJtIDgwMy45OCw2NDQuMDIgMTYwLC00ODAiIC8+PGcKICAgICAgICAgdHJhbnNmb3JtPSJzY2FsZSgxMCkiCiAgICAgICAgIGlkPSJnMTA3OCI+PHRleHQKICAgICAgICAgICBpZD0idGV4dDEwODIiCiAgICAgICAgICAgc3R5bGU9ImZvbnQtdmFyaWFudDpub3JtYWw7Zm9udC1zaXplOjkuOTYyNnB4O2ZvbnQtZmFtaWx5OmYtMjstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOmYtMi0wO3dyaXRpbmctbW9kZTpsci10YjtmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOm5vbmUiCiAgICAgICAgICAgdHJhbnNmb3JtPSJtYXRyaXgoMSwwLDAsLTEsOTUuNjY0NSwzMC42ODc5KSI+PHRzcGFuCiAgICAgICAgICAgICBpZD0idHNwYW4xMDgwIgogICAgICAgICAgICAgeT0iMCIKICAgICAgICAgICAgIHg9IjAiPlM8L3RzcGFuPjwvdGV4dD48dGV4dAogICAgICAgICAgIGlkPSJ0ZXh0MTA4NiIKICAgICAgICAgICBzdHlsZT0iZm9udC12YXJpYW50Om5vcm1hbDtmb250LXNpemU6Ni45NzM4cHg7Zm9udC1mYW1pbHk6Zi0zOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246Zi0zLTA7d3JpdGluZy1tb2RlOmxyLXRiO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIKICAgICAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMDEuNzczNDgsMjkuMTkzNzYpIj48dHNwYW4KICAgICAgICAgICAgIGlkPSJ0c3BhbjEwODQiCiAgICAgICAgICAgICB5PSIwIgogICAgICAgICAgICAgeD0iMCI+ZjwvdHNwYW4+PC90ZXh0PjwvZz48cGF0aAogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBpZD0icGF0aDEwODgiCiAgICAgICAgIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjQ7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgICAgIGQ9Ik0gNDc0LjIxOSwzNzIuNzcgMzY1LjM1Miw4OTAuODk4IiAvPjxwYXRoCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgIGlkPSJwYXRoMTA5MCIKICAgICAgICAgc3R5bGU9ImZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6bm9uZSIKICAgICAgICAgZD0ibSA0NzQuMjE5LDM3Mi43NyA4LjQwMiw3My4zMiAtNDUuNjMzLC05LjYxIHoiIC8+PHBhdGgKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgaWQ9InBhdGgxMDkyIgogICAgICAgICBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDo0O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIgogICAgICAgICBkPSJtIDQ3NC4yMTksMzcyLjc3IDguNDAyLDczLjMyIC00NS42MzMsLTkuNjEgeiIgLz48ZwogICAgICAgICB0cmFuc2Zvcm09InNjYWxlKDEwKSIKICAgICAgICAgaWQ9ImcxMDk0Ij48dGV4dAogICAgICAgICAgIGlkPSJ0ZXh0MTA5OCIKICAgICAgICAgICBzdHlsZT0iZm9udC12YXJpYW50Om5vcm1hbDtmb250LXNpemU6OS45NjI2cHg7Zm9udC1mYW1pbHk6Zi00Oy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246Zi00LTA7d3JpdGluZy1tb2RlOmxyLXRiO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIKICAgICAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwyNC4xODc5LDkwLjA3NDYpIj48dHNwYW4KICAgICAgICAgICAgIGlkPSJ0c3BhbjEwOTYiCiAgICAgICAgICAgICBzb2RpcG9kaTpyb2xlPSJsaW5lIgogICAgICAgICAgICAgeT0iMCIKICAgICAgICAgICAgIHg9IjAgNS4yMzAzNjQ4IDEwLjQ2MDczIDE1LjY5MTA5NSAyMC45MjE0NTkiPnZhbHVlPC90c3Bhbj48L3RleHQ+PC9nPjxwYXRoCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgIGlkPSJwYXRoMTEwMCIKICAgICAgICAgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6NDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgICAgZD0ibSAxMTkxLjEzLDQwNC40NDkgLTMyLjY1LDU0MC42NzIiIC8+PHBhdGgKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgaWQ9InBhdGgxMTAyIgogICAgICAgICBzdHlsZT0iZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTpub25lIgogICAgICAgICBkPSJtIDExOTEuMTMsNDA0LjQ0OSAxOS4wNyw3MS4yODkgLTQ2LjU3LC0yLjgwOCB6IiAvPjxwYXRoCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgIGlkPSJwYXRoMTEwNCIKICAgICAgICAgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6NDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgICAgZD0ibSAxMTkxLjEzLDQwNC40NDkgMTkuMDcsNzEuMjg5IC00Ni41NywtMi44MDggeiIgLz48ZwogICAgICAgICB0cmFuc2Zvcm09InNjYWxlKDEwKSIKICAgICAgICAgaWQ9ImcxMTA2Ij48dGV4dAogICAgICAgICAgIGlkPSJ0ZXh0MTExMCIKICAgICAgICAgICBzdHlsZT0iZm9udC12YXJpYW50Om5vcm1hbDtmb250LXNpemU6OS45NjI2cHg7Zm9udC1mYW1pbHk6Zi00Oy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246Zi00LTA7d3JpdGluZy1tb2RlOmxyLXRiO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIKICAgICAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSw5Mi4xNzIzLDEwMC45MTIpIj48dHNwYW4KICAgICAgICAgICAgIGlkPSJ0c3BhbjExMDgiCiAgICAgICAgICAgICBzb2RpcG9kaTpyb2xlPSJsaW5lIgogICAgICAgICAgICAgeT0iMCIKICAgICAgICAgICAgIHg9IjAgNS4yMzAzNjQ4IDEwLjQ2MDczIDE1LjY5MTA5NSAyMC45MjE0NTkiPm5laWdoPC90c3Bhbj48L3RleHQ+PC9nPjxwYXRoCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgIGlkPSJwYXRoMTExMiIKICAgICAgICAgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6My45ODtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgICAgZD0ibSAxMTg5LjUzLDEwMTEuMDkgaCAzMS4zNyIgLz48ZwogICAgICAgICB0cmFuc2Zvcm09InNjYWxlKDEwKSIKICAgICAgICAgaWQ9ImcxMTE0Ij48dGV4dAogICAgICAgICAgIGlkPSJ0ZXh0MTExOCIKICAgICAgICAgICBzdHlsZT0iZm9udC12YXJpYW50Om5vcm1hbDtmb250LXNpemU6OS45NjI2cHg7Zm9udC1mYW1pbHk6Zi00Oy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246Zi00LTA7d3JpdGluZy1tb2RlOmxyLXRiO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIKICAgICAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjIuMDkxLDEwMC45MTIpIj48dHNwYW4KICAgICAgICAgICAgIGlkPSJ0c3BhbjExMTYiCiAgICAgICAgICAgICBzb2RpcG9kaTpyb2xlPSJsaW5lIgogICAgICAgICAgICAgeT0iMCIKICAgICAgICAgICAgIHg9IjAgNS4yMzAzNjQ4IDEwLjQ2MDczIDE1LjY5MTA5NSAyMC45MjE0NTkiPnZhbHVlPC90c3Bhbj48L3RleHQ+PC9nPjwvZz48L2c+PC9zdmc+Cg==) It implements, in its `ConvectiveScheme.F` method, the discretization: ```math \mathbf{F}_\frac{1}{2}(\mathbf{q})= \left| \mathbf{F} \cdot \hat{\mathbf{n}} \right|_f S_f ``` on **one face** ```python ConvectiveScheme.F?? ``` #### Example `Rusanov` for Euler system ![cell_scheme](data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMS4wcmMxICgwOTk2MGQ2LCAyMDIwLTA0LTA5KSIKICAgc29kaXBvZGk6ZG9jbmFtZT0iY2VsbF9zY2hlbWUuc3ZnIgogICB2aWV3Qm94PSIwIDAgMTk3LjMzMzMzIDE0NCIKICAgaGVpZ2h0PSIxNDQiCiAgIHdpZHRoPSIxOTcuMzMzMzMiCiAgIHhtbDpzcGFjZT0icHJlc2VydmUiCiAgIGlkPSJzdmcxMDQwIgogICB2ZXJzaW9uPSIxLjEiPjxtZXRhZGF0YQogICAgIGlkPSJtZXRhZGF0YTEwNDYiPjxyZGY6UkRGPjxjYzpXb3JrCiAgICAgICAgIHJkZjphYm91dD0iIj48ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD48ZGM6dHlwZQogICAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiIC8+PGRjOnRpdGxlPjwvZGM6dGl0bGU+PC9jYzpXb3JrPjwvcmRmOlJERj48L21ldGFkYXRhPjxkZWZzCiAgICAgaWQ9ImRlZnMxMDQ0IiAvPjxzb2RpcG9kaTpuYW1lZHZpZXcKICAgICBpbmtzY2FwZTpjdXJyZW50LWxheWVyPSJnMTA0OCIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyMyIKICAgICBpbmtzY2FwZTp3aW5kb3cteD0iMCIKICAgICBpbmtzY2FwZTpjeT0iNzIiCiAgICAgaW5rc2NhcGU6Y3g9Ijk4LjY2NjY2NCIKICAgICBpbmtzY2FwZTp6b29tPSIzLjYwODEwODIiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlkPSJuYW1lZHZpZXcxMDQyIgogICAgIGlua3NjYXBlOndpbmRvdy1oZWlnaHQ9Ijk1MyIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjE2ODAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgZ3JpZHRvbGVyYW5jZT0iMTAiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBib3JkZXJvcGFjaXR5PSIxIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIgLz48ZwogICAgIHRyYW5zZm9ybT0ibWF0cml4KDEuMzMzMzMzMywwLDAsLTEuMzMzMzMzMywwLDE0NCkiCiAgICAgaW5rc2NhcGU6bGFiZWw9Imlua19leHRfWFhYWFhYIgogICAgIGlua3NjYXBlOmdyb3VwbW9kZT0ibGF5ZXIiCiAgICAgaWQ9ImcxMDQ4Ij48ZwogICAgICAgdHJhbnNmb3JtPSJzY2FsZSgwLjEpIgogICAgICAgaWQ9ImcxMDUwIj48cGF0aAogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBpZD0icGF0aDEwNTIiCiAgICAgICAgIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgICAgIGQ9Im0gODAzLjk4LDY0NS43MzggaCA2NDAgViA1LjczODI4IGwgLTQ4MCwxNTkuOTk5NzIgLTE2MCw0ODAiIC8+PHBhdGgKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgaWQ9InBhdGgxMDU0IgogICAgICAgICBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDo4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIgogICAgICAgICBkPSJNIDgwMy45OCw2NDQuMDIgSCAzLjk4MDQ3IEwgMTYzLjk4LDQuMDE5NTMgOTYzLjk4LDE2NC4wMiIgLz48cGF0aAogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBpZD0icGF0aDEwNTYiCiAgICAgICAgIHN0eWxlPSJmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOm5vbmUiCiAgICAgICAgIGQ9Im0gNDkwLjU1MSwzNzIuNzcgYyAwLDI0LjAzMSAtMzYuMDIsMjQuMDMxIC0zNi4wMiwwIDAsLTIzLjk4MSAzNi4wMiwtMjMuOTgxIDM2LjAyLDAgeiIgLz48cGF0aAogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBpZD0icGF0aDEwNTgiCiAgICAgICAgIHN0eWxlPSJmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOm5vbmUiCiAgICAgICAgIGQ9Im0gMTIwOS4xNCw0MDQuNDQ5IGMgMCwyMy45OTIgLTM2LjAyLDIzLjk5MiAtMzYuMDIsMCAwLC0yNC4wMTkgMzYuMDIsLTI0LjAxOSAzNi4wMiwwIHoiIC8+PHBhdGgKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgaWQ9InBhdGgxMDYwIgogICAgICAgICBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDo0O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIgogICAgICAgICBkPSJNIDY4MC4xOTksMzM5LjY0OCAxMDg5LjQ5LDQ5Mi4xOTEiIC8+PHBhdGgKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgaWQ9InBhdGgxMDYyIgogICAgICAgICBzdHlsZT0iZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTpub25lIgogICAgICAgICBkPSJtIDEwODkuNDksNDkyLjE5MSAtNzMuNzUsLTIuNjIxIDE2LjI5LC00My42NzIgeiIgLz48cGF0aAogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBpZD0icGF0aDEwNjQiCiAgICAgICAgIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjQ7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgICAgIGQ9Im0gMTA4OS40OSw0OTIuMTkxIC03My43NSwtMi42MjEgMTYuMjksLTQzLjY3MiB6IiAvPjxnCiAgICAgICAgIHRyYW5zZm9ybT0ic2NhbGUoMTApIgogICAgICAgICBpZD0iZzEwNjYiPjx0ZXh0CiAgICAgICAgICAgaWQ9InRleHQxMDcwIgogICAgICAgICAgIHN0eWxlPSJmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtc2l6ZTo5Ljk2MjZweDtmb250LWZhbWlseTpmLTA7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjpmLTAtMDt3cml0aW5nLW1vZGU6bHItdGI7ZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIgogICAgICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KDEsMCwwLC0xLDkyLjk5ODQsNDguNjg1MikiPjx0c3BhbgogICAgICAgICAgICAgaWQ9InRzcGFuMTA2OCIKICAgICAgICAgICAgIHk9IjAiCiAgICAgICAgICAgICB4PSIwIj7LhjwvdHNwYW4+PC90ZXh0Pjx0ZXh0CiAgICAgICAgICAgaWQ9InRleHQxMDc0IgogICAgICAgICAgIHN0eWxlPSJmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtc2l6ZTo5Ljk2MjZweDtmb250LWZhbWlseTpmLTE7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjpmLTEtMDt3cml0aW5nLW1vZGU6bHItdGI7ZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIgogICAgICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KDEsMCwwLC0xLDkyLjMwNjIxMiw0OC41NDY5MTkpIj48dHNwYW4KICAgICAgICAgICAgIGlkPSJ0c3BhbjEwNzIiCiAgICAgICAgICAgICB5PSIwIgogICAgICAgICAgICAgeD0iMCI+bjwvdHNwYW4+PC90ZXh0PjwvZz48cGF0aAogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBpZD0icGF0aDEwNzYiCiAgICAgICAgIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjIwO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIgogICAgICAgICBkPSJtIDgwMy45OCw2NDQuMDIgMTYwLC00ODAiIC8+PGcKICAgICAgICAgdHJhbnNmb3JtPSJzY2FsZSgxMCkiCiAgICAgICAgIGlkPSJnMTA3OCI+PHRleHQKICAgICAgICAgICBpZD0idGV4dDEwODIiCiAgICAgICAgICAgc3R5bGU9ImZvbnQtdmFyaWFudDpub3JtYWw7Zm9udC1zaXplOjkuOTYyNnB4O2ZvbnQtZmFtaWx5OmYtMjstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOmYtMi0wO3dyaXRpbmctbW9kZTpsci10YjtmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOm5vbmUiCiAgICAgICAgICAgdHJhbnNmb3JtPSJtYXRyaXgoMSwwLDAsLTEsOTUuNjY0NSwzMC42ODc5KSI+PHRzcGFuCiAgICAgICAgICAgICBpZD0idHNwYW4xMDgwIgogICAgICAgICAgICAgeT0iMCIKICAgICAgICAgICAgIHg9IjAiPlM8L3RzcGFuPjwvdGV4dD48dGV4dAogICAgICAgICAgIGlkPSJ0ZXh0MTA4NiIKICAgICAgICAgICBzdHlsZT0iZm9udC12YXJpYW50Om5vcm1hbDtmb250LXNpemU6Ni45NzM4cHg7Zm9udC1mYW1pbHk6Zi0zOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246Zi0zLTA7d3JpdGluZy1tb2RlOmxyLXRiO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIKICAgICAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMDEuNzczNDgsMjkuMTkzNzYpIj48dHNwYW4KICAgICAgICAgICAgIGlkPSJ0c3BhbjEwODQiCiAgICAgICAgICAgICB5PSIwIgogICAgICAgICAgICAgeD0iMCI+ZjwvdHNwYW4+PC90ZXh0PjwvZz48cGF0aAogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBpZD0icGF0aDEwODgiCiAgICAgICAgIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjQ7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgICAgIGQ9Ik0gNDc0LjIxOSwzNzIuNzcgMzY1LjM1Miw4OTAuODk4IiAvPjxwYXRoCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgIGlkPSJwYXRoMTA5MCIKICAgICAgICAgc3R5bGU9ImZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6bm9uZSIKICAgICAgICAgZD0ibSA0NzQuMjE5LDM3Mi43NyA4LjQwMiw3My4zMiAtNDUuNjMzLC05LjYxIHoiIC8+PHBhdGgKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgaWQ9InBhdGgxMDkyIgogICAgICAgICBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDo0O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIgogICAgICAgICBkPSJtIDQ3NC4yMTksMzcyLjc3IDguNDAyLDczLjMyIC00NS42MzMsLTkuNjEgeiIgLz48ZwogICAgICAgICB0cmFuc2Zvcm09InNjYWxlKDEwKSIKICAgICAgICAgaWQ9ImcxMDk0Ij48dGV4dAogICAgICAgICAgIGlkPSJ0ZXh0MTA5OCIKICAgICAgICAgICBzdHlsZT0iZm9udC12YXJpYW50Om5vcm1hbDtmb250LXNpemU6OS45NjI2cHg7Zm9udC1mYW1pbHk6Zi00Oy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246Zi00LTA7d3JpdGluZy1tb2RlOmxyLXRiO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIKICAgICAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwyNC4xODc5LDkwLjA3NDYpIj48dHNwYW4KICAgICAgICAgICAgIGlkPSJ0c3BhbjEwOTYiCiAgICAgICAgICAgICBzb2RpcG9kaTpyb2xlPSJsaW5lIgogICAgICAgICAgICAgeT0iMCIKICAgICAgICAgICAgIHg9IjAgNS4yMzAzNjQ4IDEwLjQ2MDczIDE1LjY5MTA5NSAyMC45MjE0NTkiPnZhbHVlPC90c3Bhbj48L3RleHQ+PC9nPjxwYXRoCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgIGlkPSJwYXRoMTEwMCIKICAgICAgICAgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6NDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgICAgZD0ibSAxMTkxLjEzLDQwNC40NDkgLTMyLjY1LDU0MC42NzIiIC8+PHBhdGgKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgaWQ9InBhdGgxMTAyIgogICAgICAgICBzdHlsZT0iZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTpub25lIgogICAgICAgICBkPSJtIDExOTEuMTMsNDA0LjQ0OSAxOS4wNyw3MS4yODkgLTQ2LjU3LC0yLjgwOCB6IiAvPjxwYXRoCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgIGlkPSJwYXRoMTEwNCIKICAgICAgICAgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6NDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgICAgZD0ibSAxMTkxLjEzLDQwNC40NDkgMTkuMDcsNzEuMjg5IC00Ni41NywtMi44MDggeiIgLz48ZwogICAgICAgICB0cmFuc2Zvcm09InNjYWxlKDEwKSIKICAgICAgICAgaWQ9ImcxMTA2Ij48dGV4dAogICAgICAgICAgIGlkPSJ0ZXh0MTExMCIKICAgICAgICAgICBzdHlsZT0iZm9udC12YXJpYW50Om5vcm1hbDtmb250LXNpemU6OS45NjI2cHg7Zm9udC1mYW1pbHk6Zi00Oy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246Zi00LTA7d3JpdGluZy1tb2RlOmxyLXRiO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIKICAgICAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSw5Mi4xNzIzLDEwMC45MTIpIj48dHNwYW4KICAgICAgICAgICAgIGlkPSJ0c3BhbjExMDgiCiAgICAgICAgICAgICBzb2RpcG9kaTpyb2xlPSJsaW5lIgogICAgICAgICAgICAgeT0iMCIKICAgICAgICAgICAgIHg9IjAgNS4yMzAzNjQ4IDEwLjQ2MDczIDE1LjY5MTA5NSAyMC45MjE0NTkiPm5laWdoPC90c3Bhbj48L3RleHQ+PC9nPjxwYXRoCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgIGlkPSJwYXRoMTExMiIKICAgICAgICAgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6My45ODtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgICAgZD0ibSAxMTg5LjUzLDEwMTEuMDkgaCAzMS4zNyIgLz48ZwogICAgICAgICB0cmFuc2Zvcm09InNjYWxlKDEwKSIKICAgICAgICAgaWQ9ImcxMTE0Ij48dGV4dAogICAgICAgICAgIGlkPSJ0ZXh0MTExOCIKICAgICAgICAgICBzdHlsZT0iZm9udC12YXJpYW50Om5vcm1hbDtmb250LXNpemU6OS45NjI2cHg7Zm9udC1mYW1pbHk6Zi00Oy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246Zi00LTA7d3JpdGluZy1tb2RlOmxyLXRiO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIKICAgICAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjIuMDkxLDEwMC45MTIpIj48dHNwYW4KICAgICAgICAgICAgIGlkPSJ0c3BhbjExMTYiCiAgICAgICAgICAgICBzb2RpcG9kaTpyb2xlPSJsaW5lIgogICAgICAgICAgICAgeT0iMCIKICAgICAgICAgICAgIHg9IjAgNS4yMzAzNjQ4IDEwLjQ2MDczIDE1LjY5MTA5NSAyMC45MjE0NTkiPnZhbHVlPC90c3Bhbj48L3RleHQ+PC9nPjwvZz48L2c+PC9zdmc+Cg==) It implements, in its `Rusanov.F` method, the discretization: ```math \mathbf{F}_\frac{1}{2}(\mathbf{q})= \frac{1}{2}\left[ \left(\mathbf{F}(\mathbf{q}_i) + \mathbf{F}(\mathbf{q}_{i+1})\right) \cdot \hat{\mathbf{n}} - \left|\text{max}(\lambda_p)\right|\left( \mathbf{q}_{i+1} - \mathbf{q}_i\right) \right] ``` on **one face** ```python from josie.euler.schemes import Rusanov Rusanov.F?? ``` #### `NonConservativeScheme` ![cell_scheme](data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMS4wcmMxICgwOTk2MGQ2LCAyMDIwLTA0LTA5KSIKICAgc29kaXBvZGk6ZG9jbmFtZT0iY2VsbF9zY2hlbWUuc3ZnIgogICB2aWV3Qm94PSIwIDAgMTk3LjMzMzMzIDE0NCIKICAgaGVpZ2h0PSIxNDQiCiAgIHdpZHRoPSIxOTcuMzMzMzMiCiAgIHhtbDpzcGFjZT0icHJlc2VydmUiCiAgIGlkPSJzdmcxMDQwIgogICB2ZXJzaW9uPSIxLjEiPjxtZXRhZGF0YQogICAgIGlkPSJtZXRhZGF0YTEwNDYiPjxyZGY6UkRGPjxjYzpXb3JrCiAgICAgICAgIHJkZjphYm91dD0iIj48ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD48ZGM6dHlwZQogICAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiIC8+PGRjOnRpdGxlPjwvZGM6dGl0bGU+PC9jYzpXb3JrPjwvcmRmOlJERj48L21ldGFkYXRhPjxkZWZzCiAgICAgaWQ9ImRlZnMxMDQ0IiAvPjxzb2RpcG9kaTpuYW1lZHZpZXcKICAgICBpbmtzY2FwZTpjdXJyZW50LWxheWVyPSJnMTA0OCIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyMyIKICAgICBpbmtzY2FwZTp3aW5kb3cteD0iMCIKICAgICBpbmtzY2FwZTpjeT0iNzIiCiAgICAgaW5rc2NhcGU6Y3g9Ijk4LjY2NjY2NCIKICAgICBpbmtzY2FwZTp6b29tPSIzLjYwODEwODIiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlkPSJuYW1lZHZpZXcxMDQyIgogICAgIGlua3NjYXBlOndpbmRvdy1oZWlnaHQ9Ijk1MyIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjE2ODAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgZ3JpZHRvbGVyYW5jZT0iMTAiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBib3JkZXJvcGFjaXR5PSIxIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIgLz48ZwogICAgIHRyYW5zZm9ybT0ibWF0cml4KDEuMzMzMzMzMywwLDAsLTEuMzMzMzMzMywwLDE0NCkiCiAgICAgaW5rc2NhcGU6bGFiZWw9Imlua19leHRfWFhYWFhYIgogICAgIGlua3NjYXBlOmdyb3VwbW9kZT0ibGF5ZXIiCiAgICAgaWQ9ImcxMDQ4Ij48ZwogICAgICAgdHJhbnNmb3JtPSJzY2FsZSgwLjEpIgogICAgICAgaWQ9ImcxMDUwIj48cGF0aAogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBpZD0icGF0aDEwNTIiCiAgICAgICAgIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgICAgIGQ9Im0gODAzLjk4LDY0NS43MzggaCA2NDAgViA1LjczODI4IGwgLTQ4MCwxNTkuOTk5NzIgLTE2MCw0ODAiIC8+PHBhdGgKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgaWQ9InBhdGgxMDU0IgogICAgICAgICBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDo4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIgogICAgICAgICBkPSJNIDgwMy45OCw2NDQuMDIgSCAzLjk4MDQ3IEwgMTYzLjk4LDQuMDE5NTMgOTYzLjk4LDE2NC4wMiIgLz48cGF0aAogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBpZD0icGF0aDEwNTYiCiAgICAgICAgIHN0eWxlPSJmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOm5vbmUiCiAgICAgICAgIGQ9Im0gNDkwLjU1MSwzNzIuNzcgYyAwLDI0LjAzMSAtMzYuMDIsMjQuMDMxIC0zNi4wMiwwIDAsLTIzLjk4MSAzNi4wMiwtMjMuOTgxIDM2LjAyLDAgeiIgLz48cGF0aAogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBpZD0icGF0aDEwNTgiCiAgICAgICAgIHN0eWxlPSJmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOm5vbmUiCiAgICAgICAgIGQ9Im0gMTIwOS4xNCw0MDQuNDQ5IGMgMCwyMy45OTIgLTM2LjAyLDIzLjk5MiAtMzYuMDIsMCAwLC0yNC4wMTkgMzYuMDIsLTI0LjAxOSAzNi4wMiwwIHoiIC8+PHBhdGgKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgaWQ9InBhdGgxMDYwIgogICAgICAgICBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDo0O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIgogICAgICAgICBkPSJNIDY4MC4xOTksMzM5LjY0OCAxMDg5LjQ5LDQ5Mi4xOTEiIC8+PHBhdGgKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgaWQ9InBhdGgxMDYyIgogICAgICAgICBzdHlsZT0iZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTpub25lIgogICAgICAgICBkPSJtIDEwODkuNDksNDkyLjE5MSAtNzMuNzUsLTIuNjIxIDE2LjI5LC00My42NzIgeiIgLz48cGF0aAogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBpZD0icGF0aDEwNjQiCiAgICAgICAgIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjQ7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgICAgIGQ9Im0gMTA4OS40OSw0OTIuMTkxIC03My43NSwtMi42MjEgMTYuMjksLTQzLjY3MiB6IiAvPjxnCiAgICAgICAgIHRyYW5zZm9ybT0ic2NhbGUoMTApIgogICAgICAgICBpZD0iZzEwNjYiPjx0ZXh0CiAgICAgICAgICAgaWQ9InRleHQxMDcwIgogICAgICAgICAgIHN0eWxlPSJmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtc2l6ZTo5Ljk2MjZweDtmb250LWZhbWlseTpmLTA7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjpmLTAtMDt3cml0aW5nLW1vZGU6bHItdGI7ZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIgogICAgICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KDEsMCwwLC0xLDkyLjk5ODQsNDguNjg1MikiPjx0c3BhbgogICAgICAgICAgICAgaWQ9InRzcGFuMTA2OCIKICAgICAgICAgICAgIHk9IjAiCiAgICAgICAgICAgICB4PSIwIj7LhjwvdHNwYW4+PC90ZXh0Pjx0ZXh0CiAgICAgICAgICAgaWQ9InRleHQxMDc0IgogICAgICAgICAgIHN0eWxlPSJmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtc2l6ZTo5Ljk2MjZweDtmb250LWZhbWlseTpmLTE7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjpmLTEtMDt3cml0aW5nLW1vZGU6bHItdGI7ZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIgogICAgICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KDEsMCwwLC0xLDkyLjMwNjIxMiw0OC41NDY5MTkpIj48dHNwYW4KICAgICAgICAgICAgIGlkPSJ0c3BhbjEwNzIiCiAgICAgICAgICAgICB5PSIwIgogICAgICAgICAgICAgeD0iMCI+bjwvdHNwYW4+PC90ZXh0PjwvZz48cGF0aAogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBpZD0icGF0aDEwNzYiCiAgICAgICAgIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjIwO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIgogICAgICAgICBkPSJtIDgwMy45OCw2NDQuMDIgMTYwLC00ODAiIC8+PGcKICAgICAgICAgdHJhbnNmb3JtPSJzY2FsZSgxMCkiCiAgICAgICAgIGlkPSJnMTA3OCI+PHRleHQKICAgICAgICAgICBpZD0idGV4dDEwODIiCiAgICAgICAgICAgc3R5bGU9ImZvbnQtdmFyaWFudDpub3JtYWw7Zm9udC1zaXplOjkuOTYyNnB4O2ZvbnQtZmFtaWx5OmYtMjstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOmYtMi0wO3dyaXRpbmctbW9kZTpsci10YjtmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOm5vbmUiCiAgICAgICAgICAgdHJhbnNmb3JtPSJtYXRyaXgoMSwwLDAsLTEsOTUuNjY0NSwzMC42ODc5KSI+PHRzcGFuCiAgICAgICAgICAgICBpZD0idHNwYW4xMDgwIgogICAgICAgICAgICAgeT0iMCIKICAgICAgICAgICAgIHg9IjAiPlM8L3RzcGFuPjwvdGV4dD48dGV4dAogICAgICAgICAgIGlkPSJ0ZXh0MTA4NiIKICAgICAgICAgICBzdHlsZT0iZm9udC12YXJpYW50Om5vcm1hbDtmb250LXNpemU6Ni45NzM4cHg7Zm9udC1mYW1pbHk6Zi0zOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246Zi0zLTA7d3JpdGluZy1tb2RlOmxyLXRiO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIKICAgICAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMDEuNzczNDgsMjkuMTkzNzYpIj48dHNwYW4KICAgICAgICAgICAgIGlkPSJ0c3BhbjEwODQiCiAgICAgICAgICAgICB5PSIwIgogICAgICAgICAgICAgeD0iMCI+ZjwvdHNwYW4+PC90ZXh0PjwvZz48cGF0aAogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBpZD0icGF0aDEwODgiCiAgICAgICAgIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjQ7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgICAgIGQ9Ik0gNDc0LjIxOSwzNzIuNzcgMzY1LjM1Miw4OTAuODk4IiAvPjxwYXRoCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgIGlkPSJwYXRoMTA5MCIKICAgICAgICAgc3R5bGU9ImZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6bm9uZSIKICAgICAgICAgZD0ibSA0NzQuMjE5LDM3Mi43NyA4LjQwMiw3My4zMiAtNDUuNjMzLC05LjYxIHoiIC8+PHBhdGgKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgaWQ9InBhdGgxMDkyIgogICAgICAgICBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDo0O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIgogICAgICAgICBkPSJtIDQ3NC4yMTksMzcyLjc3IDguNDAyLDczLjMyIC00NS42MzMsLTkuNjEgeiIgLz48ZwogICAgICAgICB0cmFuc2Zvcm09InNjYWxlKDEwKSIKICAgICAgICAgaWQ9ImcxMDk0Ij48dGV4dAogICAgICAgICAgIGlkPSJ0ZXh0MTA5OCIKICAgICAgICAgICBzdHlsZT0iZm9udC12YXJpYW50Om5vcm1hbDtmb250LXNpemU6OS45NjI2cHg7Zm9udC1mYW1pbHk6Zi00Oy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246Zi00LTA7d3JpdGluZy1tb2RlOmxyLXRiO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIKICAgICAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwyNC4xODc5LDkwLjA3NDYpIj48dHNwYW4KICAgICAgICAgICAgIGlkPSJ0c3BhbjEwOTYiCiAgICAgICAgICAgICBzb2RpcG9kaTpyb2xlPSJsaW5lIgogICAgICAgICAgICAgeT0iMCIKICAgICAgICAgICAgIHg9IjAgNS4yMzAzNjQ4IDEwLjQ2MDczIDE1LjY5MTA5NSAyMC45MjE0NTkiPnZhbHVlPC90c3Bhbj48L3RleHQ+PC9nPjxwYXRoCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgIGlkPSJwYXRoMTEwMCIKICAgICAgICAgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6NDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgICAgZD0ibSAxMTkxLjEzLDQwNC40NDkgLTMyLjY1LDU0MC42NzIiIC8+PHBhdGgKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgaWQ9InBhdGgxMTAyIgogICAgICAgICBzdHlsZT0iZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTpub25lIgogICAgICAgICBkPSJtIDExOTEuMTMsNDA0LjQ0OSAxOS4wNyw3MS4yODkgLTQ2LjU3LC0yLjgwOCB6IiAvPjxwYXRoCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgIGlkPSJwYXRoMTEwNCIKICAgICAgICAgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6NDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgICAgZD0ibSAxMTkxLjEzLDQwNC40NDkgMTkuMDcsNzEuMjg5IC00Ni41NywtMi44MDggeiIgLz48ZwogICAgICAgICB0cmFuc2Zvcm09InNjYWxlKDEwKSIKICAgICAgICAgaWQ9ImcxMTA2Ij48dGV4dAogICAgICAgICAgIGlkPSJ0ZXh0MTExMCIKICAgICAgICAgICBzdHlsZT0iZm9udC12YXJpYW50Om5vcm1hbDtmb250LXNpemU6OS45NjI2cHg7Zm9udC1mYW1pbHk6Zi00Oy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246Zi00LTA7d3JpdGluZy1tb2RlOmxyLXRiO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIKICAgICAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSw5Mi4xNzIzLDEwMC45MTIpIj48dHNwYW4KICAgICAgICAgICAgIGlkPSJ0c3BhbjExMDgiCiAgICAgICAgICAgICBzb2RpcG9kaTpyb2xlPSJsaW5lIgogICAgICAgICAgICAgeT0iMCIKICAgICAgICAgICAgIHg9IjAgNS4yMzAzNjQ4IDEwLjQ2MDczIDE1LjY5MTA5NSAyMC45MjE0NTkiPm5laWdoPC90c3Bhbj48L3RleHQ+PC9nPjxwYXRoCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgIGlkPSJwYXRoMTExMiIKICAgICAgICAgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6My45ODtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgICAgZD0ibSAxMTg5LjUzLDEwMTEuMDkgaCAzMS4zNyIgLz48ZwogICAgICAgICB0cmFuc2Zvcm09InNjYWxlKDEwKSIKICAgICAgICAgaWQ9ImcxMTE0Ij48dGV4dAogICAgICAgICAgIGlkPSJ0ZXh0MTExOCIKICAgICAgICAgICBzdHlsZT0iZm9udC12YXJpYW50Om5vcm1hbDtmb250LXNpemU6OS45NjI2cHg7Zm9udC1mYW1pbHk6Zi00Oy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246Zi00LTA7d3JpdGluZy1tb2RlOmxyLXRiO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIKICAgICAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjIuMDkxLDEwMC45MTIpIj48dHNwYW4KICAgICAgICAgICAgIGlkPSJ0c3BhbjExMTYiCiAgICAgICAgICAgICBzb2RpcG9kaTpyb2xlPSJsaW5lIgogICAgICAgICAgICAgeT0iMCIKICAgICAgICAgICAgIHg9IjAgNS4yMzAzNjQ4IDEwLjQ2MDczIDE1LjY5MTA5NSAyMC45MjE0NTkiPnZhbHVlPC90c3Bhbj48L3RleHQ+PC9nPjwvZz48L2c+PC9zdmc+Cg==) A discretization of the type: ```math \left<\mathbf{B}(\mathbf{q})\right>_i \cdot \sum_{f \in \text{faces}} \left| \mathbf{q}\hat{\mathbf{n}} \right|_f S_f ``` is assumed, and the `NonConservativeScheme.G` implements the term: ```math \mathbf{G}_{\frac{1}{2}}(\mathbf{q}) = \left| \mathbf{q}\hat{\mathbf{n}} \right|_f S_f ``` #### Example `Upwind` for Baer-Nunziato non-conservative term ![cell_scheme](data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMS4wcmMxICgwOTk2MGQ2LCAyMDIwLTA0LTA5KSIKICAgc29kaXBvZGk6ZG9jbmFtZT0iY2VsbF9zY2hlbWUuc3ZnIgogICB2aWV3Qm94PSIwIDAgMTk3LjMzMzMzIDE0NCIKICAgaGVpZ2h0PSIxNDQiCiAgIHdpZHRoPSIxOTcuMzMzMzMiCiAgIHhtbDpzcGFjZT0icHJlc2VydmUiCiAgIGlkPSJzdmcxMDQwIgogICB2ZXJzaW9uPSIxLjEiPjxtZXRhZGF0YQogICAgIGlkPSJtZXRhZGF0YTEwNDYiPjxyZGY6UkRGPjxjYzpXb3JrCiAgICAgICAgIHJkZjphYm91dD0iIj48ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD48ZGM6dHlwZQogICAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiIC8+PGRjOnRpdGxlPjwvZGM6dGl0bGU+PC9jYzpXb3JrPjwvcmRmOlJERj48L21ldGFkYXRhPjxkZWZzCiAgICAgaWQ9ImRlZnMxMDQ0IiAvPjxzb2RpcG9kaTpuYW1lZHZpZXcKICAgICBpbmtzY2FwZTpjdXJyZW50LWxheWVyPSJnMTA0OCIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyMyIKICAgICBpbmtzY2FwZTp3aW5kb3cteD0iMCIKICAgICBpbmtzY2FwZTpjeT0iNzIiCiAgICAgaW5rc2NhcGU6Y3g9Ijk4LjY2NjY2NCIKICAgICBpbmtzY2FwZTp6b29tPSIzLjYwODEwODIiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlkPSJuYW1lZHZpZXcxMDQyIgogICAgIGlua3NjYXBlOndpbmRvdy1oZWlnaHQ9Ijk1MyIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjE2ODAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgZ3JpZHRvbGVyYW5jZT0iMTAiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBib3JkZXJvcGFjaXR5PSIxIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIgLz48ZwogICAgIHRyYW5zZm9ybT0ibWF0cml4KDEuMzMzMzMzMywwLDAsLTEuMzMzMzMzMywwLDE0NCkiCiAgICAgaW5rc2NhcGU6bGFiZWw9Imlua19leHRfWFhYWFhYIgogICAgIGlua3NjYXBlOmdyb3VwbW9kZT0ibGF5ZXIiCiAgICAgaWQ9ImcxMDQ4Ij48ZwogICAgICAgdHJhbnNmb3JtPSJzY2FsZSgwLjEpIgogICAgICAgaWQ9ImcxMDUwIj48cGF0aAogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBpZD0icGF0aDEwNTIiCiAgICAgICAgIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgICAgIGQ9Im0gODAzLjk4LDY0NS43MzggaCA2NDAgViA1LjczODI4IGwgLTQ4MCwxNTkuOTk5NzIgLTE2MCw0ODAiIC8+PHBhdGgKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgaWQ9InBhdGgxMDU0IgogICAgICAgICBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDo4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIgogICAgICAgICBkPSJNIDgwMy45OCw2NDQuMDIgSCAzLjk4MDQ3IEwgMTYzLjk4LDQuMDE5NTMgOTYzLjk4LDE2NC4wMiIgLz48cGF0aAogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBpZD0icGF0aDEwNTYiCiAgICAgICAgIHN0eWxlPSJmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOm5vbmUiCiAgICAgICAgIGQ9Im0gNDkwLjU1MSwzNzIuNzcgYyAwLDI0LjAzMSAtMzYuMDIsMjQuMDMxIC0zNi4wMiwwIDAsLTIzLjk4MSAzNi4wMiwtMjMuOTgxIDM2LjAyLDAgeiIgLz48cGF0aAogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBpZD0icGF0aDEwNTgiCiAgICAgICAgIHN0eWxlPSJmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOm5vbmUiCiAgICAgICAgIGQ9Im0gMTIwOS4xNCw0MDQuNDQ5IGMgMCwyMy45OTIgLTM2LjAyLDIzLjk5MiAtMzYuMDIsMCAwLC0yNC4wMTkgMzYuMDIsLTI0LjAxOSAzNi4wMiwwIHoiIC8+PHBhdGgKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgaWQ9InBhdGgxMDYwIgogICAgICAgICBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDo0O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIgogICAgICAgICBkPSJNIDY4MC4xOTksMzM5LjY0OCAxMDg5LjQ5LDQ5Mi4xOTEiIC8+PHBhdGgKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgaWQ9InBhdGgxMDYyIgogICAgICAgICBzdHlsZT0iZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTpub25lIgogICAgICAgICBkPSJtIDEwODkuNDksNDkyLjE5MSAtNzMuNzUsLTIuNjIxIDE2LjI5LC00My42NzIgeiIgLz48cGF0aAogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBpZD0icGF0aDEwNjQiCiAgICAgICAgIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjQ7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgICAgIGQ9Im0gMTA4OS40OSw0OTIuMTkxIC03My43NSwtMi42MjEgMTYuMjksLTQzLjY3MiB6IiAvPjxnCiAgICAgICAgIHRyYW5zZm9ybT0ic2NhbGUoMTApIgogICAgICAgICBpZD0iZzEwNjYiPjx0ZXh0CiAgICAgICAgICAgaWQ9InRleHQxMDcwIgogICAgICAgICAgIHN0eWxlPSJmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtc2l6ZTo5Ljk2MjZweDtmb250LWZhbWlseTpmLTA7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjpmLTAtMDt3cml0aW5nLW1vZGU6bHItdGI7ZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIgogICAgICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KDEsMCwwLC0xLDkyLjk5ODQsNDguNjg1MikiPjx0c3BhbgogICAgICAgICAgICAgaWQ9InRzcGFuMTA2OCIKICAgICAgICAgICAgIHk9IjAiCiAgICAgICAgICAgICB4PSIwIj7LhjwvdHNwYW4+PC90ZXh0Pjx0ZXh0CiAgICAgICAgICAgaWQ9InRleHQxMDc0IgogICAgICAgICAgIHN0eWxlPSJmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtc2l6ZTo5Ljk2MjZweDtmb250LWZhbWlseTpmLTE7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjpmLTEtMDt3cml0aW5nLW1vZGU6bHItdGI7ZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIgogICAgICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KDEsMCwwLC0xLDkyLjMwNjIxMiw0OC41NDY5MTkpIj48dHNwYW4KICAgICAgICAgICAgIGlkPSJ0c3BhbjEwNzIiCiAgICAgICAgICAgICB5PSIwIgogICAgICAgICAgICAgeD0iMCI+bjwvdHNwYW4+PC90ZXh0PjwvZz48cGF0aAogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBpZD0icGF0aDEwNzYiCiAgICAgICAgIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjIwO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIgogICAgICAgICBkPSJtIDgwMy45OCw2NDQuMDIgMTYwLC00ODAiIC8+PGcKICAgICAgICAgdHJhbnNmb3JtPSJzY2FsZSgxMCkiCiAgICAgICAgIGlkPSJnMTA3OCI+PHRleHQKICAgICAgICAgICBpZD0idGV4dDEwODIiCiAgICAgICAgICAgc3R5bGU9ImZvbnQtdmFyaWFudDpub3JtYWw7Zm9udC1zaXplOjkuOTYyNnB4O2ZvbnQtZmFtaWx5OmYtMjstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOmYtMi0wO3dyaXRpbmctbW9kZTpsci10YjtmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOm5vbmUiCiAgICAgICAgICAgdHJhbnNmb3JtPSJtYXRyaXgoMSwwLDAsLTEsOTUuNjY0NSwzMC42ODc5KSI+PHRzcGFuCiAgICAgICAgICAgICBpZD0idHNwYW4xMDgwIgogICAgICAgICAgICAgeT0iMCIKICAgICAgICAgICAgIHg9IjAiPlM8L3RzcGFuPjwvdGV4dD48dGV4dAogICAgICAgICAgIGlkPSJ0ZXh0MTA4NiIKICAgICAgICAgICBzdHlsZT0iZm9udC12YXJpYW50Om5vcm1hbDtmb250LXNpemU6Ni45NzM4cHg7Zm9udC1mYW1pbHk6Zi0zOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246Zi0zLTA7d3JpdGluZy1tb2RlOmxyLXRiO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIKICAgICAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMDEuNzczNDgsMjkuMTkzNzYpIj48dHNwYW4KICAgICAgICAgICAgIGlkPSJ0c3BhbjEwODQiCiAgICAgICAgICAgICB5PSIwIgogICAgICAgICAgICAgeD0iMCI+ZjwvdHNwYW4+PC90ZXh0PjwvZz48cGF0aAogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBpZD0icGF0aDEwODgiCiAgICAgICAgIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjQ7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgICAgIGQ9Ik0gNDc0LjIxOSwzNzIuNzcgMzY1LjM1Miw4OTAuODk4IiAvPjxwYXRoCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgIGlkPSJwYXRoMTA5MCIKICAgICAgICAgc3R5bGU9ImZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6bm9uZSIKICAgICAgICAgZD0ibSA0NzQuMjE5LDM3Mi43NyA4LjQwMiw3My4zMiAtNDUuNjMzLC05LjYxIHoiIC8+PHBhdGgKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgaWQ9InBhdGgxMDkyIgogICAgICAgICBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDo0O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIgogICAgICAgICBkPSJtIDQ3NC4yMTksMzcyLjc3IDguNDAyLDczLjMyIC00NS42MzMsLTkuNjEgeiIgLz48ZwogICAgICAgICB0cmFuc2Zvcm09InNjYWxlKDEwKSIKICAgICAgICAgaWQ9ImcxMDk0Ij48dGV4dAogICAgICAgICAgIGlkPSJ0ZXh0MTA5OCIKICAgICAgICAgICBzdHlsZT0iZm9udC12YXJpYW50Om5vcm1hbDtmb250LXNpemU6OS45NjI2cHg7Zm9udC1mYW1pbHk6Zi00Oy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246Zi00LTA7d3JpdGluZy1tb2RlOmxyLXRiO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIKICAgICAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwyNC4xODc5LDkwLjA3NDYpIj48dHNwYW4KICAgICAgICAgICAgIGlkPSJ0c3BhbjEwOTYiCiAgICAgICAgICAgICBzb2RpcG9kaTpyb2xlPSJsaW5lIgogICAgICAgICAgICAgeT0iMCIKICAgICAgICAgICAgIHg9IjAgNS4yMzAzNjQ4IDEwLjQ2MDczIDE1LjY5MTA5NSAyMC45MjE0NTkiPnZhbHVlPC90c3Bhbj48L3RleHQ+PC9nPjxwYXRoCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgIGlkPSJwYXRoMTEwMCIKICAgICAgICAgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6NDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgICAgZD0ibSAxMTkxLjEzLDQwNC40NDkgLTMyLjY1LDU0MC42NzIiIC8+PHBhdGgKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgaWQ9InBhdGgxMTAyIgogICAgICAgICBzdHlsZT0iZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTpub25lIgogICAgICAgICBkPSJtIDExOTEuMTMsNDA0LjQ0OSAxOS4wNyw3MS4yODkgLTQ2LjU3LC0yLjgwOCB6IiAvPjxwYXRoCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgIGlkPSJwYXRoMTEwNCIKICAgICAgICAgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6NDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgICAgZD0ibSAxMTkxLjEzLDQwNC40NDkgMTkuMDcsNzEuMjg5IC00Ni41NywtMi44MDggeiIgLz48ZwogICAgICAgICB0cmFuc2Zvcm09InNjYWxlKDEwKSIKICAgICAgICAgaWQ9ImcxMTA2Ij48dGV4dAogICAgICAgICAgIGlkPSJ0ZXh0MTExMCIKICAgICAgICAgICBzdHlsZT0iZm9udC12YXJpYW50Om5vcm1hbDtmb250LXNpemU6OS45NjI2cHg7Zm9udC1mYW1pbHk6Zi00Oy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246Zi00LTA7d3JpdGluZy1tb2RlOmxyLXRiO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIKICAgICAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSw5Mi4xNzIzLDEwMC45MTIpIj48dHNwYW4KICAgICAgICAgICAgIGlkPSJ0c3BhbjExMDgiCiAgICAgICAgICAgICBzb2RpcG9kaTpyb2xlPSJsaW5lIgogICAgICAgICAgICAgeT0iMCIKICAgICAgICAgICAgIHg9IjAgNS4yMzAzNjQ4IDEwLjQ2MDczIDE1LjY5MTA5NSAyMC45MjE0NTkiPm5laWdoPC90c3Bhbj48L3RleHQ+PC9nPjxwYXRoCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgIGlkPSJwYXRoMTExMiIKICAgICAgICAgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6My45ODtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgICAgZD0ibSAxMTg5LjUzLDEwMTEuMDkgaCAzMS4zNyIgLz48ZwogICAgICAgICB0cmFuc2Zvcm09InNjYWxlKDEwKSIKICAgICAgICAgaWQ9ImcxMTE0Ij48dGV4dAogICAgICAgICAgIGlkPSJ0ZXh0MTExOCIKICAgICAgICAgICBzdHlsZT0iZm9udC12YXJpYW50Om5vcm1hbDtmb250LXNpemU6OS45NjI2cHg7Zm9udC1mYW1pbHk6Zi00Oy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246Zi00LTA7d3JpdGluZy1tb2RlOmxyLXRiO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIKICAgICAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjIuMDkxLDEwMC45MTIpIj48dHNwYW4KICAgICAgICAgICAgIGlkPSJ0c3BhbjExMTYiCiAgICAgICAgICAgICBzb2RpcG9kaTpyb2xlPSJsaW5lIgogICAgICAgICAgICAgeT0iMCIKICAgICAgICAgICAgIHg9IjAgNS4yMzAzNjQ4IDEwLjQ2MDczIDE1LjY5MTA5NSAyMC45MjE0NTkiPnZhbHVlPC90c3Bhbj48L3RleHQ+PC9nPjwvZz48L2c+PC9zdmc+Cg==) It implements, in its `Upwind.G` method, the discretization: ```math \mathbf{\alpha}_\frac{1}{2}(\mathbf{u}_i) \hat{\mathbf{n}} = \left[ \left(\mathbf{u}_{i_f} \cdot \hat{\mathbf{n}} > 0\right) \alpha_i + \left(\mathbf{u}_{i_f} \cdot \hat{\mathbf{n}} < 0\right) \alpha_{i+1} \right] \hat{\mathbf{n}} ``` on **one face** ```python from josie.bn.schemes import Upwind Upwind.G?? ``` ### Time schemes Time schemes simply implement the time update for the discretized equation: ```math V_i\partial_t \mathbf{q}_i &+ \sum_{f \in \text{faces}} \left| \mathbf{F} \cdot \hat{\mathbf{n}} \right|_f S_f + \sum_{f \in \text{faces}} \left| \left(\mathbf{D}(\mathbf{q})\cdot\nabla\mathbf{q} \right) \cdot \hat{\mathbf{n}} \right|_f S_f + \\ &+ \left<\mathbf{B}(\mathbf{q})\right>_i \cdot \sum_{f \in \text{faces}} \left| \mathbf{q}\hat{\mathbf{n}} \right|_f S_f - \left< \mathbf{s}(\mathbf{q})\right>_i V_i = \mathbf{0} ``` In compact form: ```math \partial_t \mathbf{q}_i = - \frac{1}{V_i}\mathbf{f}\left(\mathbf{q}_i, t\right) ``` where `$ \mathbf{f} $` contains all the discretized space operators. Integrating in time: ```math q_i^{k+1} = q_i^k - \frac{1}{V_i}\int_t^{t + \Delta t} \mathbf{f}\left(\mathbf{q}_i, \tilde{t}\right)\; \text{d}t ``` `TimeScheme` It implements the term `$ \frac{1}{V_i}\int_t^{t+\Delta t} \mathbf{f}\left(\mathbf{q}_i, \tilde{t}\right)\; \text{d}t $` ```python from josie.scheme.time import TimeScheme TimeScheme?? ``` #### Example `ExplicitEuler` ```math \frac{1}{V_i} \int_t^{t + \Delta t} \mathbf{f}\left(\mathbf{q}_i, \tilde{t}\right)\; \text{d}t \sim \frac{1}{V_i}\mathbf{f}\left(\mathbf{q}_i^k, t_k\right) \Delta t ``` ```python from josie.general.schemes.time import ExplicitEuler ExplicitEuler?? ```