Ipopt  3.12.12
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
hsl_mc68i.h
Go to the documentation of this file.
1 /*
2  * COPYRIGHT (c) 2011, 2013 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 2011-02-25
7  */
8 
9 #ifndef HSL_MC68I_H
10 #define HSL_MC68I_H
11 
12 #include "IpoptConfig.h"
13 #ifdef COIN_HAS_HSL
14 #include "CoinHslConfig.h"
15 #endif
16 
17 /* if we do not have MC68, we assume its is loaded via the linear solver loader, for which we assume HSL 2013 */
18 #if defined(COINHSL_HSL2013) || !defined(COINHSL_HAS_MC68)
19 #ifndef mc68_default_control
20 #define mc68_control mc68_control_i
21 #define mc68_info mc68_info_i
22 #define mc68_default_control mc68_default_control_i
23 #define mc68_order mc68_order_i
24 #endif
25 #endif
26 
27 struct mc68_control {
28  /* Extra options for C version */
29  int f_array_in; /* 0 for C array indexing, 1 for Fortran indexing */
30  int f_array_out; /* 0 for C array indexing, 1 for Fortran indexing
31  * NOTE: 2x2 pivot information discarded if C indexing
32  * is used for output! */
33 #if defined(COINHSL_HSL2013) || !defined(COINHSL_HAS_MC68)
34  long min_l_workspace; /* Initial size of workspace, as argument in Fortran */
35 #else
36  int min_l_workspace; /* Initial size of workspace, as argument in Fortran */
37 #endif
38  /* Options from Fortran version */
39  int lp; /* stream number for error messages */
40  int wp; /* stream number for warning messages */
41  int mp; /* stream number for diagnostic messages */
42  int nemin; /* stream number for diagnostic messages */
43  int print_level; /* amount of informational output required */
44  int row_full_thresh; /* percentage threshold for full row */
45  int row_search; /* Number of rows searched for pivot with ord=6 */
46 };
47 
48 struct mc68_info {
49  int flag; /* error/warning flag */
50  int iostat; /* holds Fortran iostat parameter */
51  int stat; /* holds Fortran stat parameter */
52  int out_range; /* holds number of out of range entries ignored */
53  int duplicate; /* holds number of duplicate entries */
54  int n_compressions; /* holds number of compressions in order */
55  int n_zero_eigs; /* holds the number of zero eigs from ma47 */
56 #if defined(COINHSL_HSL2013) || !defined(COINHSL_HAS_MC68)
57  long l_workspace; /* holds length of workspace iw used in order */
58 #else
59  int l_workspace; /* holds length of workspace iw used in order */
60 #endif
61  int zb01_info; /* holds flag from zb01_expand1 call */
62  int n_dense_rows; /* holds number of dense rows from amdd */
63 };
64 
65 /* Set default values for control struct */
66 void mc68_default_control(struct mc68_control *control);
67 /* Perform ordering */
68 void mc68_order(int ord, int n, const int ptr[], const int row[],
69  int perm[], const struct mc68_control *control, struct mc68_info *info);
70 
71 #endif
int f_array_out
Definition: hsl_mc68i.h:30
long l_workspace
Definition: hsl_mc68i.h:57
int row_search
Definition: hsl_mc68i.h:45
int out_range
Definition: hsl_mc68i.h:52
long min_l_workspace
Definition: hsl_mc68i.h:34
int zb01_info
Definition: hsl_mc68i.h:61
#define mc68_order
Definition: hsl_mc68i.h:23
int print_level
Definition: hsl_mc68i.h:43
int f_array_in
Definition: hsl_mc68i.h:29
int stat
Definition: hsl_mc68i.h:51
int n_zero_eigs
Definition: hsl_mc68i.h:55
int n_compressions
Definition: hsl_mc68i.h:54
int iostat
Definition: hsl_mc68i.h:50
int n_dense_rows
Definition: hsl_mc68i.h:62
int duplicate
Definition: hsl_mc68i.h:53
int row_full_thresh
Definition: hsl_mc68i.h:44
int flag
Definition: hsl_mc68i.h:49
#define mc68_default_control
Definition: hsl_mc68i.h:22