discretize.CurvilinearMesh.get_face_inner_product_surface_deriv#

CurvilinearMesh.get_face_inner_product_surface_deriv(model, invert_model=False, invert_matrix=False, **kwargs)[source]#

Get a function handle to multiply a vector with derivative of face inner product surface matrix (or its inverse).

Let \(\mathbf{M}(\mathbf{m})\) be the face inner product surface matrix constructed with a set of diagnostic property parameters \(\mathbf{m}\) (or its inverse) defined on mesh faces. get_face_inner_product_surface_deriv constructs a function handle

\[\mathbf{F}(\mathbf{u}) = \mathbf{u}^T \, \frac{\partial \mathbf{M}(\mathbf{m})}{\partial \mathbf{m}}\]

which accepts any numpy.array \(\mathbf{u}\) of shape (n_faces,). That is, get_face_inner_product_surface_deriv constructs a function handle for computing the dot product between a vector \(\mathbf{u}\) and the derivative of the face inner product surface matrix (or its inverse) with respect to the property parameters. When computed, \(\mathbf{F}(\mathbf{u})\) returns a scipy.sparse.csr_matrix of shape (n_faces, n_param).

The function handle can only be created for isotropic diagnostic properties.

Parameters:
model(n_faces, ) numpy.ndarray

Parameters defining the diagnostic property values for every face in the mesh.

invert_modelbool, optional

The inverse of model is used as the diagnostic property.

invert_matrixbool, optional

Returns the inverse of the inner product surface matrix.

Returns:
function

The function handle \(\mathbf{F}(\mathbf{u})\) which accepts a (n_faces) numpy.ndarray \(\mathbf{u}\). The function returns a (n_faces, n_params) scipy.sparse.csr_matrix.