DSDP
Functions
dsdpblock.c File Reference

Operations on a single SDP block. More...

Go to the source code of this file.

Functions

int DSDPBlockAddDataMatrix (DSDPBlockData *ADATA, int vari, struct DSDPDataMat_Ops *dsdpdataops, void *data)
 Add data matrix into SDP block.
 
int DSDPBlockADot (DSDPBlockData *ADATA, double aa, DSDPVec Alpha, DSDPVMat X, DSDPVec AX)
 Compute inner product of XX with data matrices.
 
int DSDPBlockASum (DSDPBlockData *ADATA, double aa, DSDPVec Yk, DSDPVMat XX)
 Sum the data matrices.
 
int DSDPBlockCountNonzeroMatrices (DSDPBlockData *ADATA, int *nzmats)
 Count how many data matrices are in a block of data.
 
int DSDPBlockDataAllocate (DSDPBlockData *ADATA, int nnz)
 Allocate some structures.
 
int DSDPBlockDataDestroy (DSDPBlockData *ADATA)
 Free the data matrices.
 
int DSDPBlockDataInitialize (DSDPBlockData *ADATA)
 Set pointers to null.
 
int DSDPBlockDataMarkNonzeroMatrices (DSDPBlockData *ADATA, int *annz)
 Mark which variable in block have a data matrix.
 
int DSDPBlockDataRowSparsity (DSDPBlockData *ADATA, int row, int ai[], int rnnz[], int n)
 Determine sparsity pattern of data.
 
int DSDPBlockFactorData (DSDPBlockData *ADATA, DSDPVMat X, SDPConeVec W)
 Factor the data matrices.
 
int DSDPBlockGetMatrix (DSDPBlockData *ADATA, int id, int *vari, double *scl, DSDPDataMat *A)
 Get a data matrix from a block of data.
 
int DSDPBlockRemoveDataMatrix (DSDPBlockData *ADATA, int vari)
 Remove a data matrix.
 
int DSDPBlockSetDataMatrix (DSDPBlockData *ADATA, int vari, struct DSDPDataMat_Ops *dsdpdataops, void *data)
 Set data matrix into SDP block.
 
int DSDPBlockTakeDownData (DSDPBlockData *ADATA)
 Free structures in block of data.
 
int DSDPBlockvAv (DSDPBlockData *ADATA, double aa, DSDPVec Alpha, SDPConeVec V, DSDPVec VAV)
 Set VAV[i] to aa * Alpha[i] * V' A[i] V.
 
int DSDPBlockView (DSDPBlockData *ADATA)
 Print the structure of the block.
 
int DSDPBlockView2 (DSDPBlockData *ADATA)
 Print the data.
 
int DSDPDataMatCheck (DSDPDataMat AA, SDPConeVec W, DSDPIndex IS, DSDPVMat XX)
 Check correctness of operations on the data.
 

Detailed Description

Operations on a single SDP block.

Definition in file dsdpblock.c.

Function Documentation

◆ DSDPBlockAddDataMatrix()

int DSDPBlockAddDataMatrix ( DSDPBlockData * ADATA,
int vari,
struct DSDPDataMat_Ops * dsdpdataops,
void * data )

Add data matrix into SDP block.

Parameters
ADATAblock of data.
varithe variable to which the matrix corresponds.
dsdpdataopsfunction pointers
dataopaque pointer to matrix.

Definition at line 381 of file dsdpblock.c.

Referenced by DSDPBlockSetDataMatrix().

◆ DSDPBlockADot()

int DSDPBlockADot ( DSDPBlockData * ADATA,
double aa,
DSDPVec Alpha,
DSDPVMat X,
DSDPVec AX )

Compute inner product of XX with data matrices.

Parameters
ADATAblock of data.
aascalar
Alphascalar.
XDense symmetric matrix
AXSet AX[i] to aa * Alpha[i] * Dot( A[i] * X)

Definition at line 49 of file dsdpblock.c.

Referenced by SDPConeComputeHessian(), SDPConeComputeRHS(), and SDPConeComputeXDot().

◆ DSDPBlockASum()

int DSDPBlockASum ( DSDPBlockData * ADATA,
double aa,
DSDPVec Yk,
DSDPVMat XX )

Sum the data matrices.

Parameters
ADATAblock of data.
aascalar
Ykscalar.
XXequals aa * sum ( YK[i]* A[i] )

Definition at line 20 of file dsdpblock.c.

Referenced by SDPConeComputeSS(), and SDPConeMultiply().

◆ DSDPBlockCountNonzeroMatrices()

int DSDPBlockCountNonzeroMatrices ( DSDPBlockData * ADATA,
int * nzmats )

Count how many data matrices are in a block of data.

Parameters
ADATAblock of data.
nzmatsset to number of nonzero matrices. Numbers from 0 to this number can be used as a matrix id in DSDPBlockGetMatrix()

Definition at line 272 of file dsdpblock.c.

Referenced by DSDPDataTransposeSetup(), SDPConeComputeRHS(), SDPConeComputeXX(), and SDPConeMultiply().

◆ DSDPBlockDataAllocate()

int DSDPBlockDataAllocate ( DSDPBlockData * ADATA,
int nnz )

Allocate some structures.

Parameters
ADATAblock of data.
nnznumber of data matrices to allocate space

Definition at line 221 of file dsdpblock.c.

Referenced by DSDPBlockAddDataMatrix().

◆ DSDPBlockDataDestroy()

int DSDPBlockDataDestroy ( DSDPBlockData * ADATA)

Free the data matrices.

Parameters
ADATAblock of data.

Definition at line 195 of file dsdpblock.c.

Referenced by SDPConeDestroy().

◆ DSDPBlockDataInitialize()

int DSDPBlockDataInitialize ( DSDPBlockData * ADATA)

Set pointers to null.

Parameters
ADATAblock of data.

Definition at line 163 of file dsdpblock.c.

Referenced by DSDPBlockDataDestroy(), and DSDPBlockInitialize().

◆ DSDPBlockDataMarkNonzeroMatrices()

int DSDPBlockDataMarkNonzeroMatrices ( DSDPBlockData * ADATA,
int * annz )

Mark which variable in block have a data matrix.

Parameters
ADATAblock of data.
annzarray of integers to mark.

Definition at line 254 of file dsdpblock.c.

Referenced by DSDPDataTransposeSetup().

◆ DSDPBlockDataRowSparsity()

int DSDPBlockDataRowSparsity ( DSDPBlockData * ADATA,
int row,
int ai[],
int rnnz[],
int n )

Determine sparsity pattern of data.

Parameters
ADATAblock of data.
rowfrom 0 to n.
ai(input) array of ones and zeros that identify which data matrices to check.
rnnz(output) array of length m where nonzeros indicate nonzero data.
ndimension of block.

Definition at line 330 of file dsdpblock.c.

◆ DSDPBlockFactorData()

int DSDPBlockFactorData ( DSDPBlockData * ADATA,
DSDPVMat X,
SDPConeVec W )

Factor the data matrices.

Parameters
ADATAblock of data.
Xwork array
WWork vector

Definition at line 113 of file dsdpblock.c.

Referenced by DSDPBlockSetup().

◆ DSDPBlockGetMatrix()

int DSDPBlockGetMatrix ( DSDPBlockData * ADATA,
int id,
int * vari,
double * scl,
DSDPDataMat * A )

Get a data matrix from a block of data.

Parameters
ADATAblock of data.
ididentfier of the matrices, numbered consecutively from 0.
variset to variable number corresponding to A.
sclscaling
Adata matrix.

Definition at line 307 of file dsdpblock.c.

Referenced by DSDPBlockFactorData(), DSDPDataTransposeSetup(), SDPConeComputeHessian(), SDPConeComputeRHS(), SDPConeComputeXX(), and SDPConeMultiply().

◆ DSDPBlockRemoveDataMatrix()

int DSDPBlockRemoveDataMatrix ( DSDPBlockData * ADATA,
int vari )

Remove a data matrix.

Parameters
ADATAblock of data.
varivariable corresponding the matrix.

Definition at line 351 of file dsdpblock.c.

Referenced by DSDPBlockSetDataMatrix(), and SDPConeSetRMatrix().

◆ DSDPBlockSetDataMatrix()

int DSDPBlockSetDataMatrix ( DSDPBlockData * ADATA,
int vari,
struct DSDPDataMat_Ops * dsdpdataops,
void * data )

Set data matrix into SDP block.

Parameters
ADATAblock of data.
varithe variable to which the matrix corresponds.
dsdpdataopsfunction pointers
dataopaque pointer to matrix.

Definition at line 406 of file dsdpblock.c.

Referenced by SDPConeSetRMatrix().

◆ DSDPBlockTakeDownData()

int DSDPBlockTakeDownData ( DSDPBlockData * ADATA)

Free structures in block of data.

Parameters
ADATAblock of data.

Definition at line 182 of file dsdpblock.c.

Referenced by DSDPBlockDataDestroy(), and DSDPBlockTakeDown().

◆ DSDPBlockvAv()

int int DSDPBlockvAv ( DSDPBlockData * ADATA,
double aa,
DSDPVec Alpha,
SDPConeVec V,
DSDPVec VAV )

Set VAV[i] to aa * Alpha[i] * V' A[i] V.

Parameters
ADATAblock of data.
aascalar
Alphascalar.
Vvecotr
VAVthe product

Definition at line 84 of file dsdpblock.c.

Referenced by SDPConeComputeHessian().

◆ DSDPBlockView()

int DSDPBlockView ( DSDPBlockData * ADATA)

Print the structure of the block.

Parameters
ADATAblock of data.

Definition at line 454 of file dsdpblock.c.

◆ DSDPBlockView2()

int DSDPBlockView2 ( DSDPBlockData * ADATA)

Print the data.

Parameters
ADATAblock of data.

Definition at line 474 of file dsdpblock.c.

◆ DSDPDataMatCheck()

int DSDPDataMatCheck ( DSDPDataMat AA,
SDPConeVec W,
DSDPIndex IS,
DSDPVMat XX )

Check correctness of operations on the data.

Parameters
AAdata matrix.
Wwork vector
ISwork array
XXwork array

Definition at line 498 of file dsdpblock.c.