-
Notifications
You must be signed in to change notification settings - Fork 308
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Path/Line Integrated Diagnostic (Abstract classes + interferometer implementation) #1123
base: main
Are you sure you want to change the base?
Conversation
…neIntegratedDiagnostic_Class Updating brach from upstream to include grids.py
Co-authored-by: Erik Everson <[email protected]>
Co-authored-by: Erik Everson <[email protected]>
Thanks for the help, documentation wizard @rocco8773 ! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
All right, this looks great to me and I could see it being merged - unless @rocco8773 wants to take another sweep, since this falls under diagnostics? (if no, just hit merge!)
Also, is it just me, or does this look like the Batman logo?
Great! I don't see the batman logo even if I squint really really hard...I think you might need some sleep @StanczakDominik ;) |
This PR introduces a new abstract class "PathIntegratedDiagnostic" to the diagnostics module. This class abstracts the source/grid/detector geometry already used in
SyntheticProtonRadiography
. I've refactored theSyntheticProtonRadiograph
module to be a subclass of the new class, but there are no API changes.This PR also introuduces a subclass of
PathIntegratedDiagnostic
,LineIntegratedDiagnostic
, which represents the case where the integration paths are straight lines. Given agrid
object, this class can line-integrate through any quantity on the grid along any arbitrary straight line of sight. The quantity integrated is given by a "_integrand" method, which can be in turn be calculated using any combination of the quantities on the grid. Different diagnostics with non-trivial response functions (like proton radiography) can be implemented by just replacing this_integrand
in subclasses.This module could has many applications (x-ray radiography, linear-regime charged particle radiography, etc.), but for a start I've implemented a very basic interferometry function. Given a 1 mm radius sphere of constant density 3e19 cm^-3, the following is the predicted interferogram with a 263 nm probe beam
The documentation still needs some work (I'll write one notebook explaining the interferometry subclass and another showing how to create and use custom subclasses). But I'm ready for comments on the basic structure of the
LineIntegratedDiagnostic
class!