Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00011 #include <df1b2fnl.h>
00012
00017 funnel_init_df1b2matrix::funnel_init_df1b2matrix(const df1b2matrix & _x)
00018 {
00019
00020 ADUNCONST(df1b2matrix,x)
00021 p=&_x;
00022 int mmin=p->indexmin();
00023 int mmax=p->indexmax();
00024
00025 int jmin=(*p)(mmin).indexmin();
00026 int ind_index = x(mmin,jmin).get_ind_index();
00027 if (ind_index<0)
00028 {
00029 add_to_inactive_list();
00030 }
00031 else
00032 {
00033 add_to_list();
00034 }
00035
00036 int i;
00037 ivector lb(mmin,mmax);
00038 ivector ub(mmin,mmax);
00039 lb(mmin)=(*p)(mmin).indexmin();
00040 ub(mmin)=(*p)(mmin).indexmax();
00041 int lf=0;
00042 int uf=0;
00043 for (i=mmin+1;i<=mmax;i++)
00044 {
00045 lb(i)=(*p)(i).indexmin();
00046 ub(i)=(*p)(i).indexmax();
00047 if (lb(i) !=lb(i-1))
00048 lf=1;
00049 if (ub(i) !=ub(i-1))
00050 uf=1;
00051 }
00052
00053
00054 if (lf ==1)
00055 {
00056 if (uf==1)
00057 {
00058 df1b2matrix::allocate(mmin,mmax,lb,ub);
00059 }
00060 else
00061 {
00062 df1b2matrix::allocate(mmin,mmax,lb,ub(mmin));
00063 }
00064 }
00065 else
00066 {
00067 if (uf==1)
00068 {
00069 df1b2matrix::allocate(mmin,mmax,lb(mmin),ub);
00070 }
00071 else
00072 {
00073 df1b2matrix::allocate(mmin,mmax,lb(mmin),ub(mmin));
00074 }
00075 }
00076 df1b2variable::noallocate=0;
00077 }
00078
00083 int funnel_init_df1b2matrix::nvar_calc(void)
00084 {
00085 int mmin=p->indexmin();
00086 int mmax=p->indexmax();
00087 int n=0;
00088 for (int i=mmin;i<=mmax;i++)
00089 {
00090 n+=(*p)(i).indexmax()-(*p)(i).indexmin()+1;
00091 }
00092 return n;
00093 }
00094
00099 void funnel_init_df1b2matrix::xinit(init_df1b2vector& y,int& ii)
00100 {
00101 df1b2_init_matrix * vp = (df1b2_init_matrix *) p;
00102 int mmin=vp->indexmin();
00103 int mmax=vp->indexmax();
00104 int i,j;
00105 for (i=mmin;i<=mmax;i++)
00106 {
00107 int jmin=(*vp)(i).indexmin();
00108 int jmax=(*vp)(i).indexmax();
00109 for (j=jmin;j<=jmax;j++)
00110 {
00111 y(ii)= value((*vp)(i,j));
00112 ii++;
00113 }
00114 }
00115 }
00116
00121 void funnel_init_df1b2matrix::set_index(imatrix& y,int& ii)
00122 {
00123 df1b2_init_matrix * vp = (df1b2_init_matrix *) p;
00124 int mmin=vp->indexmin();
00125 int mmax=vp->indexmax();
00126 int i,j;
00127 for (i=mmin;i<=mmax;i++)
00128 {
00129 int jmin=(*vp)(i).indexmin();
00130 int jmax=(*vp)(i).indexmax();
00131 for (j=jmin;j<=jmax;j++)
00132 {
00133 y(ii,1)= ( *vp)(i,j).get_ind_index();
00134 y(ii,2)= ii;
00135 ii++;
00136 }
00137 }
00138 }
00139
00144 void funnel_init_df1b2matrix::set_value(const init_df1b2vector& _x,
00145 const int& _ii,const df1b2variable& _pen)
00146 {
00147 ADUNCONST(int,ii)
00148 ADUNCONST(init_df1b2vector,x)
00149 int mmin=p->indexmin();
00150 int mmax=p->indexmax();
00151 int i,j;
00152 for (i=mmin;i<=mmax;i++)
00153 {
00154 int jmin=(*p)(i).indexmin();
00155 int jmax=(*p)(i).indexmax();
00156 for (j=jmin;j<=jmax;j++)
00157 {
00158 (*this)(i,j) = (x(ii++));
00159 }
00160 }
00161 }
00162
00163
00164
00165
00166
00167
00168
00169
00170
00171
00172
00173
00174
00175
00176
00177
00178
00179
00180
00181
00182
00183
00184
00185
00186
00187
00188
00189
00190
00191
00192
00193
00194
00195
00196
00197
00198
00199
00200
00201
00202
00203
00204
00205
00206
00207
00208
00209
00210
00211
00212
00213
00214
00215
00216
00217
00218
00219
00220
00221
00222
00223
00224
00225
00226
00227
00228
00229
00230
00231
00232
00233
00234
00235
00236
00237
00238
00239
00240
00241
00242
00243
00244
00245
00246