Solver Client


Data Structures

struct  slv_reorder_data
struct  dof_data_structure

Defines

#define SLVMAXCLIENTS   100

Typedefs

typedef void * SlvClientToken
typedef dof_data_structure dof_t

Functions

ASC_DLLSPEC int slv_lookup_client (const char *solverName)
int Solv_C_CheckHalt (void)
ASC_DLLSPEC unsigned int slv_serial_id (slv_system_t sys)
ASC_DLLSPEC dof_tslv_get_dofdata (slv_system_t server)
ASC_DLLSPEC dof_tslv_get_log_dofdata (slv_system_t server)
ASC_DLLSPEC const mtx_block_tslv_get_solvers_blocks (slv_system_t sys)
ASC_DLLSPEC const mtx_block_tslv_get_solvers_log_blocks (slv_system_t sys)
void slv_set_solvers_blocks (slv_system_t sys, int32 len, mtx_region_t *data)
void slv_set_solvers_log_blocks (slv_system_t sys, int32 len, mtx_region_t *data)
ASC_DLLSPEC void slv_check_var_initialization (slv_system_t sys)
ASC_DLLSPEC void slv_check_dvar_initialization (slv_system_t sys)
ASC_DLLSPEC void slv_bnd_initialization (slv_system_t sys)
void slv_set_solvers_var_list (slv_system_t sys, struct var_variable **vlist, int size)
void slv_set_solvers_par_list (slv_system_t sys, struct var_variable **vlist, int size)
void slv_set_solvers_unattached_list (slv_system_t sys, struct var_variable **vlist, int size)
void slv_set_solvers_dvar_list (slv_system_t sys, struct dis_discrete **dvlist, int size)
void slv_set_solvers_disunatt_list (slv_system_t sys, struct dis_discrete **dvlist, int size)
void slv_set_solvers_rel_list (slv_system_t sys, struct rel_relation **rlist, int size)
void slv_set_solvers_condrel_list (slv_system_t sys, struct rel_relation **clist, int size)
void slv_set_solvers_obj_list (slv_system_t sys, struct rel_relation **rlist, int size)
void slv_set_solvers_logrel_list (slv_system_t sys, struct logrel_relation **lrlist, int size)
void slv_set_solvers_condlogrel_list (slv_system_t sys, struct logrel_relation **lrlist, int size)
void slv_set_solvers_when_list (slv_system_t sys, struct w_when **wlist, int size)
void slv_set_solvers_bnd_list (slv_system_t sys, struct bnd_boundary **blist, int size)
ASC_DLLSPEC struct var_variable ** slv_get_solvers_var_list (slv_system_t sys)
var_variable ** slv_get_solvers_par_list (slv_system_t sys)
ASC_DLLSPEC struct var_variable ** slv_get_solvers_unattached_list (slv_system_t sys)
ASC_DLLSPEC struct dis_discrete ** slv_get_solvers_dvar_list (slv_system_t sys)
dis_discrete ** slv_get_solvers_disunatt_list (slv_system_t sys)
ASC_DLLSPEC struct var_variable ** slv_get_master_var_list (slv_system_t sys)
ASC_DLLSPEC struct var_variable ** slv_get_master_par_list (slv_system_t sys)
ASC_DLLSPEC struct var_variable ** slv_get_master_unattached_list (slv_system_t sys)
ASC_DLLSPEC struct dis_discrete ** slv_get_master_dvar_list (slv_system_t sys)
dis_discrete ** slv_get_master_disunatt_list (slv_system_t sys)
ASC_DLLSPEC struct rel_relation ** slv_get_solvers_rel_list (slv_system_t sys)
rel_relation ** slv_get_solvers_condrel_list (slv_system_t sys)
ASC_DLLSPEC struct rel_relation ** slv_get_solvers_obj_list (slv_system_t sys)
ASC_DLLSPEC struct logrel_relation ** slv_get_solvers_logrel_list (slv_system_t sys)
logrel_relation ** slv_get_solvers_condlogrel_list (slv_system_t sys)
w_when ** slv_get_solvers_when_list (slv_system_t sys)
ASC_DLLSPEC struct bnd_boundary ** slv_get_solvers_bnd_list (slv_system_t sys)
ASC_DLLSPEC struct rel_relation ** slv_get_master_rel_list (slv_system_t sys)
rel_relation ** slv_get_master_condrel_list (slv_system_t sys)
rel_relation ** slv_get_master_obj_list (slv_system_t sys)
logrel_relation ** slv_get_master_logrel_list (slv_system_t sys)
logrel_relation ** slv_get_master_condlogrel_list (slv_system_t sys)
w_when ** slv_get_master_when_list (slv_system_t sys)
bnd_boundary ** slv_get_master_bnd_list (slv_system_t sys)
gl_list_tslv_get_symbol_list (slv_system_t sys)
ASC_DLLSPEC int32 slv_need_consistency (slv_system_t sys)
ASC_DLLSPEC int32 slv_get_num_solvers_vars (slv_system_t sys)
int32 slv_get_num_solvers_pars (slv_system_t sys)
ASC_DLLSPEC int32 slv_get_num_solvers_unattached (slv_system_t sys)
ASC_DLLSPEC int32 slv_get_num_solvers_dvars (slv_system_t sys)
int32 slv_get_num_solvers_disunatt (slv_system_t sys)
ASC_DLLSPEC int32 slv_get_num_solvers_rels (slv_system_t sys)
int32 slv_get_num_solvers_condrels (slv_system_t sys)
ASC_DLLSPEC int32 slv_get_num_solvers_objs (slv_system_t sys)
ASC_DLLSPEC int32 slv_get_num_solvers_logrels (slv_system_t sys)
int32 slv_get_num_solvers_condlogrels (slv_system_t sys)
int32 slv_get_num_solvers_whens (slv_system_t sys)
ASC_DLLSPEC int32 slv_get_num_solvers_bnds (slv_system_t sys)
ASC_DLLSPEC int32 slv_get_num_master_vars (slv_system_t sys)
ASC_DLLSPEC int32 slv_get_num_master_pars (slv_system_t sys)
ASC_DLLSPEC int32 slv_get_num_master_unattached (slv_system_t sys)
int32 slv_get_num_master_dvars (slv_system_t sys)
int32 slv_get_num_master_disunatt (slv_system_t sys)
ASC_DLLSPEC int32 slv_get_num_master_rels (slv_system_t sys)
int32 slv_get_num_master_condrels (slv_system_t sys)
int32 slv_get_num_master_objs (slv_system_t sys)
int32 slv_get_num_master_logrels (slv_system_t sys)
int32 slv_get_num_master_condlogrels (slv_system_t sys)
int32 slv_get_num_master_whens (slv_system_t sys)
int32 slv_get_num_master_bnds (slv_system_t sys)
int32 slv_get_num_models (slv_system_t sys)
ASC_DLLSPEC int32 slv_count_solvers_vars (slv_system_t sys, const var_filter_t *vfilter)
int32 slv_count_solvers_pars (slv_system_t sys, const var_filter_t *vfilter)
ASC_DLLSPEC int32 slv_count_solvers_unattached (slv_system_t sys, const var_filter_t *vfilter)
ASC_DLLSPEC int32 slv_count_solvers_dvars (slv_system_t sys, const dis_filter_t *dfilter)
int32 slv_count_solvers_disunatt (slv_system_t sys, const dis_filter_t *dfilter)
ASC_DLLSPEC int32 slv_count_solvers_rels (slv_system_t sys, const rel_filter_t *rfilter)
int32 slv_count_solvers_condrels (slv_system_t sys, const rel_filter_t *rfilter)
int32 slv_count_solvers_objs (slv_system_t sys, const rel_filter_t *rfilter)
ASC_DLLSPEC int32 slv_count_solvers_logrels (slv_system_t sys, const logrel_filter_t *lrfilter)
int32 slv_count_solvers_condlogrels (slv_system_t sys, const logrel_filter_t *lrfilter)
int32 slv_count_solvers_whens (slv_system_t sys, const when_filter_t *wfilter)
ASC_DLLSPEC int32 slv_count_solvers_bnds (slv_system_t sys, const bnd_filter_t *bfilter)
ASC_DLLSPEC int32 slv_count_master_vars (slv_system_t sys, const var_filter_t *vfilter)
int32 slv_count_master_pars (slv_system_t sys, const var_filter_t *vfilter)
int32 slv_count_master_unattached (slv_system_t sys, const var_filter_t *vfilter)
int32 slv_count_master_dvars (slv_system_t sys, const dis_filter_t *dfilter)
int32 slv_count_master_disunatt (slv_system_t sys, const dis_filter_t *dfilter)
ASC_DLLSPEC int32 slv_count_master_rels (slv_system_t sys, const rel_filter_t *rfilter)
int32 slv_count_master_condrels (slv_system_t sys, const rel_filter_t *rfilter)
int32 slv_count_master_objs (slv_system_t sys, const rel_filter_t *rfilter)
int32 slv_count_master_logrels (slv_system_t sys, const logrel_filter_t *lrfilter)
int32 slv_count_master_condlogrels (slv_system_t sys, const logrel_filter_t *lrfilter)
int32 slv_count_master_whens (slv_system_t sys, const when_filter_t *wfilter)
int32 slv_count_master_bnds (slv_system_t sys, const bnd_filter_t *bfilter)
ASC_DLLSPEC void slv_set_obj_relation (slv_system_t sys, struct rel_relation *obj)
ASC_DLLSPEC struct rel_relationslv_get_obj_relation (slv_system_t sys)
void slv_set_obj_variable (slv_system_t sys, struct var_variable *objvar, unsigned maximize)
var_variableslv_get_obj_variable (slv_system_t sys)
real64 slv_get_obj_variable_gradient (slv_system_t sys)
const void * slv_get_diffvars (slv_system_t sys)

Variables

ASC_DLLSPEC int Solv_C_CheckHalt_Flag


Define Documentation

#define SLVMAXCLIENTS   100

The maximum number of clients that ever can be registered. Limit is arbitrary. Note that not all clients of slv_system_t should register, just those that purport to be solve engines and the like.


Typedef Documentation

typedef struct dof_data_structure dof_t

dof data structure dof data type Alias for the number of solver's that have ever registered. The number of solver's that have ever registered. Once a solver is registered, we keep track of its name, a number which is the order it was registered in, and the functions it defines.

typedef void* SlvClientToken

A pointer that is meaningful to a registered client. Each call that requires a client response will include this token so that we can have multiple copies of a particular client simultaneously. Clients shouldn't have to use any global variables to save their state information -- they should put such info with their token.

Note:
to present (6/96) developers: SlvClientToken is an alias for all the old slv*_system_t pointers. cast it to be the type you want.


Function Documentation

ASC_DLLSPEC void slv_bnd_initialization ( slv_system_t  sys  ) 

Initializes the status of a boundary (satisfied ?). At the initial point, it will be given the same value to the current status and the previous status. Therefore, the bit crossed (which can be modified during the iterative scheme) is initialized to FALSE. The evaluation of the status is performed with a call to the function provided in bndman.

ASC_DLLSPEC void slv_check_dvar_initialization ( slv_system_t  sys  ) 

Checks that all the boolean variables on the solvers_dvar_list have been assigned at least once. If any has not, it is assigned a value of TRUE.

ASC_DLLSPEC void slv_check_var_initialization ( slv_system_t  sys  ) 

Checks that all the variables on the solvers_var_list have been assigned at least once. If any has not, it is assigned its scaling value (var_nominal) since this is generally a much better starting value than 0.0.

int32 slv_count_master_bnds ( slv_system_t  sys,
const bnd_filter_t bfilter 
)

Returns the number of master boundaries matching the specified filter. masterlists

int32 slv_count_master_condlogrels ( slv_system_t  sys,
const logrel_filter_t lrfilter 
)

Returns the number of master conditional logical relations matching the specified filter. masterlists

int32 slv_count_master_condrels ( slv_system_t  sys,
const rel_filter_t rfilter 
)

Returns the number of master conditional relations matching the specified filter. masterlists

int32 slv_count_master_disunatt ( slv_system_t  sys,
const dis_filter_t dfilter 
)

Returns the number of master unattached discrete variables matching the specified filter. masterlists

int32 slv_count_master_dvars ( slv_system_t  sys,
const dis_filter_t dfilter 
)

Returns the number of master discrete variables matching the specified filter. masterlists

int32 slv_count_master_logrels ( slv_system_t  sys,
const logrel_filter_t lrfilter 
)

Returns the number of master logical relations matching the specified filter. masterlists

int32 slv_count_master_objs ( slv_system_t  sys,
const rel_filter_t rfilter 
)

Returns the number of master objective relations matching the specified filter. masterlists

int32 slv_count_master_pars ( slv_system_t  sys,
const var_filter_t vfilter 
)

Returns the number of master parameters matching the specified filter. masterlists

ASC_DLLSPEC int32 slv_count_master_rels ( slv_system_t  sys,
const rel_filter_t rfilter 
)

Returns the number of master relations matching the specified filter. masterlists

int32 slv_count_master_unattached ( slv_system_t  sys,
const var_filter_t vfilter 
)

Returns the number of master unattached variables matching the specified filter. masterlists

ASC_DLLSPEC int32 slv_count_master_vars ( slv_system_t  sys,
const var_filter_t vfilter 
)

Returns the number of master variables matching the specified filter. masterlists

int32 slv_count_master_whens ( slv_system_t  sys,
const when_filter_t wfilter 
)

Returns the number of master whens matching the specified filter. masterlists

ASC_DLLSPEC int32 slv_count_solvers_bnds ( slv_system_t  sys,
const bnd_filter_t bfilter 
)

Returns the number of solver boundaries matching the specified filter. Solver's Lists

int32 slv_count_solvers_condlogrels ( slv_system_t  sys,
const logrel_filter_t lrfilter 
)

Returns the number of solver conditional logical relations matching the specified filter. Solver's Lists

int32 slv_count_solvers_condrels ( slv_system_t  sys,
const rel_filter_t rfilter 
)

Returns the number of solver conditional relations matching the specified filter. Solver's Lists

int32 slv_count_solvers_disunatt ( slv_system_t  sys,
const dis_filter_t dfilter 
)

Returns the number of solver unattached discrete variables matching the specified filter. What the Solver Sees

ASC_DLLSPEC int32 slv_count_solvers_dvars ( slv_system_t  sys,
const dis_filter_t dfilter 
)

Returns the number of solver discrete variables matching the specified filter. Solver's Lists

ASC_DLLSPEC int32 slv_count_solvers_logrels ( slv_system_t  sys,
const logrel_filter_t lrfilter 
)

Returns the number of solver logical relations matching the specified filter. Solver's Lists

int32 slv_count_solvers_objs ( slv_system_t  sys,
const rel_filter_t rfilter 
)

Returns the number of solver objective relations matching the specified filter. Solver's Lists

int32 slv_count_solvers_pars ( slv_system_t  sys,
const var_filter_t vfilter 
)

Returns the number of solver parameters matching the specified filter. Solver's Lists

ASC_DLLSPEC int32 slv_count_solvers_rels ( slv_system_t  sys,
const rel_filter_t rfilter 
)

Returns the number of solver relations matching the specified filter. Solver's Lists

ASC_DLLSPEC int32 slv_count_solvers_unattached ( slv_system_t  sys,
const var_filter_t vfilter 
)

Returns the number of solver unattached variables matching the specified filter. Solver's Lists

ASC_DLLSPEC int32 slv_count_solvers_vars ( slv_system_t  sys,
const var_filter_t vfilter 
)

Returns the number of solver variables matching the specified filter. Solver's Lists

int32 slv_count_solvers_whens ( slv_system_t  sys,
const when_filter_t wfilter 
)

Returns the number of solver whens matching the specified filter. Solver's Lists

const void* slv_get_diffvars ( slv_system_t  sys  ) 

Returns:
NULL if not present

ASC_DLLSPEC dof_t* slv_get_dofdata ( slv_system_t  server  ) 

Returns:
pointer to the system's dof structure for a nonlinear solver.
See also:
slv_get_log_dofdata().

ASC_DLLSPEC dof_t* slv_get_log_dofdata ( slv_system_t  server  ) 

Returns:
pointer to the system's dof structure for a logical solver. Data in the structure should be consistent with some interpretation of the solvers_var/rel lists. The pointer this returns cannot be freed. If server is not NULL, the return value will not be NULL.
The DEFAULT interpretation has not yet been established.

struct bnd_boundary** slv_get_master_bnd_list ( slv_system_t  sys  ) 

Returns the (NULL-terminated) list of master boundaries. masterlists

struct logrel_relation** slv_get_master_condlogrel_list ( slv_system_t  sys  ) 

Returns the (NULL-terminated) list of master conditional relations. masterlists

struct rel_relation** slv_get_master_condrel_list ( slv_system_t  sys  ) 

Returns the (NULL-terminated) list of master conditional relations. masterlists

ASC_DLLSPEC struct dis_discrete** slv_get_master_dvar_list ( slv_system_t  sys  ) 

Returns the most recently set master discrete variable list (never NULL) from the system. masterlists

struct logrel_relation** slv_get_master_logrel_list ( slv_system_t  sys  ) 

Returns the (NULL-terminated) list of master logical relations. masterlists

struct rel_relation** slv_get_master_obj_list ( slv_system_t  sys  ) 

Returns the (NULL-terminated) list of master objective relations. masterlists

ASC_DLLSPEC struct var_variable** slv_get_master_par_list ( slv_system_t  sys  ) 

Returns the most recently set master par list (never NULL) from the system. masterlists

ASC_DLLSPEC struct rel_relation** slv_get_master_rel_list ( slv_system_t  sys  ) 

Returns the (NULL-terminated) list of master relations. masterlists

ASC_DLLSPEC struct var_variable** slv_get_master_unattached_list ( slv_system_t  sys  ) 

Returns the most recently set master unattached variable list (never NULL) from the system. masterlists

ASC_DLLSPEC struct var_variable** slv_get_master_var_list ( slv_system_t  sys  ) 

Returns the most recently set master variable list (never NULL) from the system. masterlists

struct w_when** slv_get_master_when_list ( slv_system_t  sys  ) 

Returns the (NULL-terminated) list of master whens. masterlists

int32 slv_get_num_master_bnds ( slv_system_t  sys  ) 

Returns the length of the master boundaries list. The length does NOT include the terminating NULL. masterlists

int32 slv_get_num_master_condlogrels ( slv_system_t  sys  ) 

Returns the length of the master conditional relations list. The length does NOT include the terminating NULL. masterlists

int32 slv_get_num_master_condrels ( slv_system_t  sys  ) 

Returns the length of the master conditional relations list. The length does NOT include the terminating NULL. masterlists

int32 slv_get_num_master_disunatt ( slv_system_t  sys  ) 

Returns the length of the master unattached discrete variables list. The length does NOT include the terminating NULL. masterlists

int32 slv_get_num_master_dvars ( slv_system_t  sys  ) 

Returns the length of the master discrete variables list. The length does NOT include the terminating NULL. masterlists

int32 slv_get_num_master_logrels ( slv_system_t  sys  ) 

Returns the length of the master logical relations list. The length does NOT include the terminating NULL. masterlists

int32 slv_get_num_master_objs ( slv_system_t  sys  ) 

Returns the length of the master objective relations list. The length does NOT include the terminating NULL. masterlists

ASC_DLLSPEC int32 slv_get_num_master_pars ( slv_system_t  sys  ) 

Returns the length of the master parameters list. The length does NOT include the terminating NULL. masterlists

ASC_DLLSPEC int32 slv_get_num_master_rels ( slv_system_t  sys  ) 

Returns the length of the master relations list. The length does NOT include the terminating NULL. masterlists

ASC_DLLSPEC int32 slv_get_num_master_unattached ( slv_system_t  sys  ) 

Returns the length of the master unattached variables list. The length does NOT include the terminating NULL. masterlists

ASC_DLLSPEC int32 slv_get_num_master_vars ( slv_system_t  sys  ) 

Returns the length of the master variables list. The length does NOT include the terminating NULL. masterlists

int32 slv_get_num_master_whens ( slv_system_t  sys  ) 

Returns the length of the master whens list. The length does NOT include the terminating NULL. masterlists

int32 slv_get_num_models ( slv_system_t  sys  ) 

Returns the number of models found in the tree the problem was constructed from. There is no corresponding list. Rel_relations will know which of these models they came from. masterlists

ASC_DLLSPEC int32 slv_get_num_solvers_bnds ( slv_system_t  sys  ) 

Returns the length of the solver boundaries list. The length does NOT include the terminating NULL. Solver's Lists

int32 slv_get_num_solvers_condlogrels ( slv_system_t  sys  ) 

Returns the length of the solver conditional relations list. The length does NOT include the terminating NULL. Solver's Lists

int32 slv_get_num_solvers_condrels ( slv_system_t  sys  ) 

Returns the length of the solver conditional relations list. The length does NOT include the terminating NULL. Solver's Lists

int32 slv_get_num_solvers_disunatt ( slv_system_t  sys  ) 

Returns the length of the solver unattached discrete variables list. The length does NOT include the terminating NULL. Solver's Lists

ASC_DLLSPEC int32 slv_get_num_solvers_dvars ( slv_system_t  sys  ) 

Returns the length of the solver discrete variables list. The length does NOT include the terminating NULL. Solver's Lists

ASC_DLLSPEC int32 slv_get_num_solvers_logrels ( slv_system_t  sys  ) 

Returns the length of the solver logical relations list. The length does NOT include the terminating NULL. Solver's Lists

ASC_DLLSPEC int32 slv_get_num_solvers_objs ( slv_system_t  sys  ) 

Returns the length of the solver objective relations list. The length does NOT include the terminating NULL. Solver's Lists

int32 slv_get_num_solvers_pars ( slv_system_t  sys  ) 

Returns the length of the solver parameters list. The length does NOT include the terminating NULL. Solver's Lists

ASC_DLLSPEC int32 slv_get_num_solvers_rels ( slv_system_t  sys  ) 

Returns the length of the solver relations list. The length does NOT include the terminating NULL. Solver's Lists

ASC_DLLSPEC int32 slv_get_num_solvers_unattached ( slv_system_t  sys  ) 

Returns the length of the solver unsattached variable list. The length does NOT include the terminating NULL. Solver's Lists

ASC_DLLSPEC int32 slv_get_num_solvers_vars ( slv_system_t  sys  ) 

Returns the length of the solver variable list. The length does NOT include the terminating NULL. Solver's Lists

int32 slv_get_num_solvers_whens ( slv_system_t  sys  ) 

Returns the length of the solver whens list. The length does NOT include the terminating NULL. Solver's Lists

ASC_DLLSPEC struct rel_relation* slv_get_obj_relation ( slv_system_t  sys  ) 

Returns:
the internal copy of the objective function, or NULL if none was specified.

Client solvers should minimize the residual of this equation.

struct var_variable* slv_get_obj_variable ( slv_system_t  sys  ) 

Returns the var used for an objective or NULL if none set.

real64 slv_get_obj_variable_gradient ( slv_system_t  sys  ) 

Returns the unscaled gradient of the objective variable, or 0 if no var is set.

ASC_DLLSPEC const mtx_block_t* slv_get_solvers_blocks ( slv_system_t  sys  ) 

Decomposition information for the nonlinear solver.

The blocks of the return value contain decomposition information about the Jacobian of the equations(included) and variables(free and incident) if it is constructed in the ordering of relations/ variables in the solvers_rel/var_lists.

That is, we have done the subproblem partitioning already. Each region may be solved as a separate subproblem in the order given in the list.
We may have also done what we think is a good ordering for row-wise lower-triangular linear factorization codes within each of the blocks. We may have even arranged the columns so that we believe we have made a 'good' set of variables non-basic in the event that the last block is rectangular.

See also:
slv_get_solvers_log_blocks()

ASC_DLLSPEC struct bnd_boundary** slv_get_solvers_bnd_list ( slv_system_t  sys  ) 

Returns the (NULL-terminated) list of solver boundaries. Solver's Lists

struct logrel_relation** slv_get_solvers_condlogrel_list ( slv_system_t  sys  ) 

Returns the (NULL-terminated) list of solver conditional relations. Solver's Lists

struct rel_relation** slv_get_solvers_condrel_list ( slv_system_t  sys  ) 

Returns the (NULL-terminated) list of solver conditional relations. Solver's Lists

struct dis_discrete** slv_get_solvers_disunatt_list ( slv_system_t  sys  ) 

Returns the most recently set unattached discrete variable list (never NULL) from the system. Solver's Lists

ASC_DLLSPEC struct dis_discrete** slv_get_solvers_dvar_list ( slv_system_t  sys  ) 

Returns the most recently set discrete variable list (never NULL) from the system. Solver's Lists

ASC_DLLSPEC const mtx_block_t* slv_get_solvers_log_blocks ( slv_system_t  sys  ) 

Decomposition information for the logical solver.

Parameters:
sys system being analysed.
Returns:
pointer to the block structure, or NULL if and only if sys is NULL.
You are free to reorder any matrix you construct from our equation gradients to suit any factorization method you choose. We strongly recommend that you not do this.
The return value is a