ADMB Documentation  11.5.3197
 All Classes Files Functions Variables Typedefs Friends Defines
mod_mc1.cpp
Go to the documentation of this file.
00001 /*
00002  * $Id$
00003  *
00004  * Author: David Fournier
00005  * Copyright (c) 2008-2012 Regents of the University of California
00006  */
00007 #include <admodel.h>
00008 
00009 void initial_params::add_random_vector(const dvector& x)
00010 {
00011   int ii=1;
00012   for (int i=0;i<num_initial_params;i++)
00013   {
00014     if (withinbound(0,(varsptr[i])->phase_start,current_phase))
00015     {
00016       (varsptr[i])->add_value((const dvector&)(x),ii);
00017     }
00018   }
00019 }
00020 
00021 void param_init_number::add_value(const dvector& ndev, const int& _ii)
00022 {
00023   int& ii=(int&) _ii;
00024   (*this)+=ndev(ii);
00025   ii++;
00026 }
00027 
00028 void param_init_bounded_number::add_value(const dvector& ndev, const int& _ii)
00029 {
00030   int& ii=(int&) _ii;
00031   (*this)+=ndev(ii);
00032   ii++;
00033 }
00034 
00035 void param_init_vector::add_value(const dvector& ndev, const int& _ii)
00036 {
00037   int& ii=(int&) _ii;
00038   int mmin=indexmin();
00039   int mmax=indexmax();
00040   for (int i=mmin;i<=mmax;i++)
00041   {
00042     (*this)(i)+=ndev(ii);
00043     ii++;
00044   }
00045 }
00046 
00047 void param_init_bounded_vector::add_value(const dvector& ndev, const int& _ii)
00048 {
00049   int& ii=(int&) _ii;
00050   int mmin=indexmin();
00051   int mmax=indexmax();
00052   for (int i=mmin;i<=mmax;i++)
00053   {
00054     (*this)(i)+=ndev(ii);
00055     ii++;
00056   }
00057 }
00058 
00059 void param_init_matrix::add_value(const dvector& ndev, const int& _ii)
00060 {
00061   int& ii=(int&) _ii;
00062   int rmin=rowmin();
00063   int rmax=rowmax();
00064   for (int i=rmin;i<=rmax;i++)
00065   {
00066     int cmin=(*this)(i).indexmin();
00067     int cmax=(*this)(i).indexmax();
00068     for (int j=cmin;j<=cmax;j++)
00069     {
00070       (*this)(i,j)+=ndev(ii);
00071       ii++;
00072     }
00073   }
00074 }
00075 
00076 void param_init_bounded_matrix::add_value(const dvector& ndev, const int& _ii)
00077 {
00078   int& ii=(int&) _ii;
00079   int rmin=rowmin();
00080   int rmax=rowmax();
00081   for (int i=rmin;i<=rmax;i++)
00082   {
00083     int cmin=(*this)(i).indexmin();
00084     int cmax=(*this)(i).indexmax();
00085     for (int j=cmin;j<=cmax;j++)
00086     {
00087       (*this)(i,j)+=ndev(ii);
00088       ii++;
00089     }
00090   }
00091 }