OPAL issueshttps://gitlab.psi.ch/groups/OPAL/-/issues2021-06-10T17:27:41+02:00https://gitlab.psi.ch/OPAL/src/-/issues/629Use separate classes for different distribution types2021-06-10T17:27:41+02:00krausUse separate classes for different distribution types![Distributions.svg](/uploads/bb44bdfd74954e672c75c1187c2de554/Distributions.svg)
- Use separate classes for each type for parsing and for the actual generation of a distribution.
- Move the `DISTRIBUTION` attribute from the `TRACKRUN` ...![Distributions.svg](/uploads/bb44bdfd74954e672c75c1187c2de554/Distributions.svg)
- Use separate classes for each type for parsing and for the actual generation of a distribution.
- Move the `DISTRIBUTION` attribute from the `TRACKRUN` command to `BEAM` command.krauskraushttps://gitlab.psi.ch/OPAL/src/-/issues/686Use a library that provides dimensional analysis and unit/quantity manipulation.2023-07-24T11:02:38+02:00krausUse a library that provides dimensional analysis and unit/quantity manipulation.Once we switch to c++20 then we should use [this library](https://github.com/mpusz/units) to make unit convertions safe. Ideally we also provide units for the parser such that the user can provide quantities in different units than meter...Once we switch to c++20 then we should use [this library](https://github.com/mpusz/units) to make unit convertions safe. Ideally we also provide units for the parser such that the user can provide quantities in different units than meter, seconds etc.
See also [here](https://mpusz.github.io/units/introduction.html) and [here](https://www.youtube.com/watch?v=7dExYGSOJzo).https://gitlab.psi.ch/OPAL/src/-/issues/547Replace all plain pointers with smart pointers2022-11-05T23:09:24+01:00krausReplace all plain pointers with smart pointersWe should replace all plain pointers with smart pointers, either from std or from boost.
#### Some random notes
- Each class `T` for which a shared pointer `std::shared_ptr<T>` is used should feature a `typedef std::shared_ptr<T> SP`. T...We should replace all plain pointers with smart pointers, either from std or from boost.
#### Some random notes
- Each class `T` for which a shared pointer `std::shared_ptr<T>` is used should feature a `typedef std::shared_ptr<T> SP`. This reduces the amount of code we have to write.
- Cyclic references have to be avoided using weak pointers.
#### ToDos
- [ ] `ElementBase *` -> `std::shared_ptr<ElementBase>`
- [ ] return type of Object::clone
- [ ] (almost) all occurrences of the keyword `new`
- [ ] replace (occurrences of) `Pointer` class
- [ ] replace pointers in Classic/Fields with smart pointers (#744)
- [ ] replace plain pointers in Classic/AbsBeamline with smart pointers (#746)https://gitlab.psi.ch/OPAL/src/-/issues/757Zero field should create a warning2023-04-12T10:58:36+02:00adelmannZero field should create a warning### Summary
In case a zero field is read in, a warning should be issued.
Such almost zero fields make sense however one field component must be non zero.
The attached example shows the zero field and the fixed zero field.
[zero-field-...### Summary
In case a zero field is read in, a warning should be issued.
Such almost zero fields make sense however one field component must be non zero.
The attached example shows the zero field and the fixed zero field.
[zero-field-example.zip](/uploads/334c29c62cd2efbaff2e81f244885022/zero-field-example.zip)2023.1adelmannadelmannhttps://gitlab.psi.ch/OPAL/documentation/manual/-/issues/88Document wakefield file format2022-10-10T11:20:21+02:00snuverink_jjochem.snuverink@psi.chDocument wakefield file formatIn OPAL/src!596 the file reading of the wakefield is changed. The manual does not specify what the file format should be, this should be added.In OPAL/src!596 the file reading of the wakefield is changed. The manual does not specify what the file format should be, this should be added.adelmannext-piot_padelmannhttps://gitlab.psi.ch/OPAL/src/-/issues/661BANDRF field map type needs both E and B field2021-06-23T11:42:16+02:00snuverink_jjochem.snuverink@psi.chBANDRF field map type needs both E and B fieldThe `BANDRF` / `T3DDynamicH5Block` field map type, as produced by the `ascii2h5block` script, only accepts fields that have both the E field and B field specified. This shouldn't be necessary, and either only an electric field or magneti...The `BANDRF` / `T3DDynamicH5Block` field map type, as produced by the `ascii2h5block` script, only accepts fields that have both the E field and B field specified. This shouldn't be necessary, and either only an electric field or magnetic field could be specified as well.https://gitlab.psi.ch/OPAL/src/-/issues/628Add signal handler for SIGABRT, SIGSEGV with stacktrace2021-07-09T08:41:11+02:00krausAdd signal handler for SIGABRT, SIGSEGV with stacktraceOne could add a handler to `main(...)` to print a stacktrace in case a run is aborted or a segmentation fault occurred. See e.g. [here](https://stackoverflow.com/questions/77005/how-to-automatically-generate-a-stacktrace-when-my-program-...One could add a handler to `main(...)` to print a stacktrace in case a run is aborted or a segmentation fault occurred. See e.g. [here](https://stackoverflow.com/questions/77005/how-to-automatically-generate-a-stacktrace-when-my-program-crashes). I don't know if this is portable. One could also have a look at how [Glog](https://github.com/google/glog) does it in `Google::InstallFailureSignalHandler()`.
### Stacktrace with line numbers
[link#1](https://stackoverflow.com/questions/4636456/how-to-get-a-stack-trace-for-c-using-gcc-with-line-number-information)
[link#2](https://stackoverflow.com/questions/3151779/best-way-to-invoke-gdb-from-inside-program-to-print-its-stacktrace/4611112#4611112)
### Glog
[link#1](https://github.com/google/glog/blob/master/src/signalhandler.cc)https://gitlab.psi.ch/OPAL/src/-/issues/623Unify styles of separator lines2021-06-10T17:29:34+02:00krausUnify styles of separator linesCurrently `-`, `=` and `*` are used to draw separator lines in the output and also the length of these lines vary. Do the different styles have different meanings or could they be unified both in the character and length?Currently `-`, `=` and `*` are used to draw separator lines in the output and also the length of these lines vary. Do the different styles have different meanings or could they be unified both in the character and length?https://gitlab.psi.ch/OPAL/src/-/issues/619review and cleanup IPPL FieldLayout classes2021-06-10T17:34:40+02:00gsellreview and cleanup IPPL FieldLayout classesOnly layout constructors using NDIndex are used in OPAL. The layout constructors using 1 to 6 arguments of type index are not used and can be removedOnly layout constructors using NDIndex are used in OPAL. The layout constructors using 1 to 6 arguments of type index are not used and can be removedgsellgsellhttps://gitlab.psi.ch/OPAL/src/-/issues/614Make sampler more robust2020-10-09T10:33:26+02:00bellotti_rMake sampler more robust**Current state**<br />
If one machine configuration crashes (e. g. segfault), the entire random sample dies.
**Why is it bad**<br />
I'm referring to a situation where the sampler reads from a TSV file instead of generating configurati...**Current state**<br />
If one machine configuration crashes (e. g. segfault), the entire random sample dies.
**Why is it bad**<br />
I'm referring to a situation where the sampler reads from a TSV file instead of generating configurations.<br />
- The more machines are run in parallel, the more configurations have to be restarted. This is a cumbersome manual process, and therefore error prone.
- All progress of simulations in progress is lost. (waste of resources)
- The unfinished machine settings have to be identified, copied to a new TSV file, and another RS has to be started, which is again a manual process.
Long story short, this bug imposes unnecessary work and introduces unnecessary error sources for OPAL users.https://gitlab.psi.ch/OPAL/src/-/issues/608Use library to parse the command line arguments2021-06-10T17:40:49+02:00krausUse library to parse the command line argumentsCurrently the command line arguments are parsed with manually written `if ... else if ... `. Additionally the arguments are parsed in different locations. Instead we should use a library such as Boost Program_options.Currently the command line arguments are parsed with manually written `if ... else if ... `. Additionally the arguments are parsed in different locations. Instead we should use a library such as Boost Program_options.https://gitlab.psi.ch/OPAL/src/-/issues/576Emit particles from position of Source element2021-08-11T14:35:52+02:00krausEmit particles from position of Source elementCurrently the particles are always emitted from `z = 0` even if the source element is shifted.Currently the particles are always emitted from `z = 0` even if the source element is shifted.https://gitlab.psi.ch/OPAL/src/-/issues/555Move Distribution attribute from the TrackRun command to the Beam command.2021-06-10T17:47:27+02:00krausMove Distribution attribute from the TrackRun command to the Beam command.It seems more logic to have them together since the distribution describes the beam of particles.It seems more logic to have them together since the distribution describes the beam of particles.https://gitlab.psi.ch/OPAL/pyOPALTools/-/issues/88Units with Pint2020-07-20T10:39:13+02:00frey_mUnits with PintAs briefly discussed in https://gitlab.psi.ch/OPAL/pyOPALTools/merge_requests/63#note_22571, we could use ~~[SymPy](https://www.sympy.org/en/index.html)~~ [Pint](https://pint.readthedocs.io/en/stable/) to do operations on units for plott...As briefly discussed in https://gitlab.psi.ch/OPAL/pyOPALTools/merge_requests/63#note_22571, we could use ~~[SymPy](https://www.sympy.org/en/index.html)~~ [Pint](https://pint.readthedocs.io/en/stable/) to do operations on units for plotting.https://gitlab.psi.ch/OPAL/runOPAL/-/issues/12Inconsistent handling of queue parameter2020-05-11T11:42:10+02:00bellotti_rInconsistent handling of queue parameterThe `Simulation.run()` function takes a parameter `queue`, but it is not used on Merlin6. Instead, an environment variable `SLURM_PARTITION` is used.
This should be more consistent.
I would generally advise against the use of environme...The `Simulation.run()` function takes a parameter `queue`, but it is not used on Merlin6. Instead, an environment variable `SLURM_PARTITION` is used.
This should be more consistent.
I would generally advise against the use of environment variables in `Simulation`. Currently, it is not obvious where a setting is coming from, which environment variables may/have to be set, and what their meaning is.
I suggest to read the env variables in the command line script, and pass their values to the constructor of the class or the run method.https://gitlab.psi.ch/OPAL/documentation/manual/-/issues/19Description for Pillbox cavity and Transverse Deflecting Structure2020-04-16T16:27:26+02:00krausDescription for Pillbox cavity and Transverse Deflecting StructureThe two new elements that are prepared in OPAL/src!190 need to be documented.The two new elements that are prepared in OPAL/src!190 need to be documented.krauskraushttps://gitlab.psi.ch/OPAL/src/-/issues/357Unify units in Elements and Input / Output2023-10-17T13:29:00+02:00frey_mUnify units in Elements and Input / OutputAccording to #45 and #227 the units of OPAL-T and OPAL-Cycl should be unified.
The following units should be used:
* meter
* second
* MeV or eV
* Tesla
* MV
For the full list see http://amas.web.psi.ch/opal/Documentation/master/OPAL...According to #45 and #227 the units of OPAL-T and OPAL-Cycl should be unified.
The following units should be used:
* meter
* second
* MeV or eV
* Tesla
* MV
For the full list see http://amas.web.psi.ch/opal/Documentation/master/OPAL_Manual.html#sec.conventions.units
Some elements are already fixed. This issue (as discussed with @gsell) should keep track of elements that are not yet updated. If an element is missing, please add it to the list.
Developers that fixed an element should mark it here:
- [x] Bend2D - no fixing needed
- [x] BeamStripping (!368, !479)
- [x] CCollimator (!368, !479)
- [x] ~~Corrector~~ deleted in !390
- [x] Cyclotron (!632)
- [x] ~~CyclotronValley~~ deleted in !218
- [ ] Degrader
- [ ] Drift
- [ ] FlexibleCollimator
- [ ] Monitor
- [ ] Multipole
- [ ] MultipoleTBase
- [ ] MultipoleTCurvedConstRadius
- [ ] MultipoleTCurvedVarRadius
- [x] MultipoleT (!643)
- [ ] MultipoleTStraight
- [x] Offset
- [x] ~~ParallelPlate~~ deleted in !390
- [x] PluginElement (!368)
- [x] Probe (!368, !479)
- [x] RBend3D - no fixing needed
- [x] RBend - no fixing needed
- [x] RFCavity (!619)
- [x] ~~RFQuadrupole~~ deleted in !390
- [x] Ring (!632, !643)
- [x] SBend3D - no fixing needed
- [x] SBend - no fixing needed
- [x] ScalingFFAMagnet (!643)
- [x] ~~SectorFieldMapComponent~~ deleted in !230
- [x] Septum (!368, !479)
- [ ] Solenoid
- [x] Source - no fixing needed
- [x] Stripper (!368, !479)
- [ ] TravelingWave
- [x] TrimCoil
- [x] VariableRFCavityFringeField (!643)
- [x] VariableRFCavity (!643)
- [x] VerticalFFAMagnet (!643)
Input / Output
- [ ] ID1 and ID2 in stat file and track file
- [ ] Field Maps (!506)snuverink_jjochem.snuverink@psi.chext-calvo_ppedro.calvo@ciemat.esext-rogers_ckraussnuverink_jjochem.snuverink@psi.chhttps://gitlab.psi.ch/OPAL/src/-/issues/354Add Analytic model of a transverse deflecting cavity (TCAV)2021-06-10T17:54:19+02:00adelmannAdd Analytic model of a transverse deflecting cavity (TCAV)adelmannkrausext-neveu_nadelmannhttps://gitlab.psi.ch/OPAL/pyOPALTools/-/issues/39Checking the usability of hvplot2019-07-07T16:47:52+02:00frey_mChecking the usability of hvplotWe might switch to [hvplot](https://hvplot.pyviz.org/) which is able to process different Python data frames.
CC: @adelmannWe might switch to [hvplot](https://hvplot.pyviz.org/) which is able to process different Python data frames.
CC: @adelmannhttps://gitlab.psi.ch/OPAL/pyOPALTools/-/issues/37Use Dask for datasets2019-07-04T12:34:52+02:00frey_mUse Dask for datasetsWe should move from native `numpy` and `pandas` to `dask`. With `dask` we can run in parallel on large datasets.
https://dask.org/We should move from native `numpy` and `pandas` to `dask`. With `dask` we can run in parallel on large datasets.
https://dask.org/