Ipopt 3.12.10

- Main Page
- Classes
- Files

- File List
- File Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
hsl_ma97d.h
Go to the documentation of this file.
1 /*
2 * COPYRIGHT (c) 2012 The Science and Technology Facilities Council (STFC)
3 * All Rights Reserved.
4 * This code is published under the Eclipse Public License.
5 *
6 * Authors: Jonathan Hogg STFC 2012-12-21
7 */
8
9 #ifndef HSL_MA97D_H
10 #define HSL_MA97D_H
11
12 #ifndef ma97_default_control
13 #define ma97_control ma97_control_d
14 #define ma97_info ma97_info_d
15 #define ma97_default_control ma97_default_control_d
16 #define ma97_analyse ma97_analyse_d
17 #define ma97_analyse_coord ma97_analyse_coord_d
18 #define ma97_factor ma97_factor_d
19 #define ma97_factor_solve ma97_factor_solve_d
20 #define ma97_solve ma97_solve_d
21 #define ma97_free_akeep ma97_free_akeep_d
22 #define ma97_free_fkeep ma97_free_fkeep_d
23 #define ma97_finalise ma97_finalise_d
24 #define ma97_enquire_posdef ma97_enquire_posdef_d
25 #define ma97_enquire_indef ma97_enquire_indef_d
26 #define ma97_alter ma97_alter_d
27 #define ma97_solve_fredholm ma97_solve_fredholm_d
28 #define ma97_lmultiply ma97_lmultiply_d
29 #define ma97_sparse_fwd_solve ma97_sparse_fwd_solve_d
30 #endif
31
32 typedef double ma97pkgtype_d_;
33 typedef double ma97realtype_d_;
34
35 struct ma97_control_d {
36 int f_arrays; /* Use C or Fortran numbering */
37 int action; /* Continue on singularity if !=0 (true),
38 otherwise abort */
39 int nemin; /* Supernode amalgamation if parent and child
40 have fewer than nemin eliminations */
41 ma97realtype_d_ multiplier;/* Amount of extra memory to allow for delays */
42 int ordering; /* Control scaling algorithm used:
43 0 - user supplied order (order absent=identity)
44 1 - AMD
45 2 - MD (as in MA27)
46 3 - METIS nested dissection
47 4 - MA47
48 5 - Automatic choice between 1 and 3 */
49 int print_level; /* <0 for no printing, 0 for basic, >1 for most */
50 int scaling; /* 0 user/none, 1 mc64, 2 mc77 */
51 ma97realtype_d_ small; /* Minimum value to count as non-zero */
52 ma97realtype_d_ u; /* Pivoting parameter */
53 int unit_diagnostics; /* Fortran unit for diagnostics (<0 disables) */
54 int unit_error; /* Fortran unit for error msgs (<0 disables) */
55 int unit_warning; /* Fortran unit for warning msgs (<0 disables) */
56 long factor_min; /* Min number of flops for parallel execution */
57 int solve_blas3; /* Use BLAS3 in solve in true, else BLAS2 */
58 long solve_min; /* Min number of entries for parallel exection */
59 int solve_mf; /* If true use m/f solve, else use s/n */
60 ma97realtype_d_ consist_tol; /* Consistent equation tolerance */
61
62 /* Reserve space for future interface changes */
63 int ispare[5]; ma97realtype_d_ rspare[10];
64 };
65
66 struct ma97_info {
67 int flag; /* <0 on error */
68 int flag68;
69 int flag77;
70 int matrix_dup; /* number duplicate entries in A */
71 int matrix_rank; /* matrix rank */
72 int matrix_outrange; /* number of out of range entries in A */
73 int matrix_missing_diag; /* number of zero diagonal entries in A */
74 int maxdepth; /* height of assembly tree */
75 int maxfront; /* maximum dimension of frontal matrix */
76 int num_delay; /* number of times a pivot was delayed */
77 long num_factor; /* number of entries in L */
78 long num_flops; /* number of floating point operations */
79 int num_neg; /* number of negative pivots */
80 int num_sup; /* number of supernodes in assembly tree */
81 int num_two; /* number of 2x2 pivots */
82 int ordering; /* ordering used (as per control.ordering) */
83 int stat; /* error code from failed memory allocation */
84
85 /* Reserve space for future interface changes */
86 int ispare[5]; ma97realtype_d_ rspare[10];
87 };
88
89 /* Set default values of control */
90 void ma97_default_control_d(struct ma97_control_d *control);
91 /* Perform symbolic analysis of matrix (sparse column entry) */
92 void ma97_analyse_d(int check, int n, const int ptr[], const int row[],
93 ma97pkgtype_d_ val[], void **akeep, const struct ma97_control_d *control,
94 struct ma97_info_d *info, int order[]);
95 /* Perform symbolic analysis of matrix (coordinate entry) */
96 void ma97_analyse_coord_d(int n, int ne, const int row[], const int col[],
97 ma97pkgtype_d_ val[], void **akeep, const struct ma97_control_d *control,
98 struct ma97_info_d *info, int order[]);
99 /* Perform numerical factorization, following call to ma97_analyse */
100 void ma97_factor_d(int matrix_type, const int ptr[], const int row[],
101 const ma97pkgtype_d_ val[], void **akeep, void **fkeep,
102 const struct ma97_control_d *control, struct ma97_info_d *info,
103 ma97realtype_d_ scale[]);
104 /* Perform numerical factorization and solve, following call to ma97_analyse */
105 void ma97_factor_solve_d(int matrix_type, const int ptr[], const int row[],
106 const ma97pkgtype_d_ val[], int nrhs, ma97pkgtype_d_ x[], int ldx,
107 void **akeep, void **fkeep, const struct ma97_control_d *control,
108 struct ma97_info_d *info, ma97realtype_d_ scale[]);
109 /* Perform forward and back substitutions, following call to ma97_factor */
110 void ma97_solve_d(int job, int nrhs, ma97pkgtype_d_ x[], int ldx,
111 void **akeep, void **fkeep, const struct ma97_control_d *control,
112 struct ma97_info_d *info);
113 /* Free memory in akeep */
114 void ma97_free_akeep_d(void **akeep);
115 /* Free memory in fkeep */
116 void ma97_free_fkeep_d(void **fkeep);
117 /* Free memory in akeep and fkeep */
118 void ma97_finalise_d(void **akeep, void **fkeep);
119 /* Return diagonal entries of L */
120 void ma97_enquire_posdef_d(void **akeep, void **fkeep,
121 const struct ma97_control *control, struct ma97_info *info,
122 ma97realtype_d_ d[]);
123 /* Return diagonal, subdiagonal and/or pivot order of D */
124 void ma97_enquire_indef_d(void **akeep, void **fkeep,
125 const struct ma97_control *control, struct ma97_info *info,
126 int *piv_order, ma97pkgtype_d_ *d);
127 /* Alter diagonal and subdiagonal of D */
128 void ma97_alter_d(const ma97pkgtype_d_ d[], void **akeep, void **fkeep,
129 const struct ma97_control *control, struct ma97_info *info);
130 /* Fredholm alternative for singular systems */
131 void ma97_solve_fredholm_d(int nrhs, int flag_out[], ma97pkgtype_d_ x[],
132 int ldx, void **akeep, void **fkeep, const struct ma97_control_d *control,
133 struct ma97_info_d *info);
134 /* Form (S^{-1}PL) X or (S^{-1}PL)^T X */
135 void ma97_lmultiply_d(int trans, int k, const ma97pkgtype_d_ x[], int ldx,
136 ma97pkgtype_d_ y[], int ldy, void **akeep, void **fkeep,
137 const struct ma97_control_d *control, struct ma97_info_d *info);
138 /* Perform a sparse forward solve */
139 void ma97_sparse_fwd_solve_d(int nbi, const int bindex[],
140 const ma97pkgtype_d_ b[], const int order[], int *nxi, int xindex[],
141 ma97pkgtype_d_ x[], void **akeep, void **fkeep,
142 const struct ma97_control_d *control, struct ma97_info_d *info);
143
144 #endif
x
Number * x
Input: Starting point Output: Optimal solution.
Definition: IpStdCInterface.h:238
ma97_control_d::factor_min
long factor_min
Definition: hsl_ma97d.h:56
ma97_sparse_fwd_solve_d
void ma97_sparse_fwd_solve_d(int nbi, const int bindex[], const ma97pkgtype_d_ b[], const int order[], int *nxi, int xindex[], ma97pkgtype_d_ x[], void **akeep, void **fkeep, const struct ma97_control_d *control, struct ma97_info_d *info)
ma97_control_d::action
int action
Definition: hsl_ma97d.h:37
ma97_control
#define ma97_control
Definition: hsl_ma97d.h:13
ma97_control_d::unit_warning
int unit_warning
Definition: hsl_ma97d.h:55
ma97_control_d::nemin
int nemin
Definition: hsl_ma97d.h:39
ma97_solve_d
void ma97_solve_d(int job, int nrhs, ma97pkgtype_d_ x[], int ldx, void **akeep, void **fkeep, const struct ma97_control_d *control, struct ma97_info_d *info)
ma97_control_d::multiplier
ma97realtype_d_ multiplier
Definition: hsl_ma97d.h:41
ma97_control_d::ordering
int ordering
Definition: hsl_ma97d.h:42
ma97_info
Definition: hsl_ma97d.h:66
ma97_alter_d
void ma97_alter_d(const ma97pkgtype_d_ d[], void **akeep, void **fkeep, const struct ma97_control *control, struct ma97_info *info)
ma97_info::maxfront
int maxfront
Definition: hsl_ma97d.h:75
ma97_info::matrix_rank
int matrix_rank
Definition: hsl_ma97d.h:71
ma97_control_d::unit_error
int unit_error
Definition: hsl_ma97d.h:54
ma97_info::flag77
int flag77
Definition: hsl_ma97d.h:69
ma97_info::matrix_outrange
int matrix_outrange
Definition: hsl_ma97d.h:72
ma97_control_d::solve_min
long solve_min
Definition: hsl_ma97d.h:58
ma97_control_d::consist_tol
ma97realtype_d_ consist_tol
Definition: hsl_ma97d.h:60
ma97_control_d::solve_blas3
int solve_blas3
Definition: hsl_ma97d.h:57
val
char char * val
Definition: IpStdCInterface.h:189
ma97_free_fkeep_d
void ma97_free_fkeep_d(void **fkeep)
ma97_info::num_neg
int num_neg
Definition: hsl_ma97d.h:79
ma97_control_d::rspare
ma97realtype_d_ rspare[10]
Definition: hsl_ma97d.h:63
ma97_info::num_delay
int num_delay
Definition: hsl_ma97d.h:76
ma97_info::rspare
ma97realtype_d_ rspare[10]
Definition: hsl_ma97d.h:86
ma97_finalise_d
void ma97_finalise_d(void **akeep, void **fkeep)
ma97_info::num_sup
int num_sup
Definition: hsl_ma97d.h:80
ma97_default_control_d
void ma97_default_control_d(struct ma97_control_d *control)
ma97_info::ispare
int ispare[5]
Definition: hsl_ma97d.h:86
ma97_free_akeep_d
void ma97_free_akeep_d(void **akeep)
ma97_control_d::scaling
int scaling
Definition: hsl_ma97d.h:50
ma97_control_d::print_level
int print_level
Definition: hsl_ma97d.h:49
ma97_analyse_coord_d
void ma97_analyse_coord_d(int n, int ne, const int row[], const int col[], ma97pkgtype_d_ val[], void **akeep, const struct ma97_control_d *control, struct ma97_info_d *info, int order[])
ma97_info::matrix_missing_diag
int matrix_missing_diag
Definition: hsl_ma97d.h:73
ma97_info::stat
int stat
Definition: hsl_ma97d.h:83
ma97_enquire_indef_d
void ma97_enquire_indef_d(void **akeep, void **fkeep, const struct ma97_control *control, struct ma97_info *info, int *piv_order, ma97pkgtype_d_ *d)
ma97_info::num_factor
long num_factor
Definition: hsl_ma97d.h:77
ma97_info::num_two
int num_two
Definition: hsl_ma97d.h:81
ma97_enquire_posdef_d
void ma97_enquire_posdef_d(void **akeep, void **fkeep, const struct ma97_control *control, struct ma97_info *info, ma97realtype_d_ d[])
ma97_info::num_flops
long num_flops
Definition: hsl_ma97d.h:78
ma97_control_d::ispare
int ispare[5]
Definition: hsl_ma97d.h:63
ma97realtype_d_
double ma97realtype_d_
Definition: hsl_ma97d.h:33
ma97_factor_solve_d
void ma97_factor_solve_d(int matrix_type, const int ptr[], const int row[], const ma97pkgtype_d_ val[], int nrhs, ma97pkgtype_d_ x[], int ldx, void **akeep, void **fkeep, const struct ma97_control_d *control, struct ma97_info_d *info, ma97realtype_d_ scale[])
ma97_solve_fredholm_d
void ma97_solve_fredholm_d(int nrhs, int flag_out[], ma97pkgtype_d_ x[], int ldx, void **akeep, void **fkeep, const struct ma97_control_d *control, struct ma97_info_d *info)
ma97_control_d
Definition: hsl_ma97d.h:35
ma97_info::flag68
int flag68
Definition: hsl_ma97d.h:68
ma97_info::ordering
int ordering
Definition: hsl_ma97d.h:82
ma97_info::matrix_dup
int matrix_dup
Definition: hsl_ma97d.h:70
ma97_analyse_d
void ma97_analyse_d(int check, int n, const int ptr[], const int row[], ma97pkgtype_d_ val[], void **akeep, const struct ma97_control_d *control, struct ma97_info_d *info, int order[])
ma97pkgtype_d_
double ma97pkgtype_d_
Definition: hsl_ma97d.h:32
ma97_factor_d
void ma97_factor_d(int matrix_type, const int ptr[], const int row[], const ma97pkgtype_d_ val[], void **akeep, void **fkeep, const struct ma97_control_d *control, struct ma97_info_d *info, ma97realtype_d_ scale[])
ma97_control_d::f_arrays
int f_arrays
Definition: hsl_ma97d.h:36
ma97_control_d::solve_mf
int solve_mf
Definition: hsl_ma97d.h:59
ma97_info::maxdepth
int maxdepth
Definition: hsl_ma97d.h:74
ma97_info::flag
int flag
Definition: hsl_ma97d.h:67
ma97_control_d::small
ma97realtype_d_ small
Definition: hsl_ma97d.h:51
ma97_lmultiply_d
void ma97_lmultiply_d(int trans, int k, const ma97pkgtype_d_ x[], int ldx, ma97pkgtype_d_ y[], int ldy, void **akeep, void **fkeep, const struct ma97_control_d *control, struct ma97_info_d *info)
ma97_control_d::u
ma97realtype_d_ u
Definition: hsl_ma97d.h:52
ma97_control_d::unit_diagnostics
int unit_diagnostics
Definition: hsl_ma97d.h:53