Definition in file dsdpschurmat.h.
Go to the source code of this file.
Data Structures | |
| struct | DSDPSchurMat_C |
| Schur complement matrix whose solution is the Newton direction. More... | |
Typedefs | |
| typedef struct DSDPSchurMat_C | DSDPSchurMat |
| This object represents the Schur Matrix. Its structure is opaque to the DSDP solver, but it must implement the interface below and provide a structure of function pointers. | |
Functions | |
| int | DSDPSchurMatAddDiagonal (DSDPSchurMat, DSDPVec) |
| Add elements to a row of the Schur matrix. | |
| int | DSDPSchurMatAddDiagonalElement (DSDPSchurMat, int, double) |
| Determine with the cone should compute this diagonal element of M and RHS. | |
| int | DSDPSchurMatAddR (DSDPSchurMat, int, double) |
| Add an element to the Schur matrix correponding the variable r. | |
| int | DSDPSchurMatAddRow (DSDPSchurMat, int, double, DSDPVec) |
| Add elements to a row of the Schur matrix. | |
| int | DSDPSchurMatAssemble (DSDPSchurMat) |
| Final assembly of M. | |
| int | DSDPSchurMatDestroy (DSDPSchurMat *) |
| Free the memory in the data structure. | |
| int | DSDPSchurMatDiagonalScaling (DSDPSchurMat, DSDPVec) |
| Get the scaling and nonzero pattern of each diagonal element of the matrix. | |
| int | DSDPSchurMatFactor (DSDPSchurMat, DSDPTruth *) |
| Factor M. | |
| int | DSDPSchurMatInitialize (DSDPSchurMat *) |
| Initialize pointers to null. | |
| int | DSDPSchurMatInParallel (DSDPSchurMat, DSDPTruth *) |
| Determine whether M is computed in parallel. | |
| int | DSDPSchurMatMultiply (DSDPSchurMat, DSDPVec, DSDPVec) |
| Multiply M by a vector. y = M x. | |
| int | DSDPSchurMatReducePVec (DSDPSchurMat, DSDPVec) |
| Collect elements of the vector. | |
| int | DSDPSchurMatRowColumnScaling (DSDPSchurMat, int, DSDPVec, int *) |
| Get the scaling and nonzero pattern of each column in this row of the matrix. | |
| int | DSDPSchurMatRowScaling (DSDPSchurMat, DSDPVec) |
| Identify which rows on on this processor. | |
| int | DSDPSchurMatSetData (DSDPSchurMat *, struct DSDPSchurMat_Ops *, void *) |
| Set the Schur matrix with an opaque pointer and structure of function pointers. | |
| int | DSDPSchurMatSetR (DSDPSchurMat, double) |
| Set up the data structure. | |
| int | DSDPSchurMatSetup (DSDPSchurMat, DSDPVec) |
| Set up the data structure. | |
| int | DSDPSchurMatShiftDiagonal (DSDPSchurMat, double) |
| Add a scalar to each diagonal element of the matrix. | |
| int | DSDPSchurMatSolve (DSDPSchurMat, DSDPVec, DSDPVec) |
| Solve the linear system. | |
| int | DSDPSchurMatVariableCompute (DSDPSchurMat, int, double *) |
| Determine with the cone should compute this diagonal element of M and RHS. | |
| int | DSDPSchurMatVariableComputeR (DSDPSchurMat, double *) |
| Add an element to the Schur matrix correponding the variable r. | |
| int | DSDPSchurMatView (DSDPSchurMat) |
| Print the matrix. | |
| int | DSDPSchurMatZeroEntries (DSDPSchurMat) |
| Zero all element in the matrix. | |
| struct DSDPSchurMat_C DSDPSchurMat |
This object represents the Schur Matrix. Its structure is opaque to the DSDP solver, but it must implement the interface below and provide a structure of function pointers.
Definition at line 49 of file dsdpschurmat.h.
| int DSDPSchurMatAddDiagonal | ( | DSDPSchurMat | M, | |
| DSDPVec | D | |||
| ) |
Add elements to a row of the Schur matrix.
| M | matrix | |
| D | diagonal elements. |
Definition at line 272 of file dsdpschurmatadd.c.
| int DSDPSchurMatAddDiagonalElement | ( | DSDPSchurMat | M, | |
| int | row, | |||
| double | dd | |||
| ) |
Determine with the cone should compute this diagonal element of M and RHS.
| M | matrix | |
| row | correponding the y variable | |
| dd | zero or one.. |
Definition at line 157 of file dsdpschurmatadd.c.
| int DSDPSchurMatAddR | ( | DSDPSchurMat | M, | |
| int | row, | |||
| double | dd | |||
| ) |
Add an element to the Schur matrix correponding the variable r.
| M | matrix | |
| row | corresponding to variable y. | |
| dd | element |
Definition at line 198 of file dsdpschurmatadd.c.
| int DSDPSchurMatAddRow | ( | DSDPSchurMat | M, | |
| int | row, | |||
| double | alpha, | |||
| DSDPVec | R | |||
| ) |
Add elements to a row of the Schur matrix.
| M | matrix | |
| row | correponding to variable y | |
| alpha | multiply elements in R by this scalar. | |
| R | a row of elements. |
Definition at line 76 of file dsdpschurmatadd.c.
Referenced by DSDPAddSchurRow(), and SDPConeComputeHessian().
| int DSDPSchurMatAssemble | ( | DSDPSchurMat | M | ) |
Final assembly of M.
| M | matrix |
Definition at line 174 of file dsdpschurmat.c.
Referenced by DSDPComputeHessian().
| int DSDPSchurMatDestroy | ( | DSDPSchurMat * | M | ) |
Free the memory in the data structure.
| M | matrix |
Definition at line 414 of file dsdpschurmat.c.
Referenced by DSDPTakeDown().
| int DSDPSchurMatDiagonalScaling | ( | DSDPSchurMat | M, | |
| DSDPVec | D | |||
| ) |
Get the scaling and nonzero pattern of each diagonal element of the matrix.
| M | matrix | |
| D | multply each element of the diagonal by this quantity. |
Definition at line 235 of file dsdpschurmatadd.c.
Referenced by DSDPSchurMatRowScaling().
| int DSDPSchurMatFactor | ( | DSDPSchurMat | M, | |
| DSDPTruth * | successful | |||
| ) |
Factor M.
| M | matrix | |
| successful | false if factorization failed. |
Definition at line 196 of file dsdpschurmat.c.
Referenced by DSDPComputeDualStepDirections().
| int DSDPSchurMatInitialize | ( | DSDPSchurMat * | M | ) |
Initialize pointers to null.
| M | Schur matrix object |
Definition at line 79 of file dsdpschurmat.c.
Referenced by DSDPCreate().
| int DSDPSchurMatInParallel | ( | DSDPSchurMat | M, | |
| DSDPTruth * | flag | |||
| ) |
Determine whether M is computed in parallel.
| M | matrix | |
| flag | true or false |
Definition at line 149 of file dsdpschurmat.c.
Referenced by DSDPSchurMatDiagonalScaling(), DSDPSchurMatReducePVec(), and DSDPSchurMatVariableCompute().
| int DSDPSchurMatMultiply | ( | DSDPSchurMat | M, | |
| DSDPVec | x, | |||
| DSDPVec | y | |||
| ) |
Multiply M by a vector. y = M x.
| M | matrix | |
| x | in vector. | |
| y | product. |
Definition at line 231 of file dsdpschurmat.c.
| int DSDPSchurMatReducePVec | ( | DSDPSchurMat | M, | |
| DSDPVec | x | |||
| ) |
Collect elements of the vector.
| M | matrix | |
| x | vector. |
Definition at line 307 of file dsdpschurmat.c.
Referenced by DSDPComputeG(), DSDPComputeHessian(), and DSDPHessianMultiplyAdd().
| int DSDPSchurMatRowColumnScaling | ( | DSDPSchurMat | M, | |
| int | row, | |||
| DSDPVec | V, | |||
| int * | nzcols | |||
| ) |
Get the scaling and nonzero pattern of each column in this row of the matrix.
| M | matrix | |
| row | correponding to variable y | |
| V | multply each element of the row by this quantity. | |
| nzcols | how many nonzeros. Check for a 0! Conic object call this routine when evaluating the Hessian of the barrier term. The vector V identifies sparsity, whether its using upper or lower half of Schur, and also used to distribute rows over processros The elements will be a 0 or a 1. This routine is to be used with DSDPSchurMatAddRow(). |
Definition at line 33 of file dsdpschurmatadd.c.
Referenced by SDPConeComputeHessian().
| int DSDPSchurMatRowScaling | ( | DSDPSchurMat | M, | |
| DSDPVec | D | |||
| ) |
Identify which rows on on this processor.
| M | matrix | |
| D | Variables marked with 0 or 1. |
Definition at line 399 of file dsdpschurmat.c.
Referenced by DSDPComputeG(), and DSDPHessianMultiplyAdd().
| int DSDPSchurMatSetData | ( | DSDPSchurMat * | M, | |
| struct DSDPSchurMat_Ops * | ops, | |||
| void * | data | |||
| ) |
Set the Schur matrix with an opaque pointer and structure of function pointers.
| M | Schur matrix object | |
| ops | address of a structure of function pointers. | |
| data | opaque pointer to its internal data structure. |
Definition at line 28 of file dsdpschurmat.c.
Referenced by DSDPSchurMatDestroy(), DSDPSchurMatInitialize(), and DSDPSetSchurMatOps().
| int DSDPSchurMatSetR | ( | DSDPSchurMat | M, | |
| double | rr | |||
| ) |
Set up the data structure.
| M | matrix | |
| rr | residual |
Definition at line 338 of file dsdpschurmat.c.
Referenced by DSDPComputeG(), DSDPComputeHessian(), and DSDPComputeNewY().
| int DSDPSchurMatSetup | ( | DSDPSchurMat | M, | |
| DSDPVec | Y | |||
| ) |
Set up the data structure.
| M | matrix | |
| Y | variable vector. |
Definition at line 352 of file dsdpschurmat.c.
Referenced by DSDPSetup().
| int DSDPSchurMatShiftDiagonal | ( | DSDPSchurMat | M, | |
| double | dd | |||
| ) |
Add a scalar to each diagonal element of the matrix.
| M | matrix | |
| dd | diagonal shift |
Definition at line 120 of file dsdpschurmat.c.
Referenced by DSDPComputeDualStepDirections().
| int DSDPSchurMatSolve | ( | DSDPSchurMat | M, | |
| DSDPVec | b, | |||
| DSDPVec | x | |||
| ) |
Solve the linear system.
| M | matrix | |
| b | the right-hand side | |
| x | solution |
Definition at line 466 of file dsdpschurmat.c.
Referenced by DSDPCGSolve().
| int DSDPSchurMatVariableCompute | ( | DSDPSchurMat | M, | |
| int | row, | |||
| double * | rcv | |||
| ) |
Determine with the cone should compute this diagonal element of M and RHS.
| M | matrix | |
| row | correponding the y variable | |
| rcv | Used to evaluate M. Important in parallel implementation. |
Definition at line 120 of file dsdpschurmatadd.c.
Referenced by DSDPObjectiveGH().
| int DSDPSchurMatVariableComputeR | ( | DSDPSchurMat | M, | |
| double * | rcv | |||
| ) |
Add an element to the Schur matrix correponding the variable r.
| M | matrix | |
| *rcv | zero or one |
Definition at line 181 of file dsdpschurmatadd.c.
| int DSDPSchurMatView | ( | DSDPSchurMat | M | ) |
Print the matrix.
| M | matrix |
Definition at line 376 of file dsdpschurmat.c.
Referenced by DSDPComputeDualStepDirections().
| int DSDPSchurMatZeroEntries | ( | DSDPSchurMat | M | ) |
Zero all element in the matrix.
| M | matrix |
Definition at line 97 of file dsdpschurmat.c.
Referenced by DSDPComputeHessian().
1.5.5