19typedef enum { SDPCONEEXIST=1, SDPCONESETUP1=2 } SDPConeStatus;
104#define SDPCONEKEY 5438
105#define SDPConeValid(a) {if (!(a)||((a)->keyid!=SDPCONEKEY)){ DSDPSETERR(101,"DSDPERROR: Invalid SDPCone object\n");}}
107#define DSDPCHKBLOCKERR(a,b); { if (b){ DSDPSETERR1(b,"Block Number: %d,\n",a);} }
108#define DSDPCHKVARERR(a,b); { if (b){ DSDPSETERR1(b,"Variable Number: %d,\n",a);} }
143extern int DSDPBlockEventInitialize(
void);
144extern int DSDPBlockEventZero(
void);
153extern int DSDPUseDefaultDualMatrix(
SDPCone);
177extern int DSDPSetDualMatrix(
SDPCone sdpcone,
int (*createdualmatrix)(
DSDPBlockData*,
DSDPVec,
DSDPVMat,
DSDPVec,
DSDPVec,
DSDPDualMat*,
DSDPDualMat*,
DSDPDSMat*,
void*),
void*);
185extern int DSDPDualMatEventInitialize(
void);
186extern int DSDPVMatEventInitialize(
void);
187extern int DSDPDualMatEventZero(
void);
188extern int DSDPVMatEventZero(
void);
The API to DSDP for those applications using DSDP as a subroutine library.
Solver, solution types, termination codes,.
The interface between the SDPCone and the data matrices.
The interface between the SDPCone and the Delta S matrix.
The interface between the SDPCone and the matrix S.
Lanczos procedure determines the maximum step length.
Methods of a Schur Matrix.
int DSDPBlockvAv(DSDPBlockData *, double, DSDPVec, SDPConeVec, DSDPVec)
Set VAV[i] to aa * Alpha[i] * V' A[i] V.
int SDPConeCheckStorageFormat(SDPCone, int, char)
Check validity of parameters.
int DSDPDataMatCheck(DSDPDataMat, SDPConeVec, DSDPIndex, DSDPVMat)
Check correctness of operations on the data.
int DSDPDataTransposeInitialize(DSDPDataTranspose *)
Initialize transpose structure for data.
int DSDPMakeVMatWithArray(char, double[], int, int, DSDPVMat *)
Allocate V matrix using the given array.
int SDPConeMultiply(SDPCone, int, double, DSDPVec, DSDPVec, DSDPVec)
Compute the gradient to the barrier term.
int DSDPBlockAddDataMatrix(DSDPBlockData *, int, struct DSDPDataMat_Ops *, void *)
Add data matrix into SDP block.
int DSDPBlockView(DSDPBlockData *)
Print the structure of the block.
int SDPConeComputeX3(SDPCone, int, double, DSDPVec, DSDPVec, DSDPVMat)
Compute the matrix X with the given information.
int SDPConeComputeRHS(SDPCone, int, double, DSDPVec, DSDPVec, DSDPVec)
Compute the gradient to the barrier term.
int DSDPBlockView2(DSDPBlockData *)
Print the data.
int DSDPBlockDataMarkNonzeroMatrices(DSDPBlockData *, int *)
Mark which variable in block have a data matrix.
int DSDPBlockDataAllocate(DSDPBlockData *, int)
Allocate some structures.
int SDPConeCheckJ(SDPCone, int)
Check validity of parameter.
int SDPConeComputeHessian(SDPCone, double, DSDPSchurMat, DSDPVec, DSDPVec)
Compute the Hessian to the barrier term.
int DSDPBlockADot(DSDPBlockData *, double, DSDPVec, DSDPVMat, DSDPVec)
Compute inner product of XX with data matrices.
int DSDPBlockASum(DSDPBlockData *, double, DSDPVec, DSDPVMat)
Sum the data matrices.
int DSDPDataTransposeSetup(DSDPDataTranspose *, SDPblk *, int, int)
Set up transpose structure for data.
int SDPConeComputeXX(SDPCone, int, DSDPVec, double, DSDPDualMat, DSDPVMat)
Compute X.
int SDPConeSetup2(SDPCone, DSDPVec, DSDPSchurMat)
Allocate data structure of the cone.
int DSDPBlockDataInitialize(DSDPBlockData *)
Set pointers to null.
int DSDPBlockDataRowSparsity(DSDPBlockData *, int, int[], int[], int)
Determine sparsity pattern of data.
int DSDPBlockSetDataMatrix(DSDPBlockData *, int, struct DSDPDataMat_Ops *, void *)
Set data matrix into SDP block.
int DSDPDataTransposeTakeDown(DSDPDataTranspose *)
Free transpose structure for data.
int SDPConeSetRIdentity(SDPCone, int, int, double)
Add identify matrix to dual matrix.
int DSDPBlockFactorData(DSDPBlockData *, DSDPVMat, SDPConeVec)
Factor the data matrices.
int DSDPBlockGetMatrix(DSDPBlockData *, int, int *, double *, DSDPDataMat *)
Get a data matrix from a block of data.
int DSDPBlockDataDestroy(DSDPBlockData *)
Free the data matrices.
int SDPConeDestroy(SDPCone)
Free data structure of the cone.
int SDPConeCheckN(SDPCone, int, int)
Check validity of parameter.
int DSDPSetDataMatZero(DSDPDataMat *)
Make a data matrix a zero matrix.
int SDPConeSetup(SDPCone, DSDPVec)
Allocate data structure of the cone.
int SDPConeCheckM(SDPCone, int)
Check validity of parameter.
int DSDPBlockCountNonzeroMatrices(DSDPBlockData *, int *)
Count how many data matrices are in a block of data.
int SDPConeComputeSS(SDPCone, int, DSDPVec, DSDPVMat)
Sum the data matrices.
int DSDPBlockInitialize(SDPblk *)
Initialize data structures in one block of the cone.
int DSDPBlockTakeDownData(DSDPBlockData *)
Free structures in block of data.
int DSDPBlockTakeDown(SDPblk *)
Free data structures in one block of the cone.
int SDPConeComputeXDot(SDPCone, int, DSDPVec, DSDPVMat, DSDPVec, double *, double *, double *)
Compute inner product of X with the Data, S, and norm of X.
int DSDPBlockRemoveDataMatrix(DSDPBlockData *, int)
Remove a data matrix.
int DSDPAddSDP(DSDP, SDPCone)
Pass a semidefinite cone to the solver.
int DSDPMakeVMat(char, int, DSDPVMat *)
Allocate V matrix.
Vector operations used by the solver.
struct DSDPVec_C DSDPVec
This object hold m+2 variables: a scaling of C, the y variables, and r.
The interface between the SDPCone and the dense matrix array.
Each block of the SDPCone has two vectors of appropriate size.
Internal structure for data in one block of semidefintie.
Symmetric Delta S matrix for one block in the semidefinite cone.
Symmetric data matrix for one block in the semidefinite cone.
Table of function pointers that operate on the data matrix.
Internal structure for transpose of data.
Represents an S matrix for one block in the semidefinite cone.
Apply Lanczos prodedure to find distance to boundary.
Schur complement matrix whose solution is the Newton direction.
Dense symmetric matrix for one block in the semidefinite cone.
Internal structures for the DSDP solver.
Vector whose length corresponds to dimension of a block in a cone.
Internal structure for semidefinite cone.
Internal structure for block of semidefinite cone.