/* PatchAndGoInfo.h */
#include "../IV.h"
#include "../DV.h"
/*--------------------------------------------------------------------*/
/*
-----------------------------------------------------------------
this object is used by the Chv object to implement the
"patch-and-go" strategies, used in specialized optimization
and structural analysis applications.
strategy -- type of patch-and-go strategy
1 -- used with optimization matrices
if ( |a_{i,i}| <= toosmall ) {
set a_{i,i} = 1.0
set offdiagonals = 0.0
}
2 -- used with structural analysis matrices
if ( |a_{i,i}| <= fudge ) {
set a_{i,i} = fudge * max (1, |a_{i,*}|, |a_{*,i}|)
}
toosmall -- measure of smallness for diagonal entry
fudge -- change factor for diagonal entry
fudgeIV -- (optional) stores locations where modifications made
fudgeDV -- (optional) stores modifications
created -- 98aug26, cca
-----------------------------------------------------------------
*/
typedef struct _PatchAndGoInfo PatchAndGoInfo ;
struct _PatchAndGoInfo {
int strategy ;
double toosmall ;
double fudge ;
IV *fudgeIV ;
DV *fudgeDV ;
} ;
/*--------------------------------------------------------------------*/
/*
------------------------------------------------------------------------
----- methods found in basics.c ----------------------------------------
------------------------------------------------------------------------
*/
/*
-----------------------
constructor method
created -- 98aug26, cca
-----------------------
*/
PatchAndGoInfo *
PatchAndGoInfo_new (
void
) ;
/*
-----------------------
set the default fields
created -- 98aug26, cca
-----------------------
*/
void
PatchAndGoInfo_setDefaultFields (
PatchAndGoInfo *info
) ;
/*
-----------------------
clear the data fields
created -- 98aug26, cca
-----------------------
*/
void
PatchAndGoInfo_clearData (
PatchAndGoInfo *info
) ;
/*
-----------------------
destructor
created -- 98aug26, cca
-----------------------
*/
void
PatchAndGoInfo_free (
PatchAndGoInfo *info
) ;
/*--------------------------------------------------------------------*/
/*
------------------------------------------------------------------------
----- methods found in init.c ------------------------------------------
------------------------------------------------------------------------
*/
/*
------------------------------------------------------------
purpose -- to initialize the patch-and-go information object
strategy -- type of patch-and-go strategy
1 -- used with optimization matrices
if ( |a_{i,i}| <= toosmall ) {
set a_{i,i} = 1.0
set offdiagonals = 0.0
}
2 -- used with structural analysis matrices
if ( |a_{i,i}| <= fudge ) {
set a_{i,i} = fudge * max (1, |a_{i,*}|, |a_{*,i}|)
}
toosmall -- tolerance for first strategy
fudge -- fudge factor for second strategy
storeids -- if nonzero, the row and column numbers where
patches have been applied are stored in an IV object
storevalues -- if nonzero and strategy 2, the differences
between the old and new diagonal magnitudes will be
stored in a DV object
created -- 98aug27, cca
------------------------------------------------------------
*/
void
PatchAndGoInfo_init (
PatchAndGoInfo *info,
int strategy,
double toosmall,
double fudge,
int storeids,
int storevalues
) ;
/*--------------------------------------------------------------------*/
syntax highlighted by Code2HTML, v. 0.9.1