/misc/src/release/graphviz-2.18-1/src/graphviz-2.18/lib/neatogen/quad_prog_vpsc.h

Go to the documentation of this file.
00001 /* $Id: quad_prog_vpsc.h,v 1.4 2006/12/07 22:49:37 erg Exp $ $Revision: 1.4 $ */
00002 /* vim:set shiftwidth=4 ts=8: */
00003 
00019 /**********************************************************
00020 *      Written by Tim Dwyer for the graphviz package      *
00021 *                http://www.graphviz.org/                 *
00022 *                                                         *
00023 **********************************************************/
00024 
00025 #ifdef __cplusplus
00026 extern "C" {
00027 #endif
00028 
00029 #ifndef _QUAD_PROG_VPSC_H_
00030 #define _QUAD_PROG_VPSC_H_
00031 
00032 #ifdef DIGCOLA
00033 
00034 #include "defs.h"
00035 #include "digcola.h"
00036 #ifdef MOSEK
00037 #include "mosek_quad_solve.h"
00038 #endif /* MOSEK */
00039 
00040 typedef struct CMajEnvVPSC {
00041         float **A;
00042         float *packedMat;
00043         int nv;   /* number of actual vars */
00044         int nldv; /* number of dummy nodes included in lap matrix */
00045         int ndv;  /* number of dummy nodes not included in lap matrix */
00046         Variable **vs;
00047         int m; /* total number of constraints for next iteration */
00048         int gm; /* number of global constraints */
00049         Constraint **cs;
00050         /* global constraints are persistant throughout optimisation process */
00051         Constraint **gcs;
00052         VPSC *vpsc;
00053         float *fArray1; /* utility arrays - reusable memory */
00054         float *fArray2;
00055         float *fArray3;
00056 #ifdef MOSEK
00057         MosekEnv *mosekEnv;
00058 #endif /* MOSEK */
00059 } CMajEnvVPSC;
00060 
00061 extern CMajEnvVPSC* initCMajVPSC(int n, float *packedMat, vtx_data* graph, ipsep_options *opt, int diredges);
00062 
00063 extern int constrained_majorization_vpsc(CMajEnvVPSC*, float*, float*, int);
00064 
00065 extern void deleteCMajEnvVPSC(CMajEnvVPSC *e);
00066 extern void generateNonoverlapConstraints(
00067         CMajEnvVPSC* e,
00068         float nsizeScale,
00069         float** coords,
00070         int k,
00071         boolean transitiveClosure,
00072         ipsep_options* opt
00073 );
00074 
00075 extern void removeoverlaps(int,float**,ipsep_options*);
00076 
00077 typedef struct {
00078         int *nodes;
00079         int num_nodes;
00080 } DigColaLevel;
00081 
00082 /*
00083  * unpack the "ordering" array into an array of DigColaLevel (as defined above)
00084  */
00085 extern DigColaLevel* assign_digcola_levels(int *ordering, int n, int *level_inds, int num_divisions);
00086 extern void delete_digcola_levels(DigColaLevel *l, int num_levels);
00087 extern void print_digcola_levels(FILE* logfile, DigColaLevel *levels, int num_levels);
00088 int get_num_digcola_constraints(DigColaLevel *levels, int num_levels);
00089 #endif 
00090 
00091 #endif /* _QUAD_PROG_VPSC_H_ */
00092 
00093 #ifdef __cplusplus
00094 }
00095 #endif

Generated on Mon Mar 31 19:03:27 2008 for Graphviz by  doxygen 1.5.1