Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007 #include <admodel.h>
00008
00009 void param_init_matrix_vector::set_initial_value(const double_index_type& _it)
00010 {
00011 it=new double_index_type(_it);
00012 }
00013
00017 param_init_matrix_vector::param_init_matrix_vector():
00018 v(NULL),
00019 index_min(0),
00020 index_max(0),
00021 it(NULL)
00022 {
00023 }
00024
00025 void param_init_matrix_vector::allocate(
00026 int min1,
00027 int max1,
00028 const index_type& min,
00029 const index_type& max,
00030 const index_type& min2,
00031 const index_type& max2,
00032 const char* s)
00033 {
00034 allocate(min1,max1,min,max,min2,max2,1,s);
00035 }
00036
00037 void param_init_matrix_vector::allocate(
00038 int min1,
00039 int max1,
00040 const index_type& min,
00041 const index_type& max,
00042 const index_type& min2,
00043 const index_type& max2,
00044 const index_type& phase_start,
00045 const char * s)
00046 {
00047 int size = max1 - min1 + 1;
00048 if (size > 0)
00049 {
00050 v = new param_init_matrix[size];
00051 if (!v)
00052 {
00053 cerr << " error trying to allocate memory in "
00054 "param_init_vector_vector " << endl;
00055 exit(1);
00056 }
00057 index_min=min1;
00058 index_max=max1;
00059 v-=indexmin();
00060 for (int i=indexmin();i<=indexmax();i++)
00061 {
00062 if (it) v[i].set_initial_value(ad_double((*it)[i]));
00063 adstring ss=s + adstring("[") + str(i) + adstring("]");
00064 v[i].allocate(min[i],max[i],min2[i],max2[i], phase_start[i],
00065 (char*)(ss));
00066 }
00067 }
00068 }
00073 void param_init_matrix::allocate(
00074 const ad_integer& imin,
00075 const ad_integer& imax,
00076 const index_type& imin2,
00077 const index_type& imax2,
00078 const ad_integer& _phase_start,
00079 const char* s)
00080 {
00081 named_dvar_matrix::allocate(imin,imax,imin2,imax2,s);
00082 if (!(!(*this)))
00083 {
00084 initial_params::allocate(_phase_start);
00085 if (ad_comm::global_bparfile)
00086 {
00087 *(ad_comm::global_bparfile) >> dvar_matrix(*this);
00088 }
00089 else if (ad_comm::global_parfile)
00090 {
00091 *(ad_comm::global_parfile) >> dvar_matrix(*this);
00092 }
00093 else
00094 {
00095 dvar_matrix::operator=(initial_value);
00096 }
00097 }
00098 else
00099 {
00100 initial_params::allocate(-1);
00101 }
00102 }
00106 param_init_matrix_vector::~param_init_matrix_vector()
00107 {
00108 deallocate();
00109 }
00113 void param_init_matrix_vector::deallocate(void)
00114 {
00115 if (it)
00116 {
00117 delete it;
00118 it = NULL;
00119 }
00120 if (v)
00121 {
00122 v += indexmin();
00123 delete [] v;
00124 v = NULL;
00125 }
00126 }