Skip to main content
`Ctrl`+`K`

# MatCreateLMVMDFP

Creates a limited-memory Davidon-Fletcher-Powell (DFP) matrix used for approximating Jacobians. L-DFP is symmetric positive-definite by construction, and is the dual of L-BFGS where Y and S vectors swap roles.

## Synopsis

    #include "petscksp.h"
    PetscErrorCode MatCreateLMVMDFP(MPI_Comm comm, PetscInt n, PetscInt N, Mat *B)

To use the L-DFP matrix with other vector types, the matrix must be created using `MatCreate()` and `MatSetType()`, followed by `MatLMVMAllocate()`. This ensures that the internal storage and work vectors are duplicated from the correct type of vector.

Collective

## Input Parameters

- comm - MPI communicator

- n - number of local rows for storage vectors

- N - global size of the storage vectors

## Output Parameter

- B - the matrix

## Options Database Keys

- -mat_lmvm_scale_type - (developer) type of scaling applied to J0 (none, scalar, diagonal)

- -mat_lmvm_theta - (developer) convex ratio between BFGS and DFP components of the diagonal J0 scaling

- -mat_lmvm_rho - (developer) update limiter for the J0 scaling

- -mat_lmvm_alpha - (developer) coefficient factor for the quadratic subproblem in J0 scaling

- -mat_lmvm_beta - (developer) exponential factor for the diagonal J0 scaling

- -mat_lmvm_sigma_hist - (developer) number of past updates to use in J0 scaling

## Note

It is recommended that one use the `MatCreate()`, `MatSetType()` and/or `MatSetFromOptions()` paradigm instead of this routine directly.

## See Also

KSP: Linear System Solvers, `MatCreate()`, `MATLMVM`, `MATLMVMDFP`, `MatCreateLMVMBFGS()`, `MatCreateLMVMSR1()`, `MatCreateLMVMBrdn()`, `MatCreateLMVMBadBrdn()`, `MatCreateLMVMSymBrdn()`

## Level

intermediate

## Location

src/ksp/ksp/utils/lmvm/dfp/dfp.c

Index of all KSP routines
Table of Contents for all manual pages
Index of all manual pages