ADMB Documentation  11.1.1913
 All Classes Files Functions Variables Typedefs Friends Defines
model43.cpp
Go to the documentation of this file.
00001 /*
00002  * $Id: model43.cpp 1112 2013-07-12 21:41: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  void param_init_vector_vector::set_initial_value(const double_index_type& _it)
00010  {
00011     it=new double_index_type(_it);
00012  }
00013 
00014  param_init_vector_vector::param_init_vector_vector()
00015  {
00016    it=NULL;
00017  }
00018 
00019  void param_init_vector_vector::allocate(int min1,int max1,
00020    const index_type& min,
00021    const index_type& max,
00022    const char * s)
00023  {
00024    allocate(min1,max1,min,max,1,s);
00025  }
00026 
00027  void param_init_vector_vector::allocate(int min1,int max1,
00028    const index_type& min,
00029    const index_type& max,
00030    const index_type& phase_start,
00031    const char * s)
00032  {
00033    index_min=min1;
00034    index_max=max1;
00035    int size=indexmax()-indexmin()+1;
00036    if (size>0)
00037    {
00038      if (!(v=new param_init_vector[size]))
00039      {
00040         cerr << " error trying to allocate memory in "
00041           "param_init_vector_vector " << endl;
00042         exit(1);
00043      }
00044      v-=indexmin();
00045      for (int i=indexmin();i<=indexmax();i++)
00046      {
00047        if (it) v[i].set_initial_value(ad_double((*it)[i]));
00048        adstring ss=s + adstring("[") + str(i) + adstring("]");
00049        v[i].allocate(min[i],max[i],phase_start[i],(char*)(ss) );
00050      }
00051    }
00052    else
00053      v=NULL;
00054  }
00055 
00056  void param_init_vector::allocate(const ad_integer& imin,
00057    const ad_integer&imax,const ad_integer& phase_start,
00058     const char * s)
00059  {
00060    named_dvar_vector::allocate(imin,imax,s);
00061    if (!(!(*this)))
00062    {
00063      initial_params::allocate(phase_start);
00064      if (ad_comm::global_bparfile)
00065      {
00066        *(ad_comm::global_bparfile) >> dvar_vector(*this);
00067      }
00068      else if (ad_comm::global_parfile)
00069      {
00070        *(ad_comm::global_parfile) >> dvar_vector(*this);
00071      }
00072      else
00073      {
00074        dvar_vector::operator=(initial_value);
00075      }
00076    }
00077    else
00078    {
00079      initial_params::allocate(-1);
00080    }
00081  }
00082 
00083    param_init_vector_vector::~param_init_vector_vector()
00084    {
00085      deallocate();
00086    }
00087 
00088    void param_init_vector_vector::deallocate(void)
00089    {
00090      if(it)
00091      {
00092        delete it;
00093        it=NULL;
00094      }
00095      if (v)
00096      {
00097        v+=indexmin();
00098        delete [] v;
00099        v=NULL;
00100      }
00101    }