xref: /petsc/src/ksp/ksp/utils/lmvm/rescale/symbrdnrescale.h (revision 58bddbc0aeb8e2276be3739270a4176cb222ba3a)
1 #pragma once
2 
3 #include <../src/ksp/ksp/utils/lmvm/lmvm.h>
4 
5 PETSC_INTERN PetscLogEvent SBRDN_Rescale;
6 
7 typedef struct _n_SymBroydenRescale *SymBroydenRescale;
8 
9 struct _n_SymBroydenRescale {
10   PetscInt                   k;
11   Vec                        invDnew, BFGS, DFP, U, V, W; /* work vectors for diagonal scaling */
12   PetscReal                 *yty, *sts, *yts;             /* scalar arrays for recycling dot products */
13   PetscReal                  theta, rho, alpha, beta;     /* convex combination factors for the scalar or diagonal scaling */
14   PetscReal                  delta, delta_min, delta_max, sigma, tol;
15   PetscInt                   sigma_hist; /* length of update history to be used for scaling */
16   PetscBool                  allocated;
17   PetscBool                  initialized;
18   PetscBool                  forward;
19   MatLMVMSymBroydenScaleType scale_type;
20 };
21 
22 PETSC_INTERN PetscErrorCode SymBroydenRescaleSetDiagonalMode(SymBroydenRescale, PetscBool);
23 PETSC_INTERN PetscErrorCode SymBroydenRescaleGetType(SymBroydenRescale, MatLMVMSymBroydenScaleType *);
24 PETSC_INTERN PetscErrorCode SymBroydenRescaleSetType(SymBroydenRescale, MatLMVMSymBroydenScaleType);
25 PETSC_INTERN PetscErrorCode SymBroydenRescaleSetDelta(Mat, SymBroydenRescale, PetscReal);
26 PETSC_INTERN PetscErrorCode SymBroydenRescaleSetUp(Mat, SymBroydenRescale);
27 PETSC_INTERN PetscErrorCode SymBroydenRescaleInitializeJ0(Mat, SymBroydenRescale);
28 PETSC_INTERN PetscErrorCode SymBroydenRescaleUpdate(Mat, SymBroydenRescale);
29 PETSC_INTERN PetscErrorCode SymBroydenRescaleCopy(SymBroydenRescale, SymBroydenRescale);
30 PETSC_INTERN PetscErrorCode SymBroydenRescaleView(SymBroydenRescale, PetscViewer);
31 PETSC_INTERN PetscErrorCode SymBroydenRescaleSetFromOptions(Mat, SymBroydenRescale, PetscOptionItems PetscOptionsObject);
32 PETSC_INTERN PetscErrorCode SymBroydenRescaleReset(Mat, SymBroydenRescale, MatLMVMResetMode);
33 PETSC_INTERN PetscErrorCode SymBroydenRescaleDestroy(SymBroydenRescale *);
34 PETSC_INTERN PetscErrorCode SymBroydenRescaleCreate(SymBroydenRescale *);
35