00001 /* 00002 * $Id: f1b2loc2.cpp 818 2013-03-12 23:07:07Z johnoel $ 00003 * 00004 * Author: David Fournier 00005 * Copyright (c) 2008-2012 Regents of the University of California 00006 */ 00011 #include <df1b2fun.h> 00012 #include "f1b2locl.h" 00013 class newadkludge; 00014 extern newadkludge * newadkl; 00015 00020 local_dep_df1b2variable::local_dep_df1b2variable(void) : 00021 df1b2variable(newadkl) 00022 { 00023 //adpool * tmppool=df1b2variable::pool; 00024 //int tmpnvar=df1b2variable::nvar; 00025 //df1b2variable::restore_adpool_pointer(); 00026 p=new df1b2variable(); 00027 //df1b2variable::save_adpool_pointer(); 00028 //df1b2variable::pool=tmppool; 00029 //df1b2variable::nvar=tmpnvar; 00030 } 00031 00036 local_dep_df1b2variable::~local_dep_df1b2variable() 00037 { 00038 delete (df1b2variable *) p; 00039 } 00040 00045 local_dep_df1b2variable& local_dep_df1b2variable::operator = 00046 (const df1b2variable& x) 00047 { 00048 df1b2variable::operator = (x); 00049 *(p->get_u()) = *get_u(); 00050 local_init_var::dot_calcs_all(*this); 00051 /* 00052 int global_nvar=adpool_nvar_stack[adpool_stack_pointer-1]; 00053 if (p) 00054 { 00055 p->initialize(global_nvar); 00056 *(p->get_u()) = *get_u(); 00057 } 00058 */ 00059 return *this; 00060 } 00061 00066 local_dep_df1b2variable::local_dep_df1b2variable 00067 (double* _xdot,double * _pxdot) : df1b2variable() 00068 { 00069 p=0; 00070 xdot=_xdot; 00071 pxdot=_pxdot; 00072 } 00073 00078 local_dep_df1b2variable::local_dep_df1b2variable 00079 (const df1b2variable & _x) : df1b2variable(newadkl) 00080 { 00081 ADUNCONST(df1b2variable,x) 00082 p=&_x; 00083 xu=*(x.get_u()); 00084 } 00085 00090 local_dep_df1b2vector::local_dep_df1b2vector(const df1b2vector & _x) 00091 { 00092 ADUNCONST(df1b2vector,x) 00093 p=&_x; 00094 int mmin=x.indexmin(); 00095 int mmax=x.indexmax(); 00096 //int ind_index = x(mmin).get_ind_index(); 00097 df1b2variable::noallocate=1; 00098 df1b2vector::allocate(mmin,mmax); 00099 df1b2variable::noallocate=0; 00100 } 00101 00102 00103 // #define USE_BARD_PEN 00104 // class newadkludge; 00105 // extern newadkludge * newadkl=0; 00106 // 00107 // 00108 typedef local_dep_var * PLOCAL_INIT_VAR; 00109 // 00110 // class laplace_approximation_calculator; 00111 // laplace_approximation_calculator * funnel_dep_var::lapprox=0; 00112 // df1b2variable * funnel_dep_var::funnel_constraints_penalty=0; 00113 int local_dep_var::num_vars=0; 00114 // //int funnel_dep_var::num_all_vars=0; 00115 int local_dep_var::num_inactive_vars=0; 00116 int local_dep_var::num_active_parameters=0; 00117 // //funnel_dep_var ** funnel_dep_var::all_list=new PFUNNEL_INIT_VAR[200]; 00118 local_dep_var ** local_dep_var::list=new PLOCAL_INIT_VAR[200]; 00119 local_dep_var ** local_dep_var::inactive_list=new PLOCAL_INIT_VAR[200]; 00120 //dep_df1b2vector * local_dep_var::py=0; 00121 imatrix * local_dep_var::plist=0; 00122 // 00123 // void xxx(dep_df1b2vector & tmp,int x){;} 00124 // 00129 void local_dep_var::add_to_list(void) 00130 { 00131 index=num_vars; 00132 list[num_vars++]=this; 00133 //all_list[num_all_vars++]=this; 00134 } 00135 // 00136 // void funnel_dep_var::delete_from_list(void) 00137 // { 00138 // if (index!=num_vars-1) 00139 // { 00140 // cerr << "can only delete last member" << endl; 00141 // ad_exit(1); 00142 // } 00143 // num_vars--; 00144 // index=-1; 00145 // } 00146 // 00147 00152 void local_dep_var::add_to_inactive_list(void) 00153 { 00154 index=-1; 00155 inactive_list[num_inactive_vars++]=this; 00156 } 00157 00162 void local_init_var::end_local_calculations(void) 00163 { 00164 local_dep_var::deallocate_all(); 00165 reset_counters(); 00166 f1b2gradlist=globalf1b2gradlist; 00167 df1b2_gradlist::set_yes_derivatives(); 00168 df1b2variable::restore_adpool_pointer(); 00169 } 00170 00175 void local_dep_var::allocate_all(void) 00176 { 00177 for (int i=0;i<num_vars;i++) 00178 { 00179 list[i]->allocate(); 00180 } 00181 } 00182 00187 void local_dep_var::deallocate_all(void) 00188 { 00189 for (int i=0;i<num_vars;i++) 00190 { 00191 list[i]->deallocate(); 00192 } 00193 } 00194 00199 void local_dep_df1b2variable::allocate(void) 00200 { 00201 df1b2variable::allocate(); 00202 } 00203 00208 void local_dep_df1b2variable::deallocate(void) 00209 { 00210 df1b2variable::deallocate(); 00211 } 00212 00217 int local_dep_var::nvarcalc_all(void) 00218 { 00219 int n=0; 00220 for (int i=0;i<num_vars;i++) 00221 { 00222 n+=list[i]->nvar_calc(); 00223 } 00224 return n; 00225 } 00226 00231 void local_dep_df1b2variable::set_index(imatrix& y,int& ii) 00232 { 00233 y(ii,1)= ind_index; 00234 y(ii,2)= ii; 00235 ii++; 00236 } 00237 00242 int local_dep_df1b2vector::nvar_calc(void) 00243 { 00244 return p->indexmax()-p->indexmin()+1; 00245 } 00246 00251 void local_dep_df1b2vector::set_index(imatrix& y,int& ii) 00252 { 00253 00254 int mmin=p->indexmin(); 00255 int mmax=p->indexmax(); 00256 int i; 00257 for (i=mmin;i<=mmax;i++) 00258 { 00259 //y(ii,1)= ( *(df1b2_dep_vector *)(p) )(i).get_ind_index(); 00260 y(ii,2)= ii; 00261 ii++; 00262 } 00263 }
|
|
Generated on Fri May 10 2013 14:23:11 for ADMB Documentation by 1.8.0
|