00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00045 #if !defined(__F1B2LOCL__)
00046 # define __F1B2LOCL__
00047 #include <df1b2fun.h>
00048 #include <adrndeff.h>
00049
00050 class local_dep_df1b2variable;
00051
00056 class local_init_var
00057 {
00058 public:
00059 static df1b2variable * funnel_constraints_penalty;
00060 static void reset_counters(void) { num_vars=0; }
00061 static void end_local_calculations(void);
00062 static int num_vars;
00063
00064 static int num_inactive_vars;
00065 static int num_active_parameters;
00066 static init_df1b2vector * py;
00067 static imatrix * plist;
00068 int index;
00069 static local_init_var ** list;
00070
00071 static local_init_var ** inactive_list;
00072 local_init_var(void) { add_to_list(); }
00073 void add_to_list(void);
00074 void delete_from_list(void);
00075 void add_to_inactive_list(void);
00076 virtual void allocate(void);
00077
00078 static void dot_calcs_all(local_dep_df1b2variable&);
00079 virtual void dot_calcs(local_dep_df1b2variable&,int j)=0;
00080 virtual void set_dot(int)=0;
00081 static void set_dot_all(void);
00082 virtual void xinit(init_df1b2vector&,int& ii)=0;
00083 virtual void xinit(dvector&,int& ii)=0;
00084 virtual void set_value(const init_df1b2vector&,const int& ii,
00085 const df1b2variable&)=0;
00086 virtual void set_value(const init_df1b2vector&,const int& ii)=0;
00087 virtual void set_index(imatrix&,int& ii)=0;
00088 virtual int nvar_calc(void)=0;
00089
00090 static void reset(init_df1b2vector& x);
00091
00092 static void allocate_all(void);
00093 static int nvarcalc_all(void);
00094 };
00095
00100 class local_init_df1b2variable : public local_init_var, public df1b2variable
00101 {
00102 public:
00103 const df1b2variable * p;
00104 const double * xdot;
00105 int type;
00106 void * pointer;
00107 double xu;
00108 int ind_index;
00109 int nvar_calc(void){return 1;}
00110 virtual void set_dot(int ii){*(get_u_dot()+ii)=1;ii++;}
00111 local_init_df1b2variable(const df1b2_init_number & x);
00112 local_init_df1b2variable(const df1b2variable & x);
00113 local_init_df1b2variable(double xu,double * xdot);
00114 local_init_df1b2variable(void);
00115 local_init_df1b2variable(const random_effects_bounded_vector_info&);
00116 virtual void allocate(void);
00117 virtual void allocate(const df1b2variable&);
00118 virtual void preallocate(const df1b2variable&);
00119 virtual void xinit(init_df1b2vector&,int& ii);
00120 virtual void xinit(dvector&,int& ii);
00121 virtual void set_value(const init_df1b2vector&,const int& ii);
00122 virtual void set_value(const init_df1b2vector&,const int& ii,
00123 const df1b2variable&);
00124 virtual void set_index(imatrix&,int& ii);
00125 virtual void dot_calcs(local_dep_df1b2variable&,int j);
00126 };
00127
00132 class local_init_bounded_df1b2vector : public local_init_var,
00133 public df1b2vector
00134 {
00135 const df1b2vector * p;
00136 public:
00137 int nvar_calc(void);
00138 virtual void set_dot(int offset){cout << "HERE" << endl; ad_exit(1);}
00139 local_init_bounded_df1b2vector(const df1b2_init_bounded_vector & x);
00140 virtual void xinit(init_df1b2vector&,int& ii);
00141 virtual void xinit(dvector&,int& ii){ cout << "here"<< endl;}
00142 virtual void set_value(const init_df1b2vector&,const int& ii,
00143 const df1b2variable&);
00144 virtual void set_value(const init_df1b2vector&,const int& ii){ cout << "here"<< endl;}
00145 virtual void set_index(imatrix&,int& ii);
00146 };
00147
00152 class local_init_df1b2vector : public local_init_var, public df1b2vector
00153 {
00154 const df1b2vector * p;
00155 public:
00156 int nvar_calc(void);
00157 local_init_df1b2vector(const df1b2vector & x);
00158 virtual void xinit(init_df1b2vector&,int& ii);
00159 virtual void xinit(dvector&,int& ii){ cout << "here"<< endl;}
00160 virtual void set_value(const init_df1b2vector&,const int& ii,
00161 const df1b2variable&);
00162 virtual void set_value(const init_df1b2vector&,const int& ii);
00163 virtual void set_index(imatrix&,int& ii);
00164 virtual void dot_calcs(local_dep_df1b2variable&,int ){ cout << "Here" << endl;}
00165 };
00166
00167
00168
00169
00174 class local_dep_var
00175 {
00176 public:
00177 static df1b2variable * funnel_constraints_penalty;
00178 static void reset_counters(void) { num_vars=0; }
00179 static int num_vars;
00180
00181 static int num_inactive_vars;
00182 static int num_active_parameters;
00183
00184 static imatrix * plist;
00185 int index;
00186 static local_dep_var ** list;
00187
00188 static local_dep_var ** inactive_list;
00189 local_dep_var(void) { add_to_list(); }
00190 void add_to_list(void);
00191 void delete_from_list(void);
00192 void add_to_inactive_list(void);
00193 virtual void allocate(void)=0;
00194 virtual void deallocate(void)=0;
00195
00196
00197
00198
00199
00200
00201 virtual void set_index(imatrix&,int& ii)=0;
00202 virtual int nvar_calc(void)=0;
00203
00204
00205
00206 static void deallocate_all(void);
00207 static void allocate_all(void);
00208 static int nvarcalc_all(void);
00209 };
00210
00215 class local_dep_df1b2variable : public local_dep_var, public df1b2variable
00216 {
00217 public:
00218 const df1b2variable * p;
00219 ~local_dep_df1b2variable();
00220 int type;
00221 void * pointer;
00222 const double * xdot;
00223 const double * pxdot;
00224 double xu;
00225 int ind_index;
00226 int nvar_calc(void){return 1;}
00227
00228 local_dep_df1b2variable(const df1b2variable & x);
00229 local_dep_df1b2variable(void);
00230 local_dep_df1b2variable(double * xdot,double * pxdot);
00231
00232 local_dep_df1b2variable& operator = (const df1b2variable&);
00233 virtual void allocate(void);
00234 virtual void deallocate(void);
00235
00236
00237
00238
00239
00240
00241
00242 virtual void set_index(imatrix&,int& ii);
00243 };
00244
00249 class local_dep_df1b2vector : public local_dep_var, public df1b2vector
00250 {
00251 const df1b2vector * p;
00252 public:
00253 int nvar_calc(void);
00254 local_dep_df1b2vector(const df1b2vector & x);
00255
00256
00257
00258
00259
00260 virtual void set_index(imatrix&,int& ii);
00261 };
00262
00263
00264 df1b2variable plocal_tester(int i,const df1b2variable& x,
00265 const df1b2variable& y);
00266 df1b2variable local_tester(int i,local_init_df1b2variable x,
00267 local_init_df1b2variable y);
00268
00273 class local_init_pass1_var
00274 {
00275 public:
00276 static void reset_counters(void) { num_vars=0; }
00277 static void end_local_calculations(void);
00278 static int num_vars;
00279 static int num_active_parameters;
00280 static local_init_pass1_var ** list;
00281 local_init_pass1_var(void) { add_to_list(); }
00282 void add_to_list(void);
00283 virtual void allocate(void)=0;
00284 static void dot_calcs_all(local_dep_df1b2variable&);
00285 virtual void dot_calcs(local_dep_df1b2variable&,int j)=0;
00286 virtual void set_dot(int)=0;
00287 static void set_dot_all(void);
00288 virtual int nvar_calc(void)=0;
00289 static void allocate_all(void);
00290 static int nvarcalc_all(void);
00291 };
00292
00297 class local_init_pass1_df1b2variable : public local_init_pass1_var,
00298 public df1b2variable
00299 {
00300 double xu;
00301 double * xudot;
00302 public:
00303 virtual void set_dot(int ii){*(get_u_dot()+ii)=1;ii++;}
00304 virtual void dot_calcs(local_dep_df1b2variable&,int j);
00305 void allocate(void);
00306 int nvar_calc(void){return 1;}
00307 local_init_pass1_df1b2variable(double _xu,double* _xudot);
00308
00309 };
00310
00311 #endif // #if !defined(__DF1B2FNL__)