MCPcopy Create free account
hub / github.com/danieljfarrell/pvtrace / simulate

Method simulate

pvtrace/device/lsc.py:338–377  ·  view source on GitHub ↗
(self, n, progress=None, emit_method="kT")

Source from the content-addressed store, hash-verified

336 return self._renderer
337
338 def simulate(self, n, progress=None, emit_method="kT"):
339 if self._scene is None:
340 self._make_scene()
341 scene = self._scene
342
343 # Simulate can be called multiple time to append rays to the store
344 if self._store is None:
345 store = {"entrance_rays": [], "exit_rays": []}
346
347 vis = self._renderer
348 count = 0
349 for ray in scene.emit(n):
350 history = photon_tracer.follow(scene, ray, emit_method=emit_method)
351 rays, events = zip(*history)
352 store["entrance_rays"].append((rays[1], events[1]))
353 if events[-1] in (Event.ABSORB, Event.KILL):
354 # final event is a lost store path information at final event
355 store["exit_rays"].append((rays[-1], events[-1]))
356 elif events[-1] == Event.EXIT:
357 # final event hits the world node. Store path information at
358 # penultimate location
359 store["exit_rays"].append((rays[-2], events[-2]))
360
361 # Update visualiser
362 if vis:
363 vis.add_history(history, **self._add_history_kwargs)
364
365 # Progress callback
366 if progress:
367 count += 1
368 progress(count)
369
370 self._store = store
371 print("Tracing finished.")
372 print("Preparing results.")
373 df = self._make_dataframe()
374 df = self.expand_coords(df, "direction")
375 df = self.expand_coords(df, "position")
376 df = self.label_facets(df, *self.size)
377 self._df = df
378
379 def _make_dataframe(self):
380

Callers 3

test1Function · 0.95
test2Function · 0.95
lscFunction · 0.95

Calls 6

_make_sceneMethod · 0.95
_make_dataframeMethod · 0.95
expand_coordsMethod · 0.95
label_facetsMethod · 0.95
add_historyMethod · 0.80
emitMethod · 0.45

Tested by 1

lscFunction · 0.76