ADMB Documentation  11.1.2503
 All Classes Files Functions Variables Typedefs Friends Defines
setin.cpp
Go to the documentation of this file.
00001 /*
00002  * $Id: setin.cpp 1942 2014-04-28 22:22:45Z johnoel $
00003  *
00004  * Author: David Fournier
00005  * Copyright (c) 2008-2012 Regents of the University of California
00006  */
00011 #include "fvar.hpp"
00012 
00017 void set_value_inv(const double x,const dvector& _v, const int& _ii)
00018 {
00019   dvector& v=(dvector&) _v;
00020   int& ii=(int&) _ii;
00021   v(ii++)=x;
00022 }
00023 
00028 void set_value_inv(const double u, const dvector& _x, const int& _ii,
00029   const double fmin, const double fmax)
00030 {
00031   int& ii=(int&) _ii;
00032   dvector& x=(dvector&) _x;
00033   x(ii++)=boundpin(u,fmin,fmax);
00034 }
00035 
00040 void set_value_inv(const prevariable& u, const dvector& _x, const int& _ii,
00041   const double fmin, const double fmax)
00042 {
00043   dvector& x=(dvector&) _x;
00044   int& ii=(int&) _ii;
00045   x(ii++)=boundpin(u,fmin,fmax);
00046 }
00047 
00052 void set_value_inv(const dvector& x,const dvector& _v, const int& _ii)
00053 {
00054   int& ii=(int&) _ii;
00055   dvector& v=(dvector&) _v;
00056   int min=x.indexmin();
00057   int max=x.indexmax();
00058   for (int i=min;i<=max;i++)
00059   {
00060     v(ii++)=x(i);
00061   }
00062 }
00063 
00068 void set_value_inv(const dvector& x,const dvector& _v, const int& _ii,double s)
00069 {
00070   int& ii=(int&) _ii;
00071   dvector& v=(dvector&) _v;
00072   int min=x.indexmin();
00073   int max=x.indexmax();
00074   for (int i=min;i<=max;i++)
00075   {
00076     v(ii++)=x(i)*s;
00077   }
00078 }
00079 
00084 void set_value_inv(const dvector& x, const dvector& _v, const int& _ii,
00085   const double fmin, const double fmax)
00086 {
00087   int& ii=(int&) _ii;
00088   dvector& v=(dvector&) _v;
00089   int min=x.indexmin();
00090   int max=x.indexmax();
00091   for (int i=min;i<=max;i++)
00092   {
00093     v(ii++)=boundpin(x(i),fmin,fmax);
00094   }
00095 }
00096 
00101 void set_value_inv(const dvar_vector& x,const dvector& _v, const int& _ii,
00102   const double fmin, const double fmax)
00103 {
00104   int& ii=(int&) _ii;
00105   dvector& v=(dvector&) _v;
00106   int min=x.indexmin();
00107   int max=x.indexmax();
00108   for (int i=min;i<=max;i++)
00109   {
00110     v(ii++)=boundpin(x(i),fmin,fmax);
00111   }
00112 }
00113 
00118 void set_value_inv(const dmatrix& x, const dvector& v, const int& ii)
00119 {
00120   int min=x.rowmin();
00121   int max=x.rowmax();
00122   if (allocated(x))
00123   {
00124     for (int i=min;i<=max;i++)
00125     {
00126       if (allocated(x(i)))
00127         set_value_inv(x(i),v,ii);
00128     }
00129   }
00130 }
00131 
00136 void set_value_inv(const dmatrix& x,const dvector& v, const int& ii,
00137   const double fmin, const double fmax)
00138 {
00139   int min=x.rowmin();
00140   int max=x.rowmax();
00141   if (allocated(x))
00142   {
00143     for (int i=min;i<=max;i++)
00144     {
00145       if (allocated(x(i)))
00146         set_value_inv(x(i),v,ii,fmin,fmax);
00147     }
00148   }
00149 }
00150 
00155 void set_value_inv(const d3_array& x, const dvector& v, const int& ii)
00156 {
00157   int min=x.slicemin();
00158   int max=x.slicemax();
00159   if (allocated(x))
00160   {
00161     for (int i=min;i<=max;i++)
00162     {
00163       if (allocated(x(i)))
00164         set_value_inv(x(i),v,ii);
00165     }
00166   }
00167 }
00168 
00173 void set_value_inv(const d3_array& x,const dvector& v, const int& ii,
00174   const double fmin, const double fmax)
00175 {
00176   int min=x.slicemin();
00177   int max=x.slicemax();
00178   if (allocated(x))
00179   {
00180     for (int i=min;i<=max;i++)
00181     {
00182       if (allocated(x(i)))
00183         set_value_inv(x(i),v,ii,fmin,fmax);
00184     }
00185   }
00186 }
00187 
00192 void set_value_inv_partial(const dvector& x, const dvector& _v, const int& _ii,
00193   int n)
00194 {
00195   int& ii=(int&) _ii;
00196   dvector& v=(dvector&) _v;
00197   int min=x.indexmin();
00198   int max=min+n-1;
00199     if (max >x.indexmax())
00200     {
00201       cerr << "index out of range in set_value_patial(const dvar_vector&, ... "
00202            << endl;
00203     }
00204   for (int i=min;i<=max;i++)
00205   {
00206     v(ii++)=x(i);
00207   }
00208 }
00209 
00214 void set_value_inv_partial(const dvector& x,const dvector& _v, const int& _ii,
00215   int n, const double fmin, const double fmax)
00216 {
00217   int& ii=(int&) _ii;
00218   dvector& v=(dvector&) _v;
00219   int min=x.indexmin();
00220   int max=min+n-1;
00221     if (max >x.indexmax())
00222     {
00223       cerr << "index out of range in set_value_patial(const dvar_vector&, ... "
00224            << endl;
00225     }
00226   for (int i=min;i<=max;i++)
00227   {
00228     v(ii++)=boundpin(x(i),fmin,fmax);
00229   }
00230 }
00231 
00236 void set_value_inv_partial(const dvar_matrix& x, const dvector& _v,
00237   const int& _ii, int n)
00238 {
00239   int mmin=x.indexmin();
00240   int mmax=x.indexmax();
00241   for (int i=mmin;i<=mmax;i++)
00242   {
00243     set_value_inv_partial(x(i),_v,_ii,n);
00244   }
00245 }
00246 
00251 void set_value_inv_partial(const dvar_vector& x, const dvector& _v,
00252   const int& _ii, int n)
00253 {
00254   int& ii=(int&) _ii;
00255   dvector& v=(dvector&) _v;
00256   int min=x.indexmin();
00257   int max=min+n-1;
00258     if (max >x.indexmax())
00259     {
00260       cerr << "index out of range in set_value_patial(const dvar_vector&, ... "
00261            << endl;
00262     }
00263   for (int i=min;i<=max;i++)
00264   {
00265     v(ii++)=value(x(i));
00266   }
00267 }
00268 
00273 void set_value_inv_partial(const dvar_vector& x, const dvector& _v,
00274   const int& _ii, int n, const double fmin, const double fmax)
00275 {
00276   int& ii=(int&) _ii;
00277   int min=x.indexmin();
00278   int max=min+n-1;
00279   dvector& v=(dvector&) _v;
00280     if (max >x.indexmax())
00281     {
00282       cerr << "index out of range in set_value_patial(const dvar_vector&, ... "
00283            << endl;
00284     }
00285   for (int i=min;i<=max;i++)
00286   {
00287     v(ii++)=boundpin(x(i),fmin,fmax);
00288   }
00289 }
00290 
00295 void set_value_inv(const prevariable& x, const dvector& _v, const int& _ii)
00296 {
00297   int& ii=(int&) _ii;
00298   dvector& v=(dvector&) _v;
00299   v(ii++)=value(x);
00300 }
00301 
00306 void set_value_inv(const dvariable& u, const dvector& _x, const int& _ii,
00307   const double fmin, const double fmax)
00308 {
00309   int& ii=(int&) _ii;
00310   dvector& x=(dvector&) _x;
00311   x(ii++)=boundpin(value(u),fmin,fmax);
00312 }
00313 
00318 void set_value_inv(const dvar_vector& x, const dvector& _v, const int& _ii)
00319 {
00320   int& ii=(int&) _ii;
00321   dvector& v=(dvector&) _v;
00322   if (!(!(x)))
00323   {
00324     int min=x.indexmin();
00325     int max=x.indexmax();
00326     for (int i=min;i<=max;i++)
00327     {
00328       v(ii++)=value(x(i));
00329     }
00330   }
00331 }
00332 
00337 void set_value_inv(const dvar_vector& x,const dvector& _v,const int& _ii,
00338   double fmin,double fmax,double s)
00339 {
00340   int& ii=(int&) _ii;
00341   dvector& v=(dvector&) _v;
00342   int min=x.indexmin();
00343   int max=x.indexmax();
00344   for (int i=min;i<=max;i++)
00345   {
00346     v(ii++)=boundpin(x(i),fmin,fmax)*s;
00347   }
00348 }
00349 
00354 void set_value_inv(const dvar_vector& x,const dvector& _v,const int& _ii,
00355   double fmin,double fmax,double s,const ivector& flags)
00356 {
00357   int& ii=(int&) _ii;
00358   dvector& v=(dvector&) _v;
00359   int min=x.indexmin();
00360   int max=x.indexmax();
00361   for (int i=min;i<=max;i++)
00362   {
00363     if (flags(i))
00364     {
00365       v(ii++)=boundpin(x(i),fmin,fmax)*s;
00366     }
00367   }
00368 }
00369 
00374 void set_value_inv(const dvar_vector& x,const dvector& _v,const int& _ii,
00375   double s)
00376 {
00377   int& ii=(int&) _ii;
00378   dvector& v=(dvector&) _v;
00379   if (!(!(x)))
00380   {
00381     int min=x.indexmin();
00382     int max=x.indexmax();
00383     for (int i=min;i<=max;i++)
00384     {
00385       v(ii++)=value(x(i))*s;
00386     }
00387   }
00388 }
00389 
00394 void set_value_inv(const dvar_matrix& x, const dvector& v, const int& ii)
00395 {
00396   if (!(!(x)))
00397   {
00398     int min=x.rowmin();
00399     int max=x.rowmax();
00400     for (int i=min;i<=max;i++)
00401     {
00402       if (allocated(x(i)))
00403         set_value_inv(x(i),v,ii);
00404     }
00405   }
00406 }
00407 
00412 void set_value_inv(const dvar_matrix& x,const dvector& v, const int& ii,
00413   double s)
00414 {
00415   if (!(!(x)))
00416   {
00417     int min=x.rowmin();
00418     int max=x.rowmax();
00419     for (int i=min;i<=max;i++)
00420     {
00421       if (allocated(x(i)))
00422         set_value_inv(x(i),v,ii,s);
00423     }
00424   }
00425 }
00426 
00431 void set_value_inv(const dvar_matrix& x, const dvector& v, const int& ii,
00432   const double fmin, const double fmax)
00433 {
00434   if (allocated(x))
00435   {
00436     int min=x.rowmin();
00437     int max=x.rowmax();
00438     for (int i=min;i<=max;i++)
00439     {
00440       if (allocated(x(i)))
00441         set_value_inv(x(i),v,ii,fmin,fmax);
00442     }
00443   }
00444 }
00445 
00450 void set_value_inv(const dvar_matrix& x,const dvector& v, const int& ii,
00451   double fmin,double fmax,double s)
00452 {
00453   if (allocated(x))
00454   {
00455     int min=x.rowmin();
00456     int max=x.rowmax();
00457     for (int i=min;i<=max;i++)
00458     {
00459       if (allocated(x(i)))
00460         set_value_inv(x(i),v,ii,fmin,fmax,s);
00461     }
00462   }
00463 }
00464 
00469 void set_value_inv(const dvar3_array& x, const dvector& v, const int& ii)
00470 {
00471   if (!(!(x)))
00472   {
00473     int min=x.slicemin();
00474     int max=x.slicemax();
00475     for (int i=min;i<=max;i++)
00476     {
00477       if (allocated(x(i)))
00478         set_value_inv(x(i),v,ii);
00479     }
00480   }
00481 }
00482 
00487 void set_value_inv(const dvar3_array& x, const dvector& v, const int& ii,
00488   const double fmin, const double fmax)
00489 {
00490   if (!(!(x)))
00491   {
00492     int min=x.slicemin();
00493     int max=x.slicemax();
00494     for (int i=min;i<=max;i++)
00495     {
00496       if (allocated(x(i)))
00497         set_value_inv(x(i),v,ii,fmin,fmax);
00498     }
00499   }
00500 }