1 /*************** 2 * dim 3 ***************/ 4 /* N */ 5 int N = 5; 6 /* nx */ 7 static int nnx[] = {2, 2, 2, 2, 2, 2, }; 8 int *nx = nnx; 9 /* nu */ 10 static int nnu[] = {1, 1, 1, 1, 1, 0, }; 11 int *nu = nnu; 12 /* nbx */ 13 static int nnbx[] = {2, 0, 0, 0, 0, 2, }; 14 int *nbx = nnbx; 15 /* nbu */ 16 static int nnbu[] = {0, 0, 0, 0, 0, 0, }; 17 int *nbu = nnbu; 18 /* ng */ 19 static int nng[] = {0, 0, 0, 0, 0, 0, }; 20 int *ng = nng; 21 /* nsbx */ 22 static int nnsbx[] = {0, 0, 0, 0, 0, 0, }; 23 int *nsbx = nnsbx; 24 /* nsbu */ 25 static int nnsbu[] = {0, 0, 0, 0, 0, 0, }; 26 int *nsbu = nnsbu; 27 /* nsg */ 28 static int nnsg[] = {0, 0, 0, 0, 0, 0, }; 29 int *nsg = nnsg; 30 /*************** 31 * qp 32 ***************/ 33 /* A */ 34 static double A0[] = {1.000000000000000e+00, 0.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, }; 35 static double A1[] = {1.000000000000000e+00, 0.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, }; 36 static double A2[] = {1.000000000000000e+00, 0.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, }; 37 static double A3[] = {1.000000000000000e+00, 0.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, }; 38 static double A4[] = {1.000000000000000e+00, 0.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, }; 39 static double *AA[] = {A0, A1, A2, A3, A4, }; 40 double **hA = AA; 41 /* B */ 42 static double B0[] = {0.000000000000000e+00, 1.000000000000000e+00, }; 43 static double B1[] = {0.000000000000000e+00, 1.000000000000000e+00, }; 44 static double B2[] = {0.000000000000000e+00, 1.000000000000000e+00, }; 45 static double B3[] = {0.000000000000000e+00, 1.000000000000000e+00, }; 46 static double B4[] = {0.000000000000000e+00, 1.000000000000000e+00, }; 47 static double *BB[] = {B0, B1, B2, B3, B4, }; 48 double **hB = BB; 49 /* b */ 50 static double b0[] = {0.000000000000000e+00, 0.000000000000000e+00, }; 51 static double b1[] = {0.000000000000000e+00, 0.000000000000000e+00, }; 52 static double b2[] = {0.000000000000000e+00, 0.000000000000000e+00, }; 53 static double b3[] = {0.000000000000000e+00, 0.000000000000000e+00, }; 54 static double b4[] = {0.000000000000000e+00, 0.000000000000000e+00, }; 55 static double *bb[] = {b0, b1, b2, b3, b4, }; 56 double **hb = bb; 57 /* Q */ 58 static double Q0[] = {1.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 1.000000000000000e+00, }; 59 static double Q1[] = {1.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 1.000000000000000e+00, }; 60 static double Q2[] = {1.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 1.000000000000000e+00, }; 61 static double Q3[] = {1.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 1.000000000000000e+00, }; 62 static double Q4[] = {1.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 1.000000000000000e+00, }; 63 static double Q5[] = {1.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 1.000000000000000e+00, }; 64 static double *QQ[] = {Q0, Q1, Q2, Q3, Q4, Q5, }; 65 double **hQ = QQ; 66 /* S */ 67 static double S0[] = {0.000000000000000e+00, 0.000000000000000e+00, }; 68 static double S1[] = {0.000000000000000e+00, 0.000000000000000e+00, }; 69 static double S2[] = {0.000000000000000e+00, 0.000000000000000e+00, }; 70 static double S3[] = {0.000000000000000e+00, 0.000000000000000e+00, }; 71 static double S4[] = {0.000000000000000e+00, 0.000000000000000e+00, }; 72 static double S5[] = {}; 73 static double *SS[] = {S0, S1, S2, S3, S4, S5, }; 74 double **hS = SS; 75 /* R */ 76 static double R0[] = {1.000000000000000e+00, }; 77 static double R1[] = {1.000000000000000e+00, }; 78 static double R2[] = {1.000000000000000e+00, }; 79 static double R3[] = {1.000000000000000e+00, }; 80 static double R4[] = {1.000000000000000e+00, }; 81 static double R5[] = {}; 82 static double *RR[] = {R0, R1, R2, R3, R4, R5, }; 83 double **hR = RR; 84 /* r */ 85 static double r0[] = {0.000000000000000e+00, }; 86 static double r1[] = {0.000000000000000e+00, }; 87 static double r2[] = {0.000000000000000e+00, }; 88 static double r3[] = {0.000000000000000e+00, }; 89 static double r4[] = {0.000000000000000e+00, }; 90 static double r5[] = {}; 91 static double *rr[] = {r0, r1, r2, r3, r4, r5, }; 92 double **hr = rr; 93 /* q */ 94 static double q0[] = {1.000000000000000e+00, 1.000000000000000e+00, }; 95 static double q1[] = {1.000000000000000e+00, 1.000000000000000e+00, }; 96 static double q2[] = {1.000000000000000e+00, 1.000000000000000e+00, }; 97 static double q3[] = {1.000000000000000e+00, 1.000000000000000e+00, }; 98 static double q4[] = {1.000000000000000e+00, 1.000000000000000e+00, }; 99 static double q5[] = {1.000000000000000e+00, 1.000000000000000e+00, }; 100 static double *qq[] = {q0, q1, q2, q3, q4, q5, }; 101 double **hq = qq; 102 /* idxbu */ 103 static int idxbu0[] = {}; 104 static int idxbu1[] = {}; 105 static int idxbu2[] = {}; 106 static int idxbu3[] = {}; 107 static int idxbu4[] = {}; 108 static int idxbu5[] = {}; 109 static int *iidxbu[] = {idxbu0, idxbu1, idxbu2, idxbu3, idxbu4, idxbu5, }; 110 int **hidxbu = iidxbu; 111 /* lbu */ 112 static double lbu0[] = {}; 113 static double lbu1[] = {}; 114 static double lbu2[] = {}; 115 static double lbu3[] = {}; 116 static double lbu4[] = {}; 117 static double lbu5[] = {}; 118 static double *llbu[] = {lbu0, lbu1, lbu2, lbu3, lbu4, lbu5, }; 119 double **hlbu = llbu; 120 /* ubu */ 121 static double ubu0[] = {}; 122 static double ubu1[] = {}; 123 static double ubu2[] = {}; 124 static double ubu3[] = {}; 125 static double ubu4[] = {}; 126 static double ubu5[] = {}; 127 static double *uubu[] = {ubu0, ubu1, ubu2, ubu3, ubu4, ubu5, }; 128 double **hubu = uubu; 129 /* idxbx */ 130 static int idxbx0[] = {0, 1, }; 131 static int idxbx1[] = {}; 132 static int idxbx2[] = {}; 133 static int idxbx3[] = {}; 134 static int idxbx4[] = {}; 135 static int idxbx5[] = {0, 1, }; 136 static int *iidxbx[] = {idxbx0, idxbx1, idxbx2, idxbx3, idxbx4, idxbx5, }; 137 int **hidxbx = iidxbx; 138 /* lbx */ 139 static double lbx0[] = {1.000000000000000e+00, 1.000000000000000e+00, }; 140 static double lbx1[] = {}; 141 static double lbx2[] = {}; 142 static double lbx3[] = {}; 143 static double lbx4[] = {}; 144 static double lbx5[] = {0.000000000000000e+00, 0.000000000000000e+00, }; 145 static double *llbx[] = {lbx0, lbx1, lbx2, lbx3, lbx4, lbx5, }; 146 double **hlbx = llbx; 147 /* ubx */ 148 static double ubx0[] = {1.000000000000000e+00, 1.000000000000000e+00, }; 149 static double ubx1[] = {}; 150 static double ubx2[] = {}; 151 static double ubx3[] = {}; 152 static double ubx4[] = {}; 153 static double ubx5[] = {-0.000000000000000e+00, -0.000000000000000e+00, }; 154 static double *uubx[] = {ubx0, ubx1, ubx2, ubx3, ubx4, ubx5, }; 155 double **hubx = uubx; 156 /* C */ 157 static double C0[] = {}; 158 static double C1[] = {}; 159 static double C2[] = {}; 160 static double C3[] = {}; 161 static double C4[] = {}; 162 static double C5[] = {}; 163 static double *CC[] = {C0, C1, C2, C3, C4, C5, }; 164 double **hC = CC; 165 /* D */ 166 static double D0[] = {}; 167 static double D1[] = {}; 168 static double D2[] = {}; 169 static double D3[] = {}; 170 static double D4[] = {}; 171 static double D5[] = {}; 172 static double *DD[] = {D0, D1, D2, D3, D4, D5, }; 173 double **hD = DD; 174 /* lg */ 175 static double lg0[] = {}; 176 static double lg1[] = {}; 177 static double lg2[] = {}; 178 static double lg3[] = {}; 179 static double lg4[] = {}; 180 static double lg5[] = {}; 181 static double *llg[] = {lg0, lg1, lg2, lg3, lg4, lg5, }; 182 double **hlg = llg; 183 /* ug */ 184 static double ug0[] = {}; 185 static double ug1[] = {}; 186 static double ug2[] = {}; 187 static double ug3[] = {}; 188 static double ug4[] = {}; 189 static double ug5[] = {}; 190 static double *uug[] = {ug0, ug1, ug2, ug3, ug4, ug5, }; 191 double **hug = uug; 192 /* Zl */ 193 double **hZl; 194 /* Zu */ 195 double **hZu; 196 /* zl */ 197 double **hzl; 198 /* zu */ 199 double **hzu; 200 /* idxs */ 201 double **hidxs; 202 /* lls */ 203 double **hlls; 204 /* lus */ 205 double **hlus; 206 /*************** 207 * arg 208 ***************/ 209 /* mode */ 210 int mode = 1; 211 /* iter_max */ 212 int iter_max = 30; 213 /* alpha_min */ 214 double alpha_min = 1.000000000000000e-12; 215 /* mu0 */ 216 double mu0 = 1.000000000000000e+04; 217 /* tol_stat */ 218 double tol_stat = 1.000000000000000e-04; 219 /* tol_eq */ 220 double tol_eq = 1.000000000000000e-05; 221 /* tol_ineq */ 222 double tol_ineq = 1.000000000000000e-05; 223 /* tol_comp */ 224 double tol_comp = 1.000000000000000e-05; 225 /* reg_prim */ 226 double reg_prim = 1.000000000000000e-12; 227 /* warm_start */ 228 int warm_start = 0; 229 /* pred_corr */ 230 int pred_corr = 1; 231 /* ric_alg */ 232 int ric_alg = 1; 233