ADMB Documentation  11.1.1916
 All Classes Files Functions Variables Typedefs Friends Defines
model53.cpp
Go to the documentation of this file.
00001 /*
00002  * $Id: model53.cpp 1662 2014-02-24 19:34:41Z johnoel $
00003  *
00004  * Author: David Fournier
00005  * Copyright (c) 2008-2012 Regents of the University of California
00006  */
00007 #include <admodel.h>
00008 
00009 //double ndfboundp( double x, double fmin, double fmax, const double& fpen);
00010 
00011   void param_init_number::sd_vscale(const dvar_vector& _d,const dvar_vector& x,
00012     const int& _ii)
00013   {
00014     int& ii=(int&) _ii;
00015     dvar_vector& d=(dvar_vector&) _d;
00016     d(ii)=1.0;
00017     ii++;
00018   }
00019 
00020   void param_init_bounded_number::sd_vscale(const dvar_vector& _d,
00021     const dvar_vector& x,const int& _ii)
00022   {
00023     int& ii=(int&) _ii;
00024     dvar_vector& d=(dvar_vector&) _d;
00025     d(ii)=dfboundp(x(ii),minb,maxb);
00026     ii++;
00027   }
00028 
00029   void param_init_vector::sd_vscale(const dvar_vector& _d,
00030     const dvar_vector& x,const int& _ii)
00031   {
00032     if (allocated(*this))
00033     {
00034       int& ii=(int&) _ii;
00035       dvar_vector& d=(dvar_vector&) _d;
00036       int mmin=indexmin();
00037       int mmax=indexmax();
00038       for (int i=mmin;i<=mmax;i++)
00039       {
00040         d(ii)=1.0;
00041         ii++;
00042       }
00043     }
00044   }
00045 
00046 
00047   void param_init_matrix::sd_vscale(const dvar_vector& _d,
00048     const dvar_vector& x,const int& _ii)
00049   {
00050     if (allocated(*this))
00051     {
00052       int& ii=(int&) _ii;
00053       dvar_vector& d=(dvar_vector&) _d;
00054       int mmin=rowmin();
00055       int mmax=rowmax();
00056       for (int i=mmin;i<=mmax;i++)
00057       {
00058         if (allocated((*this)(i)))
00059         {
00060           int cmin=((*this)(i)).indexmin();
00061           int cmax=((*this)(i)).indexmax();
00062           for (int j=cmin;j<=cmax;j++)
00063           {
00064             d(ii)=1.0;
00065             ii++;
00066           }
00067         }
00068       }
00069     }
00070   }
00071 
00072   void param_init_bounded_vector::sd_vscale(const dvar_vector& _v,
00073     const dvar_vector& x,const int& _ii)
00074   {
00075     if (allocated(*this))
00076     {
00077       int& ii=(int&) _ii;
00078       dvar_vector& v=(dvar_vector&) _v;
00079       int mmin=indexmin();
00080       int mmax=indexmax();
00081       //double pen=0;
00082       for (int i=mmin;i<=mmax;i++)
00083       {
00084         v(ii)=dfboundp(x(ii),minb,maxb);
00085         ii++;
00086       }
00087     }
00088   }
00089 
00090   void param_init_bounded_matrix::sd_vscale(const dvar_vector& _d,
00091     const dvar_vector& x,const int& _ii)
00092   {
00093     if (allocated(*this))
00094     {
00095       int& ii=(int&) _ii;
00096       dvar_vector& d=(dvar_vector&) _d;
00097       int mmin=rowmin();
00098       int mmax=rowmax();
00099       for (int i=mmin;i<=mmax;i++)
00100       {
00101         if (allocated((*this)(i)))
00102         {
00103           int cmin=((*this)(i)).indexmin();
00104           int cmax=((*this)(i)).indexmax();
00105           for (int j=cmin;j<=cmax;j++)
00106           {
00107             d(ii)=dfboundp(x(ii),minb,maxb);
00108             ii++;
00109           }
00110         }
00111       }
00112     }
00113   }