ADMB Documentation  11.1.1015
 All Classes Files Functions Variables Typedefs Friends Defines
f1b2loc2.cpp
Go to the documentation of this file.
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   }