Go to the documentation of this file.00001
00002
00003
00004
00005
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
00017 param_init_vector_vector::param_init_vector_vector():
00018 v(NULL),
00019 index_min(0),
00020 index_max(0),
00021 it(NULL)
00022 {
00023 }
00024
00025 void param_init_vector_vector::allocate(
00026 int min1,
00027 int max1,
00028 const index_type& min,
00029 const index_type& max,
00030 const char * s)
00031 {
00032 allocate(min1,max1,min,max,1,s);
00033 }
00034
00035 void param_init_vector_vector::allocate(
00036 int min1,
00037 int max1,
00038 const index_type& min,
00039 const index_type& max,
00040 const index_type& phase_start,
00041 const char * s)
00042 {
00043 int size = max1 - min1 + 1;
00044 if (size > 0)
00045 {
00046 v = new param_init_vector[size];
00047 if (!v)
00048 {
00049 cerr << " error trying to allocate memory in "
00050 "param_init_vector_vector " << endl;
00051 exit(1);
00052 }
00053
00054 index_min = min1;
00055 index_max = max1;
00056 v-=indexmin();
00057 for (int i=indexmin();i<=indexmax();i++)
00058 {
00059 if (it) v[i].set_initial_value(ad_double((*it)[i]));
00060 adstring ss=s + adstring("[") + str(i) + adstring("]");
00061 v[i].allocate(min[i],max[i],phase_start[i],(char*)(ss) );
00062 }
00063 }
00064 }
00065 void param_init_vector::allocate(
00066 const ad_integer& imin,
00067 const ad_integer& imax,
00068 const ad_integer& _phase_start,
00069 const char* s)
00070 {
00071 named_dvar_vector::allocate(imin, imax, s);
00072 if (!(!(*this)))
00073 {
00074 initial_params::allocate(_phase_start);
00075 if (ad_comm::global_bparfile)
00076 {
00077 *(ad_comm::global_bparfile) >> dvar_vector(*this);
00078 }
00079 else if (ad_comm::global_parfile)
00080 {
00081 *(ad_comm::global_parfile) >> dvar_vector(*this);
00082 }
00083 else
00084 {
00085 dvar_vector::operator=(initial_value);
00086 }
00087 }
00088 else
00089 {
00090 initial_params::allocate(-1);
00091 }
00092 }
00096 param_init_vector_vector::~param_init_vector_vector()
00097 {
00098 deallocate();
00099 }
00103 void param_init_vector_vector::deallocate(void)
00104 {
00105 if (it)
00106 {
00107 delete it;
00108 it = NULL;
00109 }
00110 if (v)
00111 {
00112 v += indexmin();
00113 delete [] v;
00114 v = NULL;
00115 }
00116 }