Changeset 9eb3632 in sasmodels for sasmodels/kerneldll.py
- Timestamp:
- Jul 23, 2016 12:54:17 AM (8 years ago)
- Branches:
- master, core_shell_microgels, costrafo411, magnetic_model, release_v0.94, release_v0.95, ticket-1257-vesicle-product, ticket_1156, ticket_1265_superball, ticket_822_more_unit_tests
- Children:
- 7b7da6b
- Parents:
- 6a0d6aa
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sasmodels/kerneldll.py
rb966a96 r9eb3632 270 270 # int, int, int, int*, double*, double*, double*, double*, double 271 271 argtypes = [c_int32]*3 + [c_void_p]*4 + [fp] 272 self._Iq = self._dll[generate.kernel_name(self.info, "Iq")] 273 self._Iqxy = self._dll[generate.kernel_name(self.info, "Iqxy")] 274 self._Imagnetic = self._dll[generate.kernel_name(self.info, "Imagnetic")] 275 self._Iq.argtypes = argtypes 276 self._Iqxy.argtypes = argtypes 277 self._Imagnetic.argtypes = argtypes 272 names = [generate.kernel_name(self.info, variant) 273 for variant in ("Iq", "Iqxy", "Imagnetic")] 274 self._kernels = [self._dll[name] for name in names] 275 for k in self._kernels: 276 k.argtypes = argtypes 278 277 279 278 def __getstate__(self): … … 286 285 self._dll = None 287 286 288 def make_kernel(self, q_vectors , magnetic=False):287 def make_kernel(self, q_vectors): 289 288 # type: (List[np.ndarray]) -> DllKernel 290 289 q_input = PyInput(q_vectors, self.dtype) … … 292 291 if self._dll is None: 293 292 self._load_dll() 294 kernel = [self._Iqxy, self._Imagnetic] if q_input.is_2d else [self._Iq]*2 293 is_2d = len(q_vectors) == 2 294 kernel = self._kernels[1:3] if is_2d else [self._kernels[0]]*2 295 295 return DllKernel(kernel, self.info, q_input) 296 296 … … 346 346 # type: (CallDetails, np.ndarray, np.ndarray, float, bool) -> np.ndarray 347 347 348 #print("in kerneldll") 349 #print("values", values) 350 start, stop = 0, call_details.pd_prod 348 kernel = self.kernel[1 if magnetic else 0] 351 349 args = [ 352 350 self.q_input.nq, # nq 353 start, # pd_start354 stop, # pd_stop pd_stride[MAX_PD]351 None, # pd_start 352 None, # pd_stop pd_stride[MAX_PD] 355 353 call_details.buffer.ctypes.data, # problem 356 354 values.ctypes.data, #pars … … 358 356 self.result.ctypes.data, # results 359 357 self.real(cutoff), # cutoff 360 ] 361 #print("calling DLL") 362 self.kernel[1 if magnetic else 0](*args) # type: ignore 363 return self.result[:-1] 358 ] 359 #print("kerneldll values", values) 360 step = 100 361 for start in range(0, call_details.pd_prod, step): 362 stop = min(start+step, call_details.pd_prod) 363 args[1:3] = [start, stop] 364 #print("calling DLL") 365 kernel(*args) # type: ignore 366 367 #print("returned",self.q_input.q, self.result) 368 scale = values[0]/self.result[self.q_input.nq] 369 background = values[1] 370 #print("scale",scale,background) 371 return scale*self.result[:self.q_input.nq] + background 364 372 365 373 def release(self):
Note: See TracChangeset
for help on using the changeset viewer.