.. _ShellMatrix_Petsc: ############# Petsc wrapper ############# The following objects are only available if ``PetscDefined`` is set which is the case if :ref:`Petsc` is included. The `Petsc MATSHELL `_ is created by the :ref:`Operator class` by calling :ref:`create_PetscShellMatrix()`. It contains a pointer to an instance of the the :ref:`ShellMatrix class` which works with the vector structure, `Vec `_, of :ref:`Petsc`. The **matrix-free** multiplcation is a wrapper of the low-level function :ref:`MATMUL_basic(...)`: .. _ShellMatrix_Petsc_MATMUL_PETSC: .. doxygenfunction:: danceq::internal::MATMUL_PETSC :no-link: The function :ref:`MATDESTROY_PETSC()` destroys the shell by deleting the pointer to the :ref:`ShellMatrix class`: .. _ShellMatrix_Petsc_MATMUL_DESTROY: .. doxygenfunction:: danceq::internal::MATDESTROY_PETSC :no-link: