def preprocess(self, problem_data): """Code generation and compilation before running solver.""" # if os.path.isfile('codecache.pkl'): # with open('codecache.pkl','rb') as f: # deriv_func_bck = pickle.load(f) # # else: # deriv_func_bck = None out_ws = QCPICodeGen({'problem_data': problem_data}) print(out_ws['bc_func_code']) print(out_ws['deriv_func_code']) self.bvp = BVP(out_ws['deriv_func_fn'], out_ws['bc_func_fn'], None) #out_ws['compute_control_fn'])#out_ws['compute_control_fn']) self.stm_ode_func = self.bvp.deriv_func self.module = out_ws['code_module'] self.left_bc_mask = out_ws['code_module'].bc_free_mask self.num_dae_vars = out_ws['code_module'].num_dae_vars # self.left_bc_mask = problem_data['bc_free_mask'] # print(self.left_bc_mask) self.bc_left_fn = out_ws['code_module'].bc_func_left self.bc_right_fn = out_ws['code_module'].bc_func_right # self.deriv_func = njit(parallel=True)(out_ws['code_module'].deriv_func_mcpi) # if deriv_func_bck is not None: # print('Loaded deriv_func from cache') # self.deriv_func = deriv_func_bck # self.saved_deriv_func = True # else: # self.deriv_func = out_ws['code_module'].deriv_func_mcpi self.deriv_func = out_ws['code_module'].deriv_func sys.modules['_beluga_'+problem_data['problem_name']] = out_ws['code_module'] return out_ws['code_module']
def preprocess(self, problem_data): """Code generation and compilation before running solver.""" cache_exists = os.path.isfile('codecache.pkl') out_ws = PythonCodeGen({'problem_data': problem_data}) if not self.cached or not cache_exists: print(out_ws['bc_func_code']) print(out_ws['deriv_func_code']) self.stm_ode_func = self.make_stmode(out_ws['deriv_func_fn'], problem_data['nOdes']) self.saved_code = False else: bvp_data = self.load_code() out_ws['deriv_func_fn'] = bvp_data['deriv_fn'] out_ws['code_module'].deriv_func = bvp_data['deriv_fn'] # self.stm_ode_func = bvp_data['stmode_fn'] self.stm_ode_func = self.make_stmode(bvp_data['deriv_fn'], problem_data['nOdes']) out_ws['code_module'].deriv_func_ode45 = self.deriv_func_ode45 self.out_ws = out_ws self.bvp = BVP( out_ws['deriv_func_fn'], out_ws['bc_func_fn'], out_ws['compute_control_fn']) #out_ws['compute_control_fn']) # self.stm_ode_func = ft.partial(self._stmode_fd, odefn=self.bvp.deriv_func) self.bc_jac_multi = ft.partial(self.__bc_jac_multi, bc_func=self.bvp.bc_func) sys.modules['_beluga_' + problem_data['problem_name']] = out_ws['code_module'] return out_ws['code_module']
def preprocess(self, problem_data): """Code generation and compilation before running solver.""" out_ws = PythonCodeGen({'problem_data': problem_data}) logging.debug(out_ws['bc_func_code']) logging.debug(out_ws['deriv_func_code']) if self.use_numba: deriv_func = numba.njit(parallel=False)( out_ws['code_module'].deriv_func_nojit) else: deriv_func = out_ws['code_module'].deriv_func_nojit out_ws['deriv_func_fn'] = deriv_func out_ws['code_module'].deriv_func = deriv_func self.saved_code = False self.out_ws = out_ws # self.stm_ode_func = self.make_stmode(out_ws['deriv_func_fn'], problem_data['nOdes']) self.bvp = BVP( out_ws['deriv_func_fn'], out_ws['bc_func_fn'], out_ws['compute_control_fn']) #out_ws['compute_control_fn']) # self.stm_ode_func = ft.partial(self._stmode_fd, odefn=self.bvp.deriv_func) self.stm_ode_func = self.make_stmode(self.bvp.deriv_func, problem_data['nOdes']) self.bc_jac_multi = ft.partial(self.__bc_jac_multi, bc_func=self.bvp.bc_func) sys.modules['_beluga_' + problem_data['problem_name']] = out_ws['code_module'] return out_ws['code_module']
def preprocess(self, problem_data): """Code generation and compilation before running solver.""" out_ws = PythonCodeGen({'problem_data': problem_data}) logging.debug(out_ws['bc_func_code']) logging.debug(out_ws['deriv_func_code']) cache_exists = os.path.isfile('codecache.pkl') # if not self.cached or not cache_exists: deriv_func = numba.njit(parallel=True)( out_ws['code_module'].deriv_func_nojit) out_ws['deriv_func_fn'] = deriv_func out_ws['code_module'].deriv_func = deriv_func self.saved_code = False # else: # bvp_data = self.load_code() # print('deriv func',id(bvp_data['deriv_fn'])) # out_ws['deriv_func_fn'] = bvp_data['deriv_fn'] # out_ws['code_module'].deriv_func = bvp_data['deriv_fn'] self.out_ws = out_ws # self.stm_ode_func = self.make_stmode(out_ws['deriv_func_fn'], problem_data['nOdes']) self.bvp = BVP( out_ws['deriv_func_fn'], out_ws['bc_func_fn'], out_ws['compute_control_fn']) #out_ws['compute_control_fn']) # self.stm_ode_func = ft.partial(self._stmode_fd, odefn=self.bvp.deriv_func) # self.stm_ode_func = self.make_stmode(self.bvp.deriv_func, problem_data['nOdes']) # self.bc_jac_multi = ft.partial(self.__bc_jac_multi, bc_func=self.bvp.bc_func) sys.modules['_beluga_' + problem_data['problem_name']] = out_ws['code_module'] return out_ws['code_module']
def preprocess(self, problem_data): """Code generation and compilation before running solver.""" out_ws = PythonCodeGen({'problem_data': problem_data}) print(out_ws['bc_func_code']) print(out_ws['deriv_func_code']) self.bvp = BVP( out_ws['deriv_func_fn'], out_ws['bc_func_fn'], out_ws['compute_control_fn']) #out_ws['compute_control_fn']) # self.stm_ode_func = ft.partial(self.__stmode_fd, odefn=self.bvp.deriv_func) # self.bc_jac_func = ft.partial(self.__bcjac_fd, bc_func=self.bvp.bc_func) return out_ws['code_module']
def preprocess(self, problem_data): """Code generation and compilation before running solver.""" out_ws = PythonCodeGen({'problem_data': problem_data}) self.bvp = BVP(out_ws['deriv_func_fn'], out_ws['bc_func_fn'], out_ws['compute_control_fn']) if self.derivative_method == 'csd': self.stm_ode_func = ft.partial(self.__stmode_csd, odefn=self.bvp.deriv_func) self.bc_jac_func = ft.partial(self.__bcjac_csd, bc_func=self.bvp.bc_func) elif self.derivative_method == 'fd': self.stm_ode_func = ft.partial(self.__stmode_fd, odefn=self.bvp.deriv_func) self.bc_jac_func = ft.partial(self.__bcjac_fd, bc_func=self.bvp.bc_func) return self.bvp