Hello,
I am going to study the interaction of laser pulses with carbon nanotubes. Only laser alone comes with a few parameters such as wavelength, spot size, intensity, polarization and pulse duration. Then, there are various ways to arrange the tubes with respect to the laser beam. It becomes obvious that PIConGPU must be run for a large number of cases with these parameters being swapped over some range of interest.
How can this be approached? I need a tool that systematically:
Is there anything like this available? If not I can design a simple GUI to deal with these tasks. My experience is in JavaFX for Java, but I know Qt creator can be used for C++. I wish anyway to have your opinion first.
Thanks.
Regards
@cbontoiu this kind of parameter scans is of course useful.
For a simplistic command-line way of performing it, one can pass such varying parameters via build options and then assign to (often constexpr) variables in your .param files. Please see how we do it in examples. Then to invoke a particular set of flags use -t option of pic-build.
You could also have a look at a pipelining tool such as snakemake (documentation). I have only recently been introduced to it but it seems to be a very powerful, yet simple tool that can make the process of running parameter scans and chaining post-processing to it much easier for you.
We have a GUI project for Jupyter as well which is in a work-in-progress state but have so far refrained from a real GUI since the code is under constant development.
Also iirc PoGit that @no1r mentioned in another reply has a simple parameter scanning. Please keep in mind that this is a third-party tool tho.
Things that might be useful to consider:
tbg tool allows to overwrite individual variables in a .cfg file from the command line with -o, see tbg --helppic-build -t: we often run parameter scans with cmakeFlags that set defines for .param files, see e.g.We also have an experimental, in-code python parametrization tool that can speak to above options by @codingS3b and @jkelling (sphinx docs on it missing?), see:
https://github.com/ComputationalRadiationPhysics/picongpu/blob/dev/share/picongpu/examples/LaserWakefield/lib/python/picongpu/params.py
https://github.com/ComputationalRadiationPhysics/picongpu/tree/dev/lib/python/picongpu/input
Most helpful comment
Also iirc PoGit that @no1r mentioned in another reply has a simple parameter scanning. Please keep in mind that this is a third-party tool tho.