Ipopt Documentation  
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
hsl_ma97d.h
Go to the documentation of this file.
1 /* COPYRIGHT (c) 2012 The Science and Technology Facilities Council (STFC)
2  * All Rights Reserved.
3  * This code is published under the Eclipse Public License.
4  *
5  * Authors: Jonathan Hogg STFC 2012-12-21
6  */
7 
8 #ifndef HSL_MA97D_H
9 #define HSL_MA97D_H
10 
11 #ifndef ma97_default_control
12 #define ma97_control ma97_control_d
13 #define ma97_info ma97_info_d
14 #define ma97_default_control ma97_default_control_d
15 #define ma97_analyse ma97_analyse_d
16 #define ma97_analyse_coord ma97_analyse_coord_d
17 #define ma97_factor ma97_factor_d
18 #define ma97_factor_solve ma97_factor_solve_d
19 #define ma97_solve ma97_solve_d
20 #define ma97_free_akeep ma97_free_akeep_d
21 #define ma97_free_fkeep ma97_free_fkeep_d
22 #define ma97_finalise ma97_finalise_d
23 #define ma97_enquire_posdef ma97_enquire_posdef_d
24 #define ma97_enquire_indef ma97_enquire_indef_d
25 #define ma97_alter ma97_alter_d
26 #define ma97_solve_fredholm ma97_solve_fredholm_d
27 #define ma97_lmultiply ma97_lmultiply_d
28 #define ma97_sparse_fwd_solve ma97_sparse_fwd_solve_d
29 #endif
30 
31 typedef double ma97pkgtype_d_;
32 typedef double ma97realtype_d_;
33 
35 {
36  int f_arrays;
37  int action;
38  int nemin;
49  int ordering;
51  int scaling;
55  int unit_error;
57  long factor_min;
59  long solve_min;
60  int solve_mf;
63  /* Reserve space for future interface changes */
64  int ispare[5];
66 };
67 
68 struct ma97_info
69 {
70  int flag;
71  int flag68;
72  int flag77;
73  int matrix_dup;
77  int maxdepth;
78  int maxfront;
79  int num_delay;
80  long num_factor;
81  long num_flops;
82  int num_neg;
83  int num_sup;
84  int num_two;
85  int ordering;
86  int stat;
88  /* Reserve space for future interface changes */
89  int ispare[5];
91 };
92 
95  struct ma97_control_d* control
96 );
97 
99 void ma97_analyse_d(
100  int check,
101  int n,
102  const int ptr[],
103  const int row[],
104  ma97pkgtype_d_ val[],
105  void** akeep,
106  const struct ma97_control_d* control,
107  struct ma97_info_d* info,
108  int order[]
109 );
110 
113  int n,
114  int ne,
115  const int row[],
116  const int col[],
117  ma97pkgtype_d_ val[],
118  void** akeep,
119  const struct ma97_control_d* control,
120  struct ma97_info_d* info,
121  int order[]
122 );
123 
125 void ma97_factor_d(
126  int matrix_type,
127  const int ptr[],
128  const int row[],
129  const ma97pkgtype_d_ val[],
130  void** akeep,
131  void** fkeep,
132  const struct ma97_control_d* control,
133  struct ma97_info_d* info,
134  ma97realtype_d_ scale[]
135 );
136 
139  int matrix_type,
140  const int ptr[],
141  const int row[],
142  const ma97pkgtype_d_ val[],
143  int nrhs,
144  ma97pkgtype_d_ x[],
145  int ldx,
146  void** akeep,
147  void** fkeep,
148  const struct ma97_control_d* control,
149  struct ma97_info_d* info,
150  ma97realtype_d_ scale[]
151 );
152 
154 void ma97_solve_d(
155  int job,
156  int nrhs,
157  ma97pkgtype_d_ x[],
158  int ldx,
159  void** akeep,
160  void** fkeep,
161  const struct ma97_control_d* control,
162  struct ma97_info_d* info
163 );
164 
166 void ma97_free_akeep_d(
167  void** akeep
168 );
169 
171 void ma97_free_fkeep_d(
172  void** fkeep
173 );
174 
176 void ma97_finalise_d(
177  void** akeep,
178  void** fkeep
179 );
180 
183  void** akeep,
184  void** fkeep,
185  const struct ma97_control* control,
186  struct ma97_info* info,
187  ma97realtype_d_ d[]
188 );
189 
192  void** akeep,
193  void** fkeep,
194  const struct ma97_control* control,
195  struct ma97_info* info,
196  int* piv_order,
197  ma97pkgtype_d_* d
198 );
199 
201 void ma97_alter_d(
202  const ma97pkgtype_d_ d[],
203  void** akeep,
204  void** fkeep,
205  const struct ma97_control* control,
206  struct ma97_info* info
207 );
208 
211  int nrhs,
212  int flag_out[],
213  ma97pkgtype_d_ x[],
214  int ldx,
215  void** akeep,
216  void** fkeep,
217  const struct ma97_control* control,
218  struct ma97_info* info
219 );
220 
222 void ma97_lmultiply_d(
223  int trans,
224  int k,
225  const ma97pkgtype_d_ x[],
226  int ldx,
227  ma97pkgtype_d_ y[],
228  int ldy,
229  void** akeep,
230  void** fkeep,
231  const struct ma97_control_d* control,
232  struct ma97_info_d* info
233 );
234 
237  int nbi,
238  const int bindex[],
239  const ma97pkgtype_d_ b[],
240  const int order[],
241  int* nxi,
242  int xindex[],
243  ma97pkgtype_d_ x[],
244  void** akeep,
245  void** fkeep,
246  const struct ma97_control_d* control,
247  struct ma97_info_d* info
248 );
249 
250 #endif
long factor_min
Min number of flops for parallel execution.
Definition: hsl_ma97d.h:57
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)
Perform a sparse forward solve.
int action
Continue on singularity if !=0 (true), otherwise abort.
Definition: hsl_ma97d.h:37
#define ma97_control
Definition: hsl_ma97d.h:12
int unit_warning
Fortran unit for warning msgs (<0 disables)
Definition: hsl_ma97d.h:56
int nemin
Supernode amalgamation if parent and child have fewer than nemin eliminations.
Definition: hsl_ma97d.h:38
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)
Perform forward and back substitutions, following call to ma97_factor.
ma97realtype_d_ multiplier
Amount of extra memory to allow for delays.
Definition: hsl_ma97d.h:39
int ordering
Control scaling algorithm used:
Definition: hsl_ma97d.h:49
void ma97_alter_d(const ma97pkgtype_d_ d[], void **akeep, void **fkeep, const struct ma97_control *control, struct ma97_info *info)
Alter diagonal and subdiagonal of D.
int maxfront
maximum dimension of frontal matrix
Definition: hsl_ma97d.h:78
int matrix_rank
matrix rank
Definition: hsl_ma97d.h:74
int unit_error
Fortran unit for error msgs (<0 disables)
Definition: hsl_ma97d.h:55
int flag77
Definition: hsl_ma97d.h:72
int matrix_outrange
number of out of range entries in A
Definition: hsl_ma97d.h:75
long solve_min
Min number of entries for parallel execution.
Definition: hsl_ma97d.h:59
void ma97_solve_fredholm_d(int nrhs, int flag_out[], ma97pkgtype_d_ x[], int ldx, void **akeep, void **fkeep, const struct ma97_control *control, struct ma97_info *info)
Fredholm alternative for singular systems.
ma97realtype_d_ consist_tol
Consistent equation tolerance.
Definition: hsl_ma97d.h:61
int solve_blas3
Use BLAS3 in solve in true, else BLAS2.
Definition: hsl_ma97d.h:58
void ma97_free_fkeep_d(void **fkeep)
Free memory in fkeep.
int num_neg
number of negative pivots
Definition: hsl_ma97d.h:82
ma97realtype_d_ rspare[10]
Definition: hsl_ma97d.h:65
int num_delay
number of times a pivot was delayed
Definition: hsl_ma97d.h:79
ma97realtype_d_ rspare[10]
Definition: hsl_ma97d.h:90
void ma97_finalise_d(void **akeep, void **fkeep)
Free memory in akeep and fkeep.
int num_sup
number of supernodes in assembly tree
Definition: hsl_ma97d.h:83
void ma97_default_control_d(struct ma97_control_d *control)
Set default values of control.
int ispare[5]
Definition: hsl_ma97d.h:89
void ma97_free_akeep_d(void **akeep)
Free memory in akeep.
int scaling
0 user/none, 1 mc64, 2 mc77
Definition: hsl_ma97d.h:51
int print_level
<0 for no printing, 0 for basic, >1 for most
Definition: hsl_ma97d.h:50
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[])
Perform symbolic analysis of matrix (coordinate entry)
int matrix_missing_diag
number of zero diagonal entries in A
Definition: hsl_ma97d.h:76
int stat
error code from failed memory allocation
Definition: hsl_ma97d.h:86
void ma97_enquire_indef_d(void **akeep, void **fkeep, const struct ma97_control *control, struct ma97_info *info, int *piv_order, ma97pkgtype_d_ *d)
Return diagonal, subdiagonal and/or pivot order of D.
long num_factor
number of entries in L
Definition: hsl_ma97d.h:80
int num_two
number of 2x2 pivots
Definition: hsl_ma97d.h:84
void ma97_enquire_posdef_d(void **akeep, void **fkeep, const struct ma97_control *control, struct ma97_info *info, ma97realtype_d_ d[])
Return diagonal entries of L.
long num_flops
number of floating point operations
Definition: hsl_ma97d.h:81
int ispare[5]
Definition: hsl_ma97d.h:64
double ma97realtype_d_
Definition: hsl_ma97d.h:32
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[])
Perform numerical factorization and solve, following call to ma97_analyse.
int flag68
Definition: hsl_ma97d.h:71
int ordering
ordering used (as per control.ordering)
Definition: hsl_ma97d.h:85
int matrix_dup
number duplicate entries in A
Definition: hsl_ma97d.h:73
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[])
Perform symbolic analysis of matrix (sparse column entry)
double ma97pkgtype_d_
Definition: hsl_ma97d.h:31
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[])
Perform numerical factorization, following call to ma97_analyse.
int f_arrays
Use C or Fortran numbering.
Definition: hsl_ma97d.h:36
int solve_mf
If true use m/f solve, else use s/n.
Definition: hsl_ma97d.h:60
int maxdepth
height of assembly tree
Definition: hsl_ma97d.h:77
int flag
<0 on error
Definition: hsl_ma97d.h:70
ma97realtype_d_ small
Minimum value to count as non-zero.
Definition: hsl_ma97d.h:52
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)
Form (S^{-1}PL) X or (S^{-1}PL)^T X.
ma97realtype_d_ u
Pivoting parameter.
Definition: hsl_ma97d.h:53
int unit_diagnostics
Fortran unit for diagnostics (<0 disables)
Definition: hsl_ma97d.h:54