discretize.TreeMesh.face_x_divergence#
- property TreeMesh.face_x_divergence#
X-derivative operator (x-faces to cell-centres).
This property constructs a 2nd order x-derivative operator which maps from x-faces to cell centers. The operator is a sparse matrix \(\mathbf{D_x}\) that can be applied as a matrix-vector product to a discrete scalar quantity \(\boldsymbol{\phi}\) that lives on x-faces; i.e.:
dphi_dx = Dx @ phi
For a discrete vector whose x-component lives on x-faces, this operator can also be used to compute the contribution of the x-component toward the divergence.
- Returns
- (
n_cells
,n_faces_x
)scipy.sparse.csr_matrix
The numerical x-derivative operator from x-faces to cell centers
- (
Examples
Below, we demonstrate 1) how to apply the face-x divergence operator, and 2) the mapping of the face-x divergence operator and its sparsity. Our example is carried out on a 2D mesh but it can be done equivalently for a 3D mesh.
We start by importing the necessary packages and modules.
>>> from discretize import TensorMesh >>> import numpy as np >>> import matplotlib.pyplot as plt >>> import matplotlib as mpl
For a discrete scalar quantity \(\boldsymbol{\phi}\) defined on the x-faces, we take the x-derivative by constructing the face-x divergence operator and multiplying as a matrix-vector product.
>>> h = np.ones(40) >>> mesh = TensorMesh([h, h], "CC")
Create a discrete quantity on x-faces
>>> faces_x = mesh.faces_x >>> phi = np.exp(-(faces_x[:, 0] ** 2) / 8** 2)
Construct the x-divergence operator and apply to vector
>>> Dx = mesh.face_x_divergence >>> dphi_dx = Dx @ phi
Plot the original function and the x-divergence
(Source code, png, pdf)
The discrete x-face divergence operator is a sparse matrix that maps from x-faces to cell centers. To demonstrate this, we construct a small 2D mesh. We then show the ordering of the elements in the original discrete quantity \(\boldsymbol{\phi}}\) and its x-derivative \(\partial \boldsymbol{\phi}}/ \partial x\) as well as a spy plot.